diff --git a/winehelper_gui.py b/winehelper_gui.py index 2385c9a..5eafbc0 100644 --- a/winehelper_gui.py +++ b/winehelper_gui.py @@ -2773,71 +2773,24 @@ class WineHelperGUI(QMainWindow): QMessageBox.warning(self, "Ошибка", "Укажите путь к установочному файлу") return + if not self._show_license_agreement_dialog(): + return # Пользователь отклонил лицензию + # Создаем диалоговое окно установки self.install_dialog = QDialog(self) title_name = self._get_current_app_title() self.install_dialog.setWindowTitle(f"Установка «{title_name}»") self.install_dialog.setMinimumSize(750, 400) self.install_dialog.setWindowModality(Qt.WindowModal) - - self.stacked_widget = QStackedWidget() - layout = QVBoxLayout() - layout.addWidget(self.stacked_widget) - self.install_dialog.setLayout(layout) - - # Первая страница - лицензионное соглашение - license_page = QWidget() - license_layout = QVBoxLayout(license_page) - - license_found = False - - license_text = QTextBrowser() - - # Получаем текст лицензионного соглашения из файла - try: - license_file_path = Var.LICENSE_AGREEMENT_FILE - if not license_file_path or not os.path.exists(license_file_path): - raise FileNotFoundError - - with open(license_file_path, 'r', encoding='utf-8') as f: - license_content = f.read() - - escaped_license_content = html.escape(license_content) - - license_text.setHtml(f""" -
{escaped_license_content}
- """) - license_found = True - except (FileNotFoundError, TypeError): - license_text.setHtml(f'

Лицензионные соглашения

Не удалось загрузить файл лицензионного соглашения по пути:
{Var.LICENSE_AGREEMENT_FILE}

') - except Exception as e: - print(f"Ошибка чтения файла лицензии: {str(e)}") - license_text.setHtml(f""" -

Лицензионные соглашения

-

Произошла ошибка при чтении файла лицензии:
{str(e)}

- """) - - license_layout.addWidget(license_text) - - self.license_checkbox = QCheckBox("Я принимаю условия лицензионного соглашения") - license_layout.addWidget(self.license_checkbox) - - self.btn_continue = QPushButton("Продолжить установку") - self.btn_continue.setEnabled(False) - self.btn_continue.clicked.connect(self._prepare_installation) - license_layout.addWidget(self.btn_continue) - - # Вторая страница - лог установки - log_page = QWidget() - log_layout = QVBoxLayout(log_page) + log_layout = QVBoxLayout(self.install_dialog) self.log_output = QTextEdit() self.log_output.setReadOnly(True) self.log_output.setFont(QFont('DejaVu Sans Mono', 10)) log_layout.addWidget(self.log_output) - self.control_buttons = QWidget() - btn_layout = QHBoxLayout(self.control_buttons) + control_buttons = QWidget() + btn_layout = QHBoxLayout(control_buttons) self.btn_abort = QPushButton("Прервать") self.btn_abort.clicked.connect(self.abort_installation) btn_layout.addWidget(self.btn_abort) @@ -2846,25 +2799,16 @@ class WineHelperGUI(QMainWindow): self.btn_close.setEnabled(False) self.btn_close.clicked.connect(self.install_dialog.close) btn_layout.addWidget(self.btn_close) - - log_layout.addWidget(self.control_buttons) - - self.stacked_widget.addWidget(license_page) - self.stacked_widget.addWidget(log_page) + log_layout.addWidget(control_buttons) # Назначение кастомного обработчика закрытия окна def dialog_close_handler(event): self.handle_install_dialog_close(event) self.install_dialog.closeEvent = dialog_close_handler - self.license_checkbox.stateChanged.connect( - lambda state: self.btn_continue.setEnabled(state == Qt.Checked) - ) - - if not license_found: - self.license_checkbox.setEnabled(False) - self.install_dialog.show() + # Сразу же готовим и запускаем установку + self._prepare_installation() def _reset_log_state(self): """Сбрасывает состояние буфера и флага прогресса для лога установки.""" @@ -2873,7 +2817,6 @@ class WineHelperGUI(QMainWindow): def _prepare_installation(self): """Подготавливает и запускает процесс установки""" - self.stacked_widget.setCurrentIndex(1) self._reset_log_state() # Сбрасываем состояние для обработки лога winehelper_path = self.winehelper_path