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.user_work_path = user_work_path
|
||||||
self.selected_version = None
|
self.selected_version = None
|
||||||
self.wine_versions_data = {}
|
self.wine_versions_data = {}
|
||||||
|
self.system_wine_display_name = "Системная версия"
|
||||||
|
self.selected_display_text = None
|
||||||
|
|
||||||
self.setWindowTitle(f"Выбор версии Wine/Proton для {architecture} префикса")
|
self.setWindowTitle(f"Выбор версии Wine/Proton для {architecture} префикса")
|
||||||
self.setMinimumSize(900, 500)
|
self.setMinimumSize(900, 500)
|
||||||
@@ -1110,19 +1112,19 @@ class WineVersionSelectionDialog(QDialog):
|
|||||||
re_64bit = re.compile(r'amd64|x86_64|wow64')
|
re_64bit = re.compile(r'amd64|x86_64|wow64')
|
||||||
|
|
||||||
# --- System Tab ---
|
# --- System Tab ---
|
||||||
system_wine_display_name = "system"
|
|
||||||
if shutil.which('wine'):
|
if shutil.which('wine'):
|
||||||
|
self.system_wine_display_name = "Системная версия"
|
||||||
try:
|
try:
|
||||||
# Пытаемся получить версию системного wine
|
# Пытаемся получить версию системного wine
|
||||||
result = subprocess.run(['wine', '--version'], capture_output=True, text=True, check=True, encoding='utf-8')
|
result = subprocess.run(['wine', '--version'], capture_output=True, text=True, check=True, encoding='utf-8')
|
||||||
version_line = result.stdout.strip()
|
version_line = result.stdout.strip()
|
||||||
# Вывод обычно "wine-X.Y.Z"
|
# Вывод обычно "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:
|
except (FileNotFoundError, subprocess.CalledProcessError) as e:
|
||||||
print(f"Не удалось получить версию системного wine: {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 ---
|
# --- Other versions from JSON ---
|
||||||
group_keys = sorted(self.wine_versions_data.keys())
|
group_keys = sorted(self.wine_versions_data.keys())
|
||||||
@@ -1208,6 +1210,10 @@ class WineVersionSelectionDialog(QDialog):
|
|||||||
def on_version_selected(self, version_name):
|
def on_version_selected(self, version_name):
|
||||||
"""Обрабатывает выбор версии."""
|
"""Обрабатывает выбор версии."""
|
||||||
self.selected_version = 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()
|
self.accept()
|
||||||
|
|
||||||
class WineHelperGUI(QMainWindow):
|
class WineHelperGUI(QMainWindow):
|
||||||
@@ -1261,6 +1267,7 @@ class WineHelperGUI(QMainWindow):
|
|||||||
self.current_selected_app = None
|
self.current_selected_app = None
|
||||||
self.icon_animators = {}
|
self.icon_animators = {}
|
||||||
self.previous_tab_index = 0
|
self.previous_tab_index = 0
|
||||||
|
self.selected_wine_version_value = None
|
||||||
|
|
||||||
# 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 = ""
|
||||||
@@ -1773,7 +1780,8 @@ class WineHelperGUI(QMainWindow):
|
|||||||
architecture = "win32" if self.arch_win32_radio.isChecked() else "win64"
|
architecture = "win32" if self.arch_win32_radio.isChecked() else "win64"
|
||||||
dialog = WineVersionSelectionDialog(architecture, self.winehelper_path, Var.USER_WORK_PATH, self)
|
dialog = WineVersionSelectionDialog(architecture, self.winehelper_path, Var.USER_WORK_PATH, self)
|
||||||
if dialog.exec_() == QDialog.Accepted and dialog.selected_version:
|
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):
|
def clear_wine_version_selection(self):
|
||||||
"""
|
"""
|
||||||
@@ -1781,6 +1789,7 @@ class WineHelperGUI(QMainWindow):
|
|||||||
чтобы заставить пользователя выбрать заново.
|
чтобы заставить пользователя выбрать заново.
|
||||||
"""
|
"""
|
||||||
self.wine_version_edit.clear()
|
self.wine_version_edit.clear()
|
||||||
|
self.selected_wine_version_value = None
|
||||||
|
|
||||||
def create_prefix_tab(self):
|
def create_prefix_tab(self):
|
||||||
"""Создает вкладку для создания нового префикса"""
|
"""Создает вкладку для создания нового префикса"""
|
||||||
@@ -1991,7 +2000,8 @@ class WineHelperGUI(QMainWindow):
|
|||||||
|
|
||||||
wine_arch = "win32" if self.arch_win32_radio.isChecked() else "win64"
|
wine_arch = "win32" if self.arch_win32_radio.isChecked() else "win64"
|
||||||
base_pfx = "none" if self.type_clean_radio.isChecked() else ""
|
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 = QDialog(self)
|
||||||
self.command_dialog.setWindowTitle(f"Создание префикса: {prefix_name}")
|
self.command_dialog.setWindowTitle(f"Создание префикса: {prefix_name}")
|
||||||
@@ -2031,8 +2041,9 @@ class WineHelperGUI(QMainWindow):
|
|||||||
self.command_process.setProcessEnvironment(env)
|
self.command_process.setProcessEnvironment(env)
|
||||||
|
|
||||||
args = ["init-prefix"]
|
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"=== Параметры создания префикса ===\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.append(f"Выполнение: {shlex.quote(self.winehelper_path)} {' '.join(shlex.quote(a) for a in args)}")
|
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_process.start(self.winehelper_path, args)
|
||||||
self.command_dialog.exec_()
|
self.command_dialog.exec_()
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user