forked from CastroFidel/winehelper
		
	added the choice of a prefix to be created for management
This commit is contained in:
		| @@ -1268,8 +1268,14 @@ class WineHelperGUI(QMainWindow): | |||||||
|         self.icon_animators = {} |         self.icon_animators = {} | ||||||
|         self.previous_tab_index = 0 |         self.previous_tab_index = 0 | ||||||
|         self.selected_wine_version_value = None |         self.selected_wine_version_value = None | ||||||
|         self.last_created_prefix_name = None |         self.created_prefixes_info = {}  # Хранит информацию о префиксах, созданных на вкладке | ||||||
|         self.last_created_prefix_info = None |         self.current_managed_prefix_name = None  # Имя префикса, выбранного в выпадающем списке | ||||||
|  |         self.pending_prefix_info = None  # Временное хранилище информации о создаваемом префиксе | ||||||
|  |  | ||||||
|  |         # Добавим путь к файлу состояния | ||||||
|  |         self.config_dir = os.path.join(os.path.expanduser("~"), ".config", "winehelper") | ||||||
|  |         os.makedirs(self.config_dir, exist_ok=True) | ||||||
|  |         self.state_file = os.path.join(self.config_dir, "gui_state.json") | ||||||
|  |  | ||||||
|         # State for command dialog log processing (specifically for prefix creation) |         # State for command dialog log processing (specifically for prefix creation) | ||||||
|         self.command_output_buffer = "" |         self.command_output_buffer = "" | ||||||
| @@ -1306,6 +1312,9 @@ class WineHelperGUI(QMainWindow): | |||||||
|         self.create_prefix_tab() |         self.create_prefix_tab() | ||||||
|         self.create_help_tab() |         self.create_help_tab() | ||||||
|  |  | ||||||
|  |         # Загружаем состояние после создания всех виджетов | ||||||
|  |         self._load_state() | ||||||
|  |  | ||||||
|         # Инициализируем состояние, которое будет использоваться для логов |         # Инициализируем состояние, которое будет использоваться для логов | ||||||
|         self._reset_log_state() |         self._reset_log_state() | ||||||
|  |  | ||||||
| @@ -1819,18 +1828,19 @@ class WineHelperGUI(QMainWindow): | |||||||
|         self.prefix_name_edit.setPlaceholderText("Например: my_prefix") |         self.prefix_name_edit.setPlaceholderText("Например: my_prefix") | ||||||
|         form_layout.addRow("<b>Имя нового префикса:</b>", self.prefix_name_edit) |         form_layout.addRow("<b>Имя нового префикса:</b>", self.prefix_name_edit) | ||||||
|  |  | ||||||
|         self.arch_groupbox = QGroupBox("Архитектура") |         arch_widget = QWidget() | ||||||
|         arch_layout = QHBoxLayout() |         arch_layout = QHBoxLayout(arch_widget) | ||||||
|  |         arch_layout.setContentsMargins(0, 0, 0, 0) | ||||||
|         self.arch_win32_radio = QRadioButton("32-bit") |         self.arch_win32_radio = QRadioButton("32-bit") | ||||||
|         self.arch_win64_radio = QRadioButton("64-bit") |         self.arch_win64_radio = QRadioButton("64-bit") | ||||||
|         self.arch_win64_radio.setChecked(True) |         self.arch_win64_radio.setChecked(True) | ||||||
|         arch_layout.addWidget(self.arch_win32_radio) |         arch_layout.addWidget(self.arch_win32_radio) | ||||||
|         arch_layout.addWidget(self.arch_win64_radio) |         arch_layout.addWidget(self.arch_win64_radio) | ||||||
|         self.arch_groupbox.setLayout(arch_layout) |         form_layout.addRow("<b>Разрядность:</b>", arch_widget) | ||||||
|         form_layout.addRow("<b>Разрядность:</b>", self.arch_groupbox) |  | ||||||
|  |  | ||||||
|         self.type_groupbox = QGroupBox("Тип префикса") |         type_widget = QWidget() | ||||||
|         type_layout = QHBoxLayout() |         type_layout = QHBoxLayout(type_widget) | ||||||
|  |         type_layout.setContentsMargins(0, 0, 0, 0) | ||||||
|         self.type_clean_radio = QRadioButton("Чистый") |         self.type_clean_radio = QRadioButton("Чистый") | ||||||
|         self.type_clean_radio.setToolTip("Создает пустой префикс Wine без каких-либо дополнительных компонентов.") |         self.type_clean_radio.setToolTip("Создает пустой префикс Wine без каких-либо дополнительных компонентов.") | ||||||
|         self.type_recommended_radio = QRadioButton("С рекомендуемыми библиотеками") |         self.type_recommended_radio = QRadioButton("С рекомендуемыми библиотеками") | ||||||
| @@ -1839,8 +1849,7 @@ class WineHelperGUI(QMainWindow): | |||||||
|         self.type_clean_radio.setChecked(True) |         self.type_clean_radio.setChecked(True) | ||||||
|         type_layout.addWidget(self.type_clean_radio) |         type_layout.addWidget(self.type_clean_radio) | ||||||
|         type_layout.addWidget(self.type_recommended_radio) |         type_layout.addWidget(self.type_recommended_radio) | ||||||
|         self.type_groupbox.setLayout(type_layout) |         form_layout.addRow("<b>Наполнение:</b>", type_widget) | ||||||
|         form_layout.addRow("<b>Наполнение:</b>", self.type_groupbox) |  | ||||||
|  |  | ||||||
|         self.wine_version_edit = QLineEdit() |         self.wine_version_edit = QLineEdit() | ||||||
|         self.wine_version_edit.setReadOnly(True) |         self.wine_version_edit.setReadOnly(True) | ||||||
| @@ -1854,63 +1863,6 @@ class WineHelperGUI(QMainWindow): | |||||||
|         version_layout.addWidget(select_version_button) |         version_layout.addWidget(select_version_button) | ||||||
|         form_layout.addRow("<b>Версия Wine/Proton:</b>", version_layout) |         form_layout.addRow("<b>Версия Wine/Proton:</b>", version_layout) | ||||||
|  |  | ||||||
|         # --- GroupBox for managing the created prefix --- |  | ||||||
|         self.prefix_management_groupbox = QGroupBox("Управление префиксом") |  | ||||||
|         self.prefix_management_groupbox.setEnabled(False)  # Disabled by default |  | ||||||
|         management_layout = QGridLayout(self.prefix_management_groupbox) |  | ||||||
|         management_layout.setSpacing(5) |  | ||||||
|  |  | ||||||
|         # --- Left side: Buttons --- |  | ||||||
|         self.prefix_winetricks_button = QPushButton("Менеджер компонентов") |  | ||||||
|         self.prefix_winetricks_button.clicked.connect( |  | ||||||
|             lambda: self.open_winetricks_manager(prefix_name=self.last_created_prefix_name)) |  | ||||||
|         self.prefix_winetricks_button.setToolTip( |  | ||||||
|             "Установка компонентов, библиотек и шрифтов в префикс с помощью Winetricks.") |  | ||||||
|         management_layout.addWidget(self.prefix_winetricks_button, 0, 0) |  | ||||||
|  |  | ||||||
|         self.prefix_winecfg_button = QPushButton("Редактор настроек") |  | ||||||
|         self.prefix_winecfg_button.clicked.connect( |  | ||||||
|             lambda: self._run_wine_util('winecfg', prefix_name=self.last_created_prefix_name)) |  | ||||||
|         self.prefix_winecfg_button.setToolTip( |  | ||||||
|             "Запуск утилиты winecfg для настройки параметров Wine (версия Windows, диски, аудио и т.д.).") |  | ||||||
|         management_layout.addWidget(self.prefix_winecfg_button, 0, 1) |  | ||||||
|  |  | ||||||
|         self.prefix_regedit_button = QPushButton("Редактор реестра") |  | ||||||
|         self.prefix_regedit_button.clicked.connect( |  | ||||||
|             lambda: self._run_wine_util('regedit', prefix_name=self.last_created_prefix_name)) |  | ||||||
|         self.prefix_regedit_button.setToolTip( |  | ||||||
|             "Запуск редактора реестра Wine (regedit) для просмотра и изменения ключей реестра в префиксе.") |  | ||||||
|         management_layout.addWidget(self.prefix_regedit_button, 1, 0) |  | ||||||
|  |  | ||||||
|         self.prefix_uninstaller_button = QPushButton("Удаление программ") |  | ||||||
|         self.prefix_uninstaller_button.clicked.connect( |  | ||||||
|             lambda: self._run_wine_util('uninstaller', prefix_name=self.last_created_prefix_name)) |  | ||||||
|         self.prefix_uninstaller_button.setToolTip( |  | ||||||
|             "Запуск стандартного деинсталлятора Wine для удаления установленных в префикс Windows-программ.") |  | ||||||
|         management_layout.addWidget(self.prefix_uninstaller_button, 1, 1) |  | ||||||
|  |  | ||||||
|         self.prefix_cmd_button = QPushButton("Командная строка") |  | ||||||
|         self.prefix_cmd_button.clicked.connect(lambda: self._run_wine_util('cmd', prefix_name=self.last_created_prefix_name)) |  | ||||||
|         self.prefix_cmd_button.setToolTip("Запуск командной строки (cmd) в окружении выбранного префикса.") |  | ||||||
|         management_layout.addWidget(self.prefix_cmd_button, 2, 0) |  | ||||||
|  |  | ||||||
|         self.prefix_winefile_button = QPushButton("Файловый менеджер") |  | ||||||
|         self.prefix_winefile_button.clicked.connect( |  | ||||||
|             lambda: self._run_wine_util('winefile', prefix_name=self.last_created_prefix_name)) |  | ||||||
|         self.prefix_winefile_button.setToolTip("Запуск файлового менеджера Wine (winefile) для просмотра файлов внутри префикса.") |  | ||||||
|         management_layout.addWidget(self.prefix_winefile_button, 2, 1) |  | ||||||
|  |  | ||||||
|         # --- Right side: Info display --- |  | ||||||
|         self.prefix_info_display = QTextBrowser() |  | ||||||
|         self.prefix_info_display.setReadOnly(True) |  | ||||||
|         self.prefix_info_display.setFrameStyle(QFrame.StyledPanel) |  | ||||||
|         management_layout.addWidget(self.prefix_info_display, 0, 2, 3, 1) |  | ||||||
|  |  | ||||||
|         # Устанавливаем растяжение колонок, чтобы область кнопок и область информации были примерно равны |  | ||||||
|         management_layout.setColumnStretch(0, 1) |  | ||||||
|         management_layout.setColumnStretch(1, 1) |  | ||||||
|         management_layout.setColumnStretch(2, 2) |  | ||||||
|  |  | ||||||
|         self.create_prefix_button = QPushButton("Создать префикс") |         self.create_prefix_button = QPushButton("Создать префикс") | ||||||
|         self.create_prefix_button.setFont(QFont('Arial', 12, QFont.Bold)) |         self.create_prefix_button.setFont(QFont('Arial', 12, QFont.Bold)) | ||||||
|         self.create_prefix_button.setStyleSheet("background-color: #0078d7; color: white;") |         self.create_prefix_button.setStyleSheet("background-color: #0078d7; color: white;") | ||||||
| @@ -1919,7 +1871,75 @@ class WineHelperGUI(QMainWindow): | |||||||
|  |  | ||||||
|         layout.addLayout(form_layout) |         layout.addLayout(form_layout) | ||||||
|         layout.addWidget(self.create_prefix_button) |         layout.addWidget(self.create_prefix_button) | ||||||
|         layout.addWidget(self.prefix_management_groupbox) |  | ||||||
|  |         # --- Контейнер для выбора и управления созданными префиксами --- | ||||||
|  |         self.management_container_groupbox = QGroupBox("Управление созданными префиксами") | ||||||
|  |         self.management_container_groupbox.setVisible(False)  # Скрыт, пока нет префиксов | ||||||
|  |         container_layout = QVBoxLayout(self.management_container_groupbox) | ||||||
|  |  | ||||||
|  |         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) | ||||||
|  |  | ||||||
|  |         # --- GroupBox для управления выбранным префиксом --- | ||||||
|  |         self.prefix_management_groupbox = QGroupBox("Управление")  # Заголовок будет меняться | ||||||
|  |         self.prefix_management_groupbox.setEnabled(False) | ||||||
|  |         management_layout = QGridLayout(self.prefix_management_groupbox) | ||||||
|  |         management_layout.setSpacing(5) | ||||||
|  |  | ||||||
|  |         # --- Левая сторона: Кнопки --- | ||||||
|  |         self.prefix_winetricks_button = QPushButton("Менеджер компонентов") | ||||||
|  |         self.prefix_winetricks_button.clicked.connect( | ||||||
|  |             lambda: self.open_winetricks_manager(prefix_name=self.current_managed_prefix_name)) | ||||||
|  |         self.prefix_winetricks_button.setToolTip( | ||||||
|  |             "Установка компонентов, библиотек и шрифтов в префикс с помощью Winetricks.") | ||||||
|  |         management_layout.addWidget(self.prefix_winetricks_button, 0, 0) | ||||||
|  |  | ||||||
|  |         self.prefix_winecfg_button = QPushButton("Редактор настроек") | ||||||
|  |         self.prefix_winecfg_button.clicked.connect( | ||||||
|  |             lambda: self._run_wine_util('winecfg', prefix_name=self.current_managed_prefix_name)) | ||||||
|  |         self.prefix_winecfg_button.setToolTip( | ||||||
|  |             "Запуск утилиты winecfg для настройки параметров Wine (версия Windows, диски, аудио и т.д.).") | ||||||
|  |         management_layout.addWidget(self.prefix_winecfg_button, 0, 1) | ||||||
|  |  | ||||||
|  |         self.prefix_regedit_button = QPushButton("Редактор реестра") | ||||||
|  |         self.prefix_regedit_button.clicked.connect( | ||||||
|  |             lambda: self._run_wine_util('regedit', prefix_name=self.current_managed_prefix_name)) | ||||||
|  |         self.prefix_regedit_button.setToolTip( | ||||||
|  |             "Запуск редактора реестра Wine (regedit) для просмотра и изменения ключей реестра в префиксе.") | ||||||
|  |         management_layout.addWidget(self.prefix_regedit_button, 1, 0) | ||||||
|  |  | ||||||
|  |         self.prefix_uninstaller_button = QPushButton("Удаление программ") | ||||||
|  |         self.prefix_uninstaller_button.clicked.connect( | ||||||
|  |             lambda: self._run_wine_util('uninstaller', prefix_name=self.current_managed_prefix_name)) | ||||||
|  |         self.prefix_uninstaller_button.setToolTip( | ||||||
|  |             "Запуск стандартного деинсталлятора Wine для удаления установленных в префикс Windows-программ.") | ||||||
|  |         management_layout.addWidget(self.prefix_uninstaller_button, 1, 1) | ||||||
|  |  | ||||||
|  |         self.prefix_cmd_button = QPushButton("Командная строка") | ||||||
|  |         self.prefix_cmd_button.clicked.connect(lambda: self._run_wine_util('cmd', prefix_name=self.current_managed_prefix_name)) | ||||||
|  |         self.prefix_cmd_button.setToolTip("Запуск командной строки (cmd) в окружении выбранного префикса.") | ||||||
|  |         management_layout.addWidget(self.prefix_cmd_button, 2, 0) | ||||||
|  |  | ||||||
|  |         self.prefix_winefile_button = QPushButton("Файловый менеджер") | ||||||
|  |         self.prefix_winefile_button.clicked.connect( | ||||||
|  |             lambda: self._run_wine_util('winefile', prefix_name=self.current_managed_prefix_name)) | ||||||
|  |         self.prefix_winefile_button.setToolTip("Запуск файлового менеджера Wine (winefile) для просмотра файлов внутри префикса.") | ||||||
|  |         management_layout.addWidget(self.prefix_winefile_button, 2, 1) | ||||||
|  |  | ||||||
|  |         # --- Правая сторона: Информационный блок --- | ||||||
|  |         self.prefix_info_display = QTextBrowser() | ||||||
|  |         self.prefix_info_display.setReadOnly(True) | ||||||
|  |         self.prefix_info_display.setFrameStyle(QFrame.StyledPanel) | ||||||
|  |         management_layout.addWidget(self.prefix_info_display, 0, 2, 3, 1) | ||||||
|  |  | ||||||
|  |         management_layout.setColumnStretch(0, 1) | ||||||
|  |         management_layout.setColumnStretch(1, 1) | ||||||
|  |         management_layout.setColumnStretch(2, 2) | ||||||
|  |  | ||||||
|  |         container_layout.addWidget(self.prefix_management_groupbox) | ||||||
|  |         layout.addWidget(self.management_container_groupbox) | ||||||
|         layout.addStretch() |         layout.addStretch() | ||||||
|         self.add_tab(self.prefix_tab, "Создать префикс") |         self.add_tab(self.prefix_tab, "Создать префикс") | ||||||
|  |  | ||||||
| @@ -1928,22 +1948,92 @@ class WineHelperGUI(QMainWindow): | |||||||
|         self.prefix_name_edit.textChanged.connect(self.on_prefix_name_edited) |         self.prefix_name_edit.textChanged.connect(self.on_prefix_name_edited) | ||||||
|         self.wine_version_edit.textChanged.connect(self.update_create_prefix_button_state) |         self.wine_version_edit.textChanged.connect(self.update_create_prefix_button_state) | ||||||
|  |  | ||||||
|  |     def _load_state(self): | ||||||
|  |         """Загружает последнее состояние GUI из файла.""" | ||||||
|  |         if not os.path.exists(self.state_file): | ||||||
|  |             return | ||||||
|  |         try: | ||||||
|  |             with open(self.state_file, 'r', encoding='utf-8') as f: | ||||||
|  |                 state = json.load(f) | ||||||
|  |  | ||||||
|  |             loaded_prefixes = state.get('created_prefixes_info', {}) | ||||||
|  |             if not loaded_prefixes: | ||||||
|  |                 return | ||||||
|  |  | ||||||
|  |             # Блокируем сигналы, чтобы избежать преждевременного срабатывания | ||||||
|  |             self.created_prefix_selector.blockSignals(True) | ||||||
|  |             self.created_prefix_selector.clear() | ||||||
|  |             self.created_prefixes_info.clear() | ||||||
|  |  | ||||||
|  |             for prefix_name, prefix_info in loaded_prefixes.items(): | ||||||
|  |                 prefix_path = os.path.join(Var.USER_WORK_PATH, "prefixes", prefix_name) | ||||||
|  |                 if os.path.isdir(prefix_path): | ||||||
|  |                     self.created_prefixes_info[prefix_name] = prefix_info | ||||||
|  |                     self.created_prefix_selector.addItem(prefix_name) | ||||||
|  |  | ||||||
|  |             self.created_prefix_selector.blockSignals(False) | ||||||
|  |  | ||||||
|  |             if self.created_prefix_selector.count() > 0: | ||||||
|  |                 self.management_container_groupbox.setVisible(True) | ||||||
|  |                 last_managed = state.get('current_managed_prefix_name') | ||||||
|  |                 index = self.created_prefix_selector.findText(last_managed) | ||||||
|  |                 if index != -1: | ||||||
|  |                     self.created_prefix_selector.setCurrentIndex(index) | ||||||
|  |                 else: | ||||||
|  |                     self.created_prefix_selector.setCurrentIndex(0) # Выбираем первый, если предыдущий не найден | ||||||
|  |             else: | ||||||
|  |                 self.management_container_groupbox.setVisible(False) | ||||||
|  |  | ||||||
|  |         except (IOError, json.JSONDecodeError, TypeError) as e: | ||||||
|  |             print(f"Предупреждение: не удалось загрузить состояние GUI: {e}") | ||||||
|  |  | ||||||
|  |     def _save_state(self): | ||||||
|  |         """Сохраняет текущее состояние GUI в файл.""" | ||||||
|  |         state = { | ||||||
|  |             'created_prefixes_info': self.created_prefixes_info, | ||||||
|  |             'current_managed_prefix_name': self.current_managed_prefix_name | ||||||
|  |         } | ||||||
|  |         try: | ||||||
|  |             with open(self.state_file, 'w', encoding='utf-8') as f: | ||||||
|  |                 json.dump(state, f, indent=2, ensure_ascii=False) | ||||||
|  |         except IOError as e: | ||||||
|  |             print(f"Предупреждение: не удалось сохранить состояние GUI: {e}") | ||||||
|  |  | ||||||
|  |     def on_created_prefix_selected(self, index): | ||||||
|  |         """Обрабатывает выбор префикса из выпадающего списка.""" | ||||||
|  |         if index == -1: | ||||||
|  |             self.current_managed_prefix_name = None | ||||||
|  |             self._setup_prefix_management_panel(None) | ||||||
|  |         else: | ||||||
|  |             prefix_name = self.created_prefix_selector.itemText(index) | ||||||
|  |             self.current_managed_prefix_name = prefix_name | ||||||
|  |             self._setup_prefix_management_panel(prefix_name) | ||||||
|  |         self._save_state() | ||||||
|  |  | ||||||
|     def on_prefix_name_edited(self, text): |     def on_prefix_name_edited(self, text): | ||||||
|         """Сбрасывает состояние управления префиксом, когда пользователь вводит новое имя.""" |         """Сбрасывает состояние управления префиксом, когда пользователь вводит новое имя.""" | ||||||
|         if text and self.prefix_management_groupbox.isEnabled(): |         if text: | ||||||
|  |             if self.created_prefix_selector.currentIndex() != -1: | ||||||
|  |                 self.created_prefix_selector.setCurrentIndex(-1) | ||||||
|  |  | ||||||
|  |     def _setup_prefix_management_panel(self, prefix_name): | ||||||
|  |         """Настраивает панель управления префиксом на основе текущего состояния.""" | ||||||
|  |         if prefix_name and prefix_name in self.created_prefixes_info: | ||||||
|  |             self.prefix_management_groupbox.setTitle(f"Управление «{prefix_name}»") | ||||||
|  |             self.prefix_management_groupbox.setEnabled(True) | ||||||
|  |             self.update_prefix_info_display(prefix_name) | ||||||
|  |         else: | ||||||
|  |             self.prefix_management_groupbox.setTitle("Управление") | ||||||
|             self.prefix_management_groupbox.setEnabled(False) |             self.prefix_management_groupbox.setEnabled(False) | ||||||
|             self.prefix_management_groupbox.setTitle("Управление префиксом") |  | ||||||
|             self.last_created_prefix_name = None |  | ||||||
|             self.last_created_prefix_info = None |  | ||||||
|             self.prefix_info_display.clear() |             self.prefix_info_display.clear() | ||||||
|  |  | ||||||
|     def update_prefix_info_display(self): |     def update_prefix_info_display(self, prefix_name): | ||||||
|         """Обновляет информационный блок для созданного префикса.""" |         """Обновляет информационный блок для созданного префикса.""" | ||||||
|         if not self.last_created_prefix_info: |         info = self.created_prefixes_info.get(prefix_name) | ||||||
|  |         if not info: | ||||||
|             self.prefix_info_display.clear() |             self.prefix_info_display.clear() | ||||||
|             return |             return | ||||||
|  |  | ||||||
|         info = self.last_created_prefix_info |  | ||||||
|         html_content = f""" |         html_content = f""" | ||||||
|             <p style="line-height: 1.3; font-size: 9pt;"> |             <p style="line-height: 1.3; font-size: 9pt;"> | ||||||
|             <b>Имя:</b> {html.escape(info['name'])}<br> |             <b>Имя:</b> {html.escape(info['name'])}<br> | ||||||
| @@ -2083,12 +2173,9 @@ class WineHelperGUI(QMainWindow): | |||||||
|         if not self._show_license_agreement_dialog(): |         if not self._show_license_agreement_dialog(): | ||||||
|             return |             return | ||||||
|  |  | ||||||
|         # Сбрасываем состояние управления предыдущим созданным префиксом |         # Сбрасываем выбор в выпадающем списке, чтобы панель управления скрылась на время создания | ||||||
|         self.last_created_prefix_name = None |         if self.created_prefix_selector.count() > 0: | ||||||
|         self.last_created_prefix_info = None |             self.created_prefix_selector.setCurrentIndex(-1) | ||||||
|         self.prefix_info_display.clear() |  | ||||||
|         self.prefix_management_groupbox.setEnabled(False) |  | ||||||
|         self.prefix_management_groupbox.setTitle("Управление префиксом") |  | ||||||
|  |  | ||||||
|         prefix_name = self.prefix_name_edit.text().strip() |         prefix_name = self.prefix_name_edit.text().strip() | ||||||
|  |  | ||||||
| @@ -2111,7 +2198,7 @@ class WineHelperGUI(QMainWindow): | |||||||
|         wine_use_display = self.wine_version_edit.text() |         wine_use_display = self.wine_version_edit.text() | ||||||
|  |  | ||||||
|         # Сохраняем информацию для отображения после создания |         # Сохраняем информацию для отображения после создания | ||||||
|         self.last_created_prefix_info = { |         self.pending_prefix_info = { | ||||||
|             'name': prefix_name, |             'name': prefix_name, | ||||||
|             'path': prefix_path, |             'path': prefix_path, | ||||||
|             'arch': "32-bit" if wine_arch == "win32" else "64-bit", |             'arch': "32-bit" if wine_arch == "win32" else "64-bit", | ||||||
| @@ -2181,14 +2268,25 @@ class WineHelperGUI(QMainWindow): | |||||||
|  |  | ||||||
|         self._handle_command_finished(exit_code, exit_status) |         self._handle_command_finished(exit_code, exit_status) | ||||||
|         if exit_code == 0: |         if exit_code == 0: | ||||||
|             self.last_created_prefix_name = prefix_name |             # Добавляем новый префикс в список и выбираем его | ||||||
|             self.prefix_management_groupbox.setTitle(f"Управление префиксом «{prefix_name}»") |             if self.pending_prefix_info: | ||||||
|             self.prefix_management_groupbox.setEnabled(True) |                 self.created_prefixes_info[prefix_name] = self.pending_prefix_info | ||||||
|             self.update_prefix_info_display() |                 self.pending_prefix_info = None | ||||||
|  |  | ||||||
|  |             if self.created_prefix_selector.findText(prefix_name) == -1: | ||||||
|  |                 self.created_prefix_selector.addItem(prefix_name) | ||||||
|  |  | ||||||
|  |             self.created_prefix_selector.setCurrentText(prefix_name) | ||||||
|  |  | ||||||
|  |             if not self.management_container_groupbox.isVisible(): | ||||||
|  |                 self.management_container_groupbox.setVisible(True) | ||||||
|  |  | ||||||
|  |             self._save_state() | ||||||
|             self.prefix_name_edit.clear() |             self.prefix_name_edit.clear() | ||||||
|             self.wine_version_edit.clear() |             self.wine_version_edit.clear() | ||||||
|             QMessageBox.information(self, "Успех", |             QMessageBox.information(self, "Успех", | ||||||
|                                     f"Префикс '{prefix_name}' успешно создан.\nТеперь вы можете управлять им с помощью кнопок ниже.") |                                     f"Префикс '{prefix_name}' успешно создан.\n" | ||||||
|  |                                     "Теперь вы можете управлять им, выбрав его из выпадающего списка.") | ||||||
|  |  | ||||||
|     def update_installed_apps(self): |     def update_installed_apps(self): | ||||||
|         """Обновляет список установленных приложений в виде кнопок""" |         """Обновляет список установленных приложений в виде кнопок""" | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user