forked from CastroFidel/winehelper
fixed the display in the wine version selection bar
This commit is contained in:
@@ -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_()
|
||||
|
||||
|
Reference in New Issue
Block a user