From 14273f723b929815cbac55fd699135ef56d1a6c8 Mon Sep 17 00:00:00 2001 From: Sergey Palcheh Date: Sat, 18 Oct 2025 16:24:06 +0600 Subject: [PATCH 1/4] the error of determining the current directory has been fixed --- winehelper | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/winehelper b/winehelper index 34e4405..97d4bee 100755 --- a/winehelper +++ b/winehelper @@ -1411,7 +1411,6 @@ wine_run () { then fatal "Нельзя запустить 64-битное приложение в 32-битном префиксе!" fi - cd "$win_file_path" else fatal "Команда введена не правильно или не найден исполняемый файл $1" fi @@ -1432,9 +1431,15 @@ wine_run () { env | grep -e "WH_" -e "WINE" -e "DXVK" -e "VKD3D" | tee -a "$log_file" echo "##### Лог WINE #####" | tee -a "$log_file" - $MANGOHUD_RUN "$WINELOADER" $wh_add_args "$win_file_exec" "$@" $LAUNCH_PARAMETERS 2>&1 | tee -a "$log_file" + ( + cd "$win_file_path" + $MANGOHUD_RUN "$WINELOADER" $wh_add_args "$win_file_exec" "$@" $LAUNCH_PARAMETERS 2>&1 | tee -a "$log_file" + ) else - $MANGOHUD_RUN "$WINELOADER" $wh_add_args "$win_file_exec" "$@" $LAUNCH_PARAMETERS + ( + cd "$win_file_path" + $MANGOHUD_RUN "$WINELOADER" $wh_add_args "$win_file_exec" "$@" $LAUNCH_PARAMETERS + ) fi wait_wineserver From f788307f052ed217364696fe8f6d75b62f5b7393 Mon Sep 17 00:00:00 2001 From: Sergey Palcheh Date: Sat, 18 Oct 2025 16:39:22 +0600 Subject: [PATCH 2/4] added color for the Run button/Stop it --- winehelper_gui.py | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/winehelper_gui.py b/winehelper_gui.py index 4085c1c..0841f1a 100644 --- a/winehelper_gui.py +++ b/winehelper_gui.py @@ -1626,6 +1626,17 @@ class WineHelperGUI(QMainWindow): self.FRAME_STYLE_DEFAULT = "QFrame { border: 2px solid transparent; border-radius: 8px; padding: 0px; }" self.FRAME_STYLE_SELECTED = "QFrame { border: 2px solid #0078d7; border-radius: 8px; padding: 0px; }" + # Стили для кнопок Запустить/Остановить + self.RUN_BUTTON_STYLE = """ + QPushButton { + background-color: #4CAF50; color: white; + font-weight: bold; + } + """ + self.STOP_BUTTON_STYLE = """ + QPushButton { background-color: #d32f2f; color: white; font-weight: bold; } + """ + # Основные переменные self.winehelper_path = Var.RUN_SCRIPT self.process = None @@ -1889,6 +1900,7 @@ class WineHelperGUI(QMainWindow): # --- Верхний ряд кнопок --- top_buttons_layout = QHBoxLayout() self.run_button = QPushButton("Запустить") + self.run_button.setStyleSheet(self.RUN_BUTTON_STYLE) self.run_button.clicked.connect(self.toggle_run_stop_app) top_buttons_layout.addWidget(self.run_button) installed_action_layout.addLayout(top_buttons_layout) @@ -3468,11 +3480,7 @@ class WineHelperGUI(QMainWindow): self.current_selected_app['name'] = name self.current_selected_app['exec'] = exec_cmd - # Состояния кнопки - if desktop_path in self.running_apps: - self.run_button.setText("Остановить") - else: - self.run_button.setText("Запустить") + self._set_run_button_state(desktop_path in self.running_apps) # Показываем панель информации self.info_panel.setVisible(True) @@ -3865,10 +3873,19 @@ class WineHelperGUI(QMainWindow): # Если текущее выбранное приложение - то, что только что завершилось, обновляем кнопку if self.current_selected_app and self.current_selected_app.get('desktop_path') == desktop_path: - self.run_button.setText("Запустить") + self._set_run_button_state(False) else: print(f"Предупреждение: получен сигнал finished для неизвестного процесса {desktop_path}") + def _set_run_button_state(self, is_running): + """Устанавливает текст и стиль для кнопки Запустить/Остановить.""" + if is_running: + self.run_button.setText("Остановить") + self.run_button.setStyleSheet(self.STOP_BUTTON_STYLE) + else: + self.run_button.setText("Запустить") + self.run_button.setStyleSheet(self.RUN_BUTTON_STYLE) + def _run_app_launcher(self, debug=False): """Внутренний метод для запуска приложения (с отладкой или без) с использованием QProcess.""" if not self.current_selected_app or 'exec' not in self.current_selected_app: @@ -3935,7 +3952,7 @@ class WineHelperGUI(QMainWindow): raise RuntimeError(f"Не удалось запустить процесс: {process.errorString()}") self.running_apps[desktop_path] = process - self.run_button.setText("Остановить") + self._set_run_button_state(True) print(f"Запущено: {program} {' '.join(arguments)}") except Exception as e: QMessageBox.critical(self, "Ошибка запуска", From 9a1b78276ecf628783a8362ed525eef6d77da06e Mon Sep 17 00:00:00 2001 From: Sergey Palcheh Date: Sat, 18 Oct 2025 16:52:22 +0600 Subject: [PATCH 3/4] added button lock in the Installed tab when the Run button is pressed --- winehelper_gui.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/winehelper_gui.py b/winehelper_gui.py index 0841f1a..d47a96a 100644 --- a/winehelper_gui.py +++ b/winehelper_gui.py @@ -3882,9 +3882,17 @@ class WineHelperGUI(QMainWindow): if is_running: self.run_button.setText("Остановить") self.run_button.setStyleSheet(self.STOP_BUTTON_STYLE) + self.create_log_button.setEnabled(False) + self.backup_button.setEnabled(False) + self.uninstall_button.setEnabled(False) + self.restore_prefix_button_panel.setEnabled(False) else: self.run_button.setText("Запустить") self.run_button.setStyleSheet(self.RUN_BUTTON_STYLE) + self.create_log_button.setEnabled(True) + self.backup_button.setEnabled(True) + self.uninstall_button.setEnabled(True) + self.restore_prefix_button_panel.setEnabled(True) def _run_app_launcher(self, debug=False): """Внутренний метод для запуска приложения (с отладкой или без) с использованием QProcess.""" From b62d06ed71f4dce75ec84b524e8c37ed72339d64 Mon Sep 17 00:00:00 2001 From: Sergey Palcheh Date: Sun, 19 Oct 2025 15:39:43 +0600 Subject: [PATCH 4/4] fixed typos --- winehelper | 2 +- winehelper_gui.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/winehelper b/winehelper index 97d4bee..5272511 100755 --- a/winehelper +++ b/winehelper @@ -2183,7 +2183,7 @@ select_component_version() { } run_install_to_prefix() { - if [[ -z "$1" ]] || [[ -z "$2" ]] || [[ -f "$2" ]] ; then + if [[ -z "$1" ]] || [[ -z "$2" ]] || [[ ! -f "$2" ]] ; then fatal "Использование: $SCRIPT_NAME install-to-prefix <имя_префикса> <путь_к_установщику>" fi diff --git a/winehelper_gui.py b/winehelper_gui.py index d47a96a..45bfb23 100644 --- a/winehelper_gui.py +++ b/winehelper_gui.py @@ -3668,7 +3668,8 @@ class WineHelperGUI(QMainWindow): msg_box.setText( "Приложение будет запущено в режиме отладки.\n\n" "После закрытия приложения лог будет сохранен в папке 'winehelper_backup_log' " - "в вашем домашнем каталоге под именем программы (например, 'program.log')." + "в вашем домашнем каталоге под именем (пример: prefix_program.log).\n\n" + "Продолжить?" ) msg_box.addButton(yes_button, QMessageBox.YesRole) msg_box.addButton(no_button, QMessageBox.NoRole)