forked from CastroFidel/winehelper
refactoring the install_current_script() method
This commit is contained in:
@@ -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"""
|
||||
<pre style="font-family: sans-serif; font-size: 10pt; white-space: pre-wrap; word-wrap: break-word;">{escaped_license_content}</pre>
|
||||
""")
|
||||
license_found = True
|
||||
except (FileNotFoundError, TypeError):
|
||||
license_text.setHtml(f'<h3>Лицензионные соглашения</h3><p>Не удалось загрузить файл лицензионного соглашения по пути:<br>{Var.LICENSE_AGREEMENT_FILE}</p>')
|
||||
except Exception as e:
|
||||
print(f"Ошибка чтения файла лицензии: {str(e)}")
|
||||
license_text.setHtml(f"""
|
||||
<h3>Лицензионные соглашения</h3>
|
||||
<p>Произошла ошибка при чтении файла лицензии:<br>{str(e)}</p>
|
||||
""")
|
||||
|
||||
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
|
||||
|
Reference in New Issue
Block a user