forked from CastroFidel/winehelper
added deletion of the created prefix
This commit is contained in:
@@ -1877,10 +1877,20 @@ class WineHelperGUI(QMainWindow):
|
|||||||
self.management_container_groupbox.setVisible(False) # Скрыт, пока нет префиксов
|
self.management_container_groupbox.setVisible(False) # Скрыт, пока нет префиксов
|
||||||
container_layout = QVBoxLayout(self.management_container_groupbox)
|
container_layout = QVBoxLayout(self.management_container_groupbox)
|
||||||
|
|
||||||
|
selector_layout = QHBoxLayout()
|
||||||
self.created_prefix_selector = QComboBox()
|
self.created_prefix_selector = QComboBox()
|
||||||
self.created_prefix_selector.setPlaceholderText("Выберите префикс для управления")
|
self.created_prefix_selector.setPlaceholderText("Выберите префикс для управления")
|
||||||
self.created_prefix_selector.currentIndexChanged.connect(self.on_created_prefix_selected)
|
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 для управления выбранным префиксом ---
|
# --- GroupBox для управления выбранным префиксом ---
|
||||||
self.prefix_management_groupbox = QGroupBox("Управление") # Заголовок будет меняться
|
self.prefix_management_groupbox = QGroupBox("Управление") # Заголовок будет меняться
|
||||||
@@ -2004,12 +2014,50 @@ class WineHelperGUI(QMainWindow):
|
|||||||
if index == -1:
|
if index == -1:
|
||||||
self.current_managed_prefix_name = None
|
self.current_managed_prefix_name = None
|
||||||
self._setup_prefix_management_panel(None)
|
self._setup_prefix_management_panel(None)
|
||||||
|
self.delete_prefix_button.setEnabled(False)
|
||||||
else:
|
else:
|
||||||
prefix_name = self.created_prefix_selector.itemText(index)
|
prefix_name = self.created_prefix_selector.itemText(index)
|
||||||
self.current_managed_prefix_name = prefix_name
|
self.current_managed_prefix_name = prefix_name
|
||||||
self._setup_prefix_management_panel(prefix_name)
|
self._setup_prefix_management_panel(prefix_name)
|
||||||
|
self.delete_prefix_button.setEnabled(True)
|
||||||
self._save_state()
|
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):
|
def on_prefix_name_edited(self, text):
|
||||||
"""Сбрасывает состояние управления префиксом, когда пользователь вводит новое имя."""
|
"""Сбрасывает состояние управления префиксом, когда пользователь вводит новое имя."""
|
||||||
if text:
|
if text:
|
||||||
|
Reference in New Issue
Block a user