From 274a21941dcd3172e5a6d75f2a8e45ebe5943ffb Mon Sep 17 00:00:00 2001 From: Sergey Palcheh Date: Mon, 25 Aug 2025 15:43:34 +0600 Subject: [PATCH] added deletion of the created prefix --- winehelper_gui.py | 50 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/winehelper_gui.py b/winehelper_gui.py index 08f4c47..ecc1c73 100644 --- a/winehelper_gui.py +++ b/winehelper_gui.py @@ -1877,10 +1877,20 @@ class WineHelperGUI(QMainWindow): self.management_container_groupbox.setVisible(False) # Скрыт, пока нет префиксов container_layout = QVBoxLayout(self.management_container_groupbox) + selector_layout = QHBoxLayout() self.created_prefix_selector = QComboBox() self.created_prefix_selector.setPlaceholderText("Выберите префикс для управления") self.created_prefix_selector.currentIndexChanged.connect(self.on_created_prefix_selected) - container_layout.addWidget(self.created_prefix_selector) + selector_layout.addWidget(self.created_prefix_selector, 1) + + self.delete_prefix_button = QPushButton() + self.delete_prefix_button.setIcon(QIcon.fromTheme("user-trash")) + self.delete_prefix_button.setToolTip("Удалить выбранный префикс") + self.delete_prefix_button.setEnabled(False) + self.delete_prefix_button.clicked.connect(self.delete_selected_prefix) + selector_layout.addWidget(self.delete_prefix_button) + + container_layout.addLayout(selector_layout) # --- GroupBox для управления выбранным префиксом --- self.prefix_management_groupbox = QGroupBox("Управление") # Заголовок будет меняться @@ -2004,12 +2014,50 @@ class WineHelperGUI(QMainWindow): if index == -1: self.current_managed_prefix_name = None self._setup_prefix_management_panel(None) + self.delete_prefix_button.setEnabled(False) else: prefix_name = self.created_prefix_selector.itemText(index) self.current_managed_prefix_name = prefix_name self._setup_prefix_management_panel(prefix_name) + self.delete_prefix_button.setEnabled(True) self._save_state() + def delete_selected_prefix(self): + """Удаляет префикс, выбранный в выпадающем списке на вкладке 'Создать префикс'.""" + prefix_name = self.current_managed_prefix_name + if not prefix_name: + return + + msg_box = QMessageBox(self) + msg_box.setIcon(QMessageBox.Question) + msg_box.setWindowTitle('Подтверждение удаления') + msg_box.setText(f'Вы уверены, что хотите удалить префикс "{prefix_name}"?\n\n' + 'Это действие необратимо и удалит все данные внутри префикса.') + + yes_button = msg_box.addButton("Да", QMessageBox.YesRole) + no_button = msg_box.addButton("Нет", QMessageBox.NoRole) + msg_box.setDefaultButton(no_button) + + msg_box.exec_() + + # Если пользователь нажал не "Да", выходим + if msg_box.clickedButton() != yes_button: + return + + prefix_path = os.path.join(Var.USER_WORK_PATH, "prefixes", prefix_name) + + try: + if os.path.isdir(prefix_path): + shutil.rmtree(prefix_path) + if prefix_name in self.created_prefixes_info: + del self.created_prefixes_info[prefix_name] + index_to_remove = self.created_prefix_selector.findText(prefix_name) + if index_to_remove != -1: + self.created_prefix_selector.removeItem(index_to_remove) + QMessageBox.information(self, "Успех", f"Префикс '{prefix_name}' был успешно удален.") + except Exception as e: + QMessageBox.critical(self, "Ошибка удаления", f"Не удалось удалить префикс '{prefix_name}':\n{e}") + def on_prefix_name_edited(self, text): """Сбрасывает состояние управления префиксом, когда пользователь вводит новое имя.""" if text: