diff --git a/winehelper_gui.py b/winehelper_gui.py index 57362d8..d5e1c92 100644 --- a/winehelper_gui.py +++ b/winehelper_gui.py @@ -2179,6 +2179,13 @@ class WineHelperGUI(QMainWindow): self.created_prefix_selector.currentIndexChanged.connect(self.on_created_prefix_selected) selector_layout.addWidget(self.created_prefix_selector, 1) + self.open_prefix_folder_button = QPushButton() + self.open_prefix_folder_button.setIcon(QIcon.fromTheme("folder-open")) + self.open_prefix_folder_button.setToolTip("Открыть папку префикса в файловом менеджере") + self.open_prefix_folder_button.setEnabled(False) + self.open_prefix_folder_button.clicked.connect(self.open_selected_prefix_folder) + selector_layout.addWidget(self.open_prefix_folder_button) + self.create_base_pfx_button = QPushButton() self.create_base_pfx_button.setIcon(QIcon.fromTheme("document-export")) self.create_base_pfx_button.setToolTip("Создать шаблон из выбранного префикса (для опытных пользователей)") @@ -2400,6 +2407,7 @@ class WineHelperGUI(QMainWindow): self.delete_prefix_button.setEnabled(False) self.remove_all_button.setEnabled(False) self.create_base_pfx_button.setEnabled(False) + self.open_prefix_folder_button.setEnabled(False) else: # Прокручиваем к выбранному элементу, чтобы он был виден в списке self.created_prefix_selector.view().scrollTo( @@ -2411,6 +2419,7 @@ class WineHelperGUI(QMainWindow): self.delete_prefix_button.setEnabled(True) self.remove_all_button.setEnabled(True) self.create_base_pfx_button.setEnabled(True) + self.open_prefix_folder_button.setEnabled(True) def delete_selected_prefix(self): """Удаляет префикс, выбранный в выпадающем списке на вкладке 'Менеджер префиксов'.""" @@ -2519,6 +2528,21 @@ class WineHelperGUI(QMainWindow): self._run_simple_command("create-base-pfx", [prefix_name]) self.command_dialog.exec_() + def open_selected_prefix_folder(self): + """Открывает папку выбранного префикса в системном файловом менеджере.""" + prefix_name = self.current_managed_prefix_name + if not prefix_name: + return + + prefix_path = os.path.join(Var.USER_WORK_PATH, "prefixes", prefix_name) + if os.path.isdir(prefix_path): + try: + subprocess.Popen(['xdg-open', prefix_path]) + except Exception as e: + QMessageBox.warning(self, "Ошибка", f"Не удалось открыть директорию:\n{prefix_path}\n\nОшибка: {e}") + else: + QMessageBox.warning(self, "Ошибка", f"Директория префикса не найдена:\n{prefix_path}") + def _setup_prefix_management_panel(self, prefix_name): """Настраивает панель управления префиксом на основе текущего состояния.""" is_prefix_selected = bool(prefix_name)