fixed the display in the wine version selection bar

This commit is contained in:
Sergey Palcheh
2025-08-25 11:13:24 +06:00
parent 34713bb61a
commit 70f2976a70

View File

@@ -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_()