added deletion of the created prefix

This commit is contained in:
Sergey Palcheh
2025-08-25 15:43:34 +06:00
parent d499147bdc
commit 274a21941d

View File

@@ -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: