diff --git a/winehelper_gui.py b/winehelper_gui.py index 1169e88..2385c9a 100644 --- a/winehelper_gui.py +++ b/winehelper_gui.py @@ -1021,6 +1021,8 @@ class WineVersionSelectionDialog(QDialog): self.user_work_path = user_work_path self.selected_version = None self.wine_versions_data = {} + self.system_wine_display_name = "Системная версия" + self.selected_display_text = None self.setWindowTitle(f"Выбор версии Wine/Proton для {architecture} префикса") self.setMinimumSize(900, 500) @@ -1110,19 +1112,19 @@ class WineVersionSelectionDialog(QDialog): re_64bit = re.compile(r'amd64|x86_64|wow64') # --- System Tab --- - system_wine_display_name = "system" if shutil.which('wine'): + self.system_wine_display_name = "Системная версия" try: # Пытаемся получить версию системного wine result = subprocess.run(['wine', '--version'], capture_output=True, text=True, check=True, encoding='utf-8') version_line = result.stdout.strip() # Вывод обычно "wine-X.Y.Z" - system_wine_display_name = f"system ({version_line})" + self.system_wine_display_name = version_line except (FileNotFoundError, subprocess.CalledProcessError) as e: print(f"Не удалось получить версию системного wine: {e}") - # Если wine возвращает ошибку, просто используем "system" + # Если wine возвращает ошибку, используем имя по умолчанию "Системная версия" - self._create_version_tab("Системный", [(system_wine_display_name, "system")]) + self._create_version_tab("Системный", [(self.system_wine_display_name, "system")]) # --- Other versions from JSON --- group_keys = sorted(self.wine_versions_data.keys()) @@ -1208,6 +1210,10 @@ class WineVersionSelectionDialog(QDialog): def on_version_selected(self, version_name): """Обрабатывает выбор версии.""" self.selected_version = version_name + if version_name == 'system': + self.selected_display_text = self.system_wine_display_name + else: + self.selected_display_text = version_name self.accept() class WineHelperGUI(QMainWindow): @@ -1261,6 +1267,7 @@ class WineHelperGUI(QMainWindow): self.current_selected_app = None self.icon_animators = {} self.previous_tab_index = 0 + self.selected_wine_version_value = None # State for command dialog log processing (specifically for prefix creation) self.command_output_buffer = "" @@ -1773,7 +1780,8 @@ class WineHelperGUI(QMainWindow): architecture = "win32" if self.arch_win32_radio.isChecked() else "win64" dialog = WineVersionSelectionDialog(architecture, self.winehelper_path, Var.USER_WORK_PATH, self) if dialog.exec_() == QDialog.Accepted and dialog.selected_version: - self.wine_version_edit.setText(dialog.selected_version) + self.wine_version_edit.setText(dialog.selected_display_text) + self.selected_wine_version_value = dialog.selected_version def clear_wine_version_selection(self): """ @@ -1781,6 +1789,7 @@ class WineHelperGUI(QMainWindow): чтобы заставить пользователя выбрать заново. """ self.wine_version_edit.clear() + self.selected_wine_version_value = None def create_prefix_tab(self): """Создает вкладку для создания нового префикса""" @@ -1991,7 +2000,8 @@ class WineHelperGUI(QMainWindow): wine_arch = "win32" if self.arch_win32_radio.isChecked() else "win64" base_pfx = "none" if self.type_clean_radio.isChecked() else "" - wine_use = self.wine_version_edit.text() + wine_use = self.selected_wine_version_value + wine_use_display = self.wine_version_edit.text() self.command_dialog = QDialog(self) self.command_dialog.setWindowTitle(f"Создание префикса: {prefix_name}") @@ -2031,8 +2041,9 @@ class WineHelperGUI(QMainWindow): self.command_process.setProcessEnvironment(env) args = ["init-prefix"] - self.command_log_output.append(f"=== Параметры создания префикса ===\nИмя: {prefix_name}\nПуть: {prefix_path}\nАрхитектура: {wine_arch}\nВерсия Wine: {wine_use}\nТип: {'Чистый' if base_pfx else 'С рекомендуемыми библиотеками'}\n\n" + "="*40 + "\n") - self.command_log_output.append(f"Выполнение: {shlex.quote(self.winehelper_path)} {' '.join(shlex.quote(a) for a in args)}") + self.command_log_output.append(f"=== Параметры создания префикса ===\nИмя: {prefix_name}\nПуть: {prefix_path}\nАрхитектура: {wine_arch}\nВерсия Wine: {wine_use_display}\nТип: {'Чистый' if base_pfx else 'С рекомендуемыми библиотеками'}\n\n" + "="*40 + "\n") + self.command_log_output.textCursor().insertText(f"Выполнение: {shlex.quote(self.winehelper_path)} {' '.join(shlex.quote(a) for a in args)}\n") + QApplication.processEvents() self.command_process.start(self.winehelper_path, args) self.command_dialog.exec_()