forked from CastroFidel/winehelper
Compare commits
11 Commits
61fb7d9847
...
7321542477
Author | SHA1 | Date | |
---|---|---|---|
|
7321542477 | ||
|
477f44a11e | ||
|
4f9821450a | ||
|
f858746064 | ||
|
1123c018eb | ||
|
998eff3263 | ||
|
4aebb722ca | ||
|
4672dcd4e1 | ||
|
e174b034df | ||
|
3100475b1e | ||
|
148a7dbfce |
23
winehelper
23
winehelper
@@ -617,6 +617,7 @@ create_desktop () {
|
|||||||
echo "StartupNotify=true"
|
echo "StartupNotify=true"
|
||||||
echo "Path=$DATA_PATH"
|
echo "Path=$DATA_PATH"
|
||||||
echo "Icon=$icon_file"
|
echo "Icon=$icon_file"
|
||||||
|
echo "StartupWMClass=$(basename "$exe_file")"
|
||||||
} > "$USER_WORK_PATH/$desktop_filename.desktop"
|
} > "$USER_WORK_PATH/$desktop_filename.desktop"
|
||||||
chmod +x "$USER_WORK_PATH/$desktop_filename.desktop"
|
chmod +x "$USER_WORK_PATH/$desktop_filename.desktop"
|
||||||
|
|
||||||
@@ -652,7 +653,7 @@ create_desktop () {
|
|||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Type=Directory
|
Type=Directory
|
||||||
Name=WineHelper
|
Name=WineHelper
|
||||||
Icon=wine
|
Icon=winehelper
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -1355,8 +1356,6 @@ init_database () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
prepair_wine () {
|
prepair_wine () {
|
||||||
var_winedlloverride_update "winemenubuilder.exe=d"
|
|
||||||
|
|
||||||
if [[ -n "$INSTALL_SCRIPT_NAME" ]]
|
if [[ -n "$INSTALL_SCRIPT_NAME" ]]
|
||||||
then print_info "Используются настройки из скрипта установки: $INSTALL_SCRIPT_NAME"
|
then print_info "Используются настройки из скрипта установки: $INSTALL_SCRIPT_NAME"
|
||||||
else init_database
|
else init_database
|
||||||
@@ -2127,6 +2126,19 @@ select_component_version() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
run_install_to_prefix() {
|
||||||
|
export WINEPREFIX="$1"
|
||||||
|
local WIN_FILE_EXEC="$2"
|
||||||
|
|
||||||
|
if [[ -z "$WINEPREFIX" ]] || [[ -z "$WIN_FILE_EXEC" ]]; then
|
||||||
|
fatal "Использование: $SCRIPT_NAME install-to-prefix <имя_префикса> <путь_к_установщику>"
|
||||||
|
fi
|
||||||
|
|
||||||
|
check_prefix_var
|
||||||
|
prepair_wine
|
||||||
|
wine_run_install "$WIN_FILE_EXEC"
|
||||||
|
}
|
||||||
|
|
||||||
run_install_dxvk() {
|
run_install_dxvk() {
|
||||||
local version="$1"
|
local version="$1"
|
||||||
if [[ -z "$version" ]] ; then
|
if [[ -z "$version" ]] ; then
|
||||||
@@ -2243,6 +2255,10 @@ else
|
|||||||
arg1="--help"
|
arg1="--help"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# отключаем создание .desktop файлов средствами wine
|
||||||
|
# и отключаем winebth, так как может сломать winedevice.exe
|
||||||
|
var_winedlloverride_update "winemenubuilder.exe,winebth.sys=d"
|
||||||
|
|
||||||
case "$arg1" in
|
case "$arg1" in
|
||||||
--version|version) rpm -qi "$SCRIPT_NAME" ; exit 0 ;;
|
--version|version) rpm -qi "$SCRIPT_NAME" ; exit 0 ;;
|
||||||
--help|help) wh_info ; exit 0 ;;
|
--help|help) wh_info ; exit 0 ;;
|
||||||
@@ -2255,6 +2271,7 @@ case "$arg1" in
|
|||||||
winetricks) prepair_wine ; "$WH_WINETRICKS" -q "$@" ;;
|
winetricks) prepair_wine ; "$WH_WINETRICKS" -q "$@" ;;
|
||||||
desktop) create_desktop "$@" ; exit 0 ;;
|
desktop) create_desktop "$@" ; exit 0 ;;
|
||||||
install|-i) run_autoinstall "$@" ;;
|
install|-i) run_autoinstall "$@" ;;
|
||||||
|
install-to-prefix) run_install_to_prefix "$@" ;;
|
||||||
install-dxvk) run_install_dxvk "$@" ;;
|
install-dxvk) run_install_dxvk "$@" ;;
|
||||||
install-vkd3d) run_install_vkd3d "$@" ;;
|
install-vkd3d) run_install_vkd3d "$@" ;;
|
||||||
change-wine) run_change_wine_version "$@" ;;
|
change-wine) run_change_wine_version "$@" ;;
|
||||||
|
@@ -1,3 +1,4 @@
|
|||||||
|
#!/usr/bin/env xdg-open
|
||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Name=WineHelper
|
Name=WineHelper
|
||||||
Exec=winehelper gui %F
|
Exec=winehelper gui %F
|
||||||
@@ -7,3 +8,4 @@ Type=Application
|
|||||||
Categories=WineHelper;Utility;Emulator;
|
Categories=WineHelper;Utility;Emulator;
|
||||||
StartupNotify=true
|
StartupNotify=true
|
||||||
Icon=winehelper
|
Icon=winehelper
|
||||||
|
StartupWMClass=winehelper
|
||||||
|
@@ -594,7 +594,6 @@ class WinetricksManagerDialog(QDialog):
|
|||||||
env.insert("WINEPREFIX", self.prefix_path)
|
env.insert("WINEPREFIX", self.prefix_path)
|
||||||
env.insert("WINE", self.wine_executable)
|
env.insert("WINE", self.wine_executable)
|
||||||
# Отключаем winemenubuilder, чтобы избежать зависаний, связанных с 'wineserver -w'.
|
# Отключаем winemenubuilder, чтобы избежать зависаний, связанных с 'wineserver -w'.
|
||||||
env.insert("WINEDLLOVERRIDES", "winemenubuilder.exe=d")
|
|
||||||
# Это известная проблема при запуске winetricks из ГУИ.
|
# Это известная проблема при запуске winetricks из ГУИ.
|
||||||
process.setProcessEnvironment(env)
|
process.setProcessEnvironment(env)
|
||||||
|
|
||||||
@@ -835,8 +834,6 @@ class WinetricksManagerDialog(QDialog):
|
|||||||
env = QProcessEnvironment.systemEnvironment()
|
env = QProcessEnvironment.systemEnvironment()
|
||||||
env.insert("WINEPREFIX", self.prefix_path)
|
env.insert("WINEPREFIX", self.prefix_path)
|
||||||
env.insert("WINE", self.wine_executable)
|
env.insert("WINE", self.wine_executable)
|
||||||
# Отключаем winemenubuilder, чтобы он не создавал лишние ярлыки в системном меню Wine.
|
|
||||||
env.insert("WINEDLLOVERRIDES", "winemenubuilder.exe=d")
|
|
||||||
self.apply_process.setProcessEnvironment(env)
|
self.apply_process.setProcessEnvironment(env)
|
||||||
self.apply_process.readyReadStandardOutput.connect(lambda: self.log_output.append(self.apply_process.readAllStandardOutput().data().decode('utf-8', 'ignore').strip()))
|
self.apply_process.readyReadStandardOutput.connect(lambda: self.log_output.append(self.apply_process.readAllStandardOutput().data().decode('utf-8', 'ignore').strip()))
|
||||||
self.apply_process.finished.connect(self.on_apply_finished)
|
self.apply_process.finished.connect(self.on_apply_finished)
|
||||||
@@ -2145,61 +2142,49 @@ class WineHelperGUI(QMainWindow):
|
|||||||
self.vkd3d_manage_button.setToolTip("Установка или удаление определенной версии vkd3d-proton в префиксе.")
|
self.vkd3d_manage_button.setToolTip("Установка или удаление определенной версии vkd3d-proton в префиксе.")
|
||||||
management_layout.addWidget(self.vkd3d_manage_button, 5, 1)
|
management_layout.addWidget(self.vkd3d_manage_button, 5, 1)
|
||||||
|
|
||||||
# --- Правая сторона: Информационный блок ---
|
# --- Правая сторона: Информационный блок и кнопки установки ---
|
||||||
|
right_column_widget = QWidget()
|
||||||
|
right_column_layout = QVBoxLayout(right_column_widget)
|
||||||
|
right_column_layout.setContentsMargins(0, 0, 0, 0)
|
||||||
|
right_column_layout.setSpacing(10)
|
||||||
|
|
||||||
self.prefix_info_display = QTextBrowser()
|
self.prefix_info_display = QTextBrowser()
|
||||||
self.prefix_info_display.setReadOnly(True)
|
self.prefix_info_display.setReadOnly(True)
|
||||||
self.prefix_info_display.setFrameStyle(QFrame.StyledPanel)
|
self.prefix_info_display.setFrameStyle(QFrame.StyledPanel)
|
||||||
# Увеличиваем rowspan, чтобы охватить все строки с кнопками
|
right_column_layout.addWidget(self.prefix_info_display)
|
||||||
management_layout.addWidget(self.prefix_info_display, 0, 2, 6, 1)
|
|
||||||
|
|
||||||
management_layout.setColumnStretch(0, 1)
|
|
||||||
management_layout.setColumnStretch(1, 1)
|
|
||||||
management_layout.setColumnStretch(2, 2)
|
|
||||||
|
|
||||||
separator = QFrame()
|
|
||||||
separator.setFrameShape(QFrame.HLine)
|
|
||||||
separator.setFrameShadow(QFrame.Sunken)
|
|
||||||
management_layout.addWidget(separator, 6, 0, 1, 3)
|
|
||||||
|
|
||||||
install_group = QWidget()
|
install_group = QWidget()
|
||||||
install_layout = QVBoxLayout(install_group)
|
install_layout = QVBoxLayout(install_group)
|
||||||
install_layout.setContentsMargins(0, 5, 0, 0)
|
install_layout.setContentsMargins(0, 0, 0, 0)
|
||||||
install_layout.setSpacing(5)
|
install_layout.setSpacing(5)
|
||||||
|
|
||||||
install_path_layout = QHBoxLayout()
|
|
||||||
self.prefix_install_path_edit = QLineEdit()
|
|
||||||
self.prefix_install_path_edit.setPlaceholderText("Укажите путь к установочному файлу .exe или .msi...")
|
|
||||||
install_path_layout.addWidget(self.prefix_install_path_edit)
|
|
||||||
|
|
||||||
self.prefix_browse_button = QPushButton("Обзор...")
|
|
||||||
self.prefix_browse_button.clicked.connect(self.browse_for_prefix_installer)
|
|
||||||
install_path_layout.addWidget(self.prefix_browse_button)
|
|
||||||
install_layout.addLayout(install_path_layout)
|
|
||||||
|
|
||||||
# Layout для кнопок установки и создания ярлыка
|
|
||||||
action_buttons_layout = QHBoxLayout()
|
|
||||||
|
|
||||||
self.prefix_install_button = QPushButton("Установить приложение в префикс")
|
self.prefix_install_button = QPushButton("Установить приложение в префикс")
|
||||||
self.prefix_install_button.setEnabled(False)
|
self.prefix_install_button.setEnabled(False)
|
||||||
self.prefix_install_button.clicked.connect(self.run_prefix_installer)
|
self.prefix_install_button.clicked.connect(self.browse_and_run_prefix_installer)
|
||||||
action_buttons_layout.addWidget(self.prefix_install_button)
|
install_layout.addWidget(self.prefix_install_button)
|
||||||
|
|
||||||
self.create_launcher_button = QPushButton("Создать ярлык для приложения в префиксе")
|
self.create_launcher_button = QPushButton("Создать ярлык для приложения в префиксе")
|
||||||
self.create_launcher_button.setToolTip(
|
self.create_launcher_button.setToolTip(
|
||||||
"Создает ярлык в меню и на вкладке 'Установленные' для .exe файла внутри префикса.")
|
"Создает ярлык в меню и на вкладке 'Установленные' для .exe файла внутри префикса.")
|
||||||
self.create_launcher_button.clicked.connect(self.create_launcher_for_prefix)
|
self.create_launcher_button.clicked.connect(self.create_launcher_for_prefix)
|
||||||
self.create_launcher_button.setEnabled(False) # Изначально неактивна
|
self.create_launcher_button.setEnabled(False) # Изначально неактивна
|
||||||
action_buttons_layout.addWidget(self.create_launcher_button)
|
install_layout.addWidget(self.create_launcher_button)
|
||||||
install_layout.addLayout(action_buttons_layout)
|
right_column_layout.addWidget(install_group)
|
||||||
management_layout.addWidget(install_group, 7, 0, 1, 3)
|
|
||||||
|
right_column_layout.setStretch(0, 1) # Информационное окно растягивается
|
||||||
|
right_column_layout.setStretch(1, 0) # Группа кнопок не растягивается
|
||||||
|
|
||||||
|
management_layout.addWidget(right_column_widget, 0, 2, 6, 1)
|
||||||
|
|
||||||
|
management_layout.setColumnStretch(0, 1)
|
||||||
|
management_layout.setColumnStretch(1, 1)
|
||||||
|
management_layout.setColumnStretch(2, 2)
|
||||||
|
|
||||||
container_layout.addWidget(self.prefix_management_groupbox)
|
container_layout.addWidget(self.prefix_management_groupbox)
|
||||||
layout.addWidget(self.management_container_groupbox)
|
layout.addWidget(self.management_container_groupbox)
|
||||||
layout.addStretch()
|
layout.addStretch()
|
||||||
self.add_tab(self.prefix_tab, "Менеджер префиксов")
|
self.add_tab(self.prefix_tab, "Менеджер префиксов")
|
||||||
|
|
||||||
self.prefix_install_path_edit.textChanged.connect(self.update_prefix_install_button_state)
|
|
||||||
|
|
||||||
def _get_current_prefixes(self):
|
def _get_current_prefixes(self):
|
||||||
"""Возвращает множество имен существующих префиксов."""
|
"""Возвращает множество имен существующих префиксов."""
|
||||||
prefixes_root_path = os.path.join(Var.USER_WORK_PATH, "prefixes")
|
prefixes_root_path = os.path.join(Var.USER_WORK_PATH, "prefixes")
|
||||||
@@ -2325,7 +2310,6 @@ class WineHelperGUI(QMainWindow):
|
|||||||
# Успешное удаление, обновляем GUI
|
# Успешное удаление, обновляем GUI
|
||||||
self._remove_prefix_from_gui_state(prefix_name)
|
self._remove_prefix_from_gui_state(prefix_name)
|
||||||
self.update_installed_apps()
|
self.update_installed_apps()
|
||||||
QMessageBox.information(self, "Успех", f"Префикс '{prefix_name}' и все связанные с ним данные были успешно удалены.")
|
|
||||||
else:
|
else:
|
||||||
QMessageBox.critical(self, "Ошибка удаления", f"Не удалось удалить префикс '{prefix_name}'.\nПодробности смотрите в логе.")
|
QMessageBox.critical(self, "Ошибка удаления", f"Не удалось удалить префикс '{prefix_name}'.\nПодробности смотрите в логе.")
|
||||||
|
|
||||||
@@ -2334,18 +2318,16 @@ class WineHelperGUI(QMainWindow):
|
|||||||
is_prefix_selected = bool(prefix_name)
|
is_prefix_selected = bool(prefix_name)
|
||||||
self.prefix_management_groupbox.setEnabled(is_prefix_selected)
|
self.prefix_management_groupbox.setEnabled(is_prefix_selected)
|
||||||
self.create_launcher_button.setEnabled(is_prefix_selected)
|
self.create_launcher_button.setEnabled(is_prefix_selected)
|
||||||
|
self.prefix_install_button.setEnabled(is_prefix_selected)
|
||||||
|
|
||||||
if is_prefix_selected:
|
if is_prefix_selected:
|
||||||
self.update_prefix_info_display(prefix_name)
|
self.update_prefix_info_display(prefix_name)
|
||||||
else:
|
else:
|
||||||
self.prefix_info_display.clear()
|
self.prefix_info_display.clear()
|
||||||
self.prefix_install_path_edit.clear()
|
|
||||||
# Сбрасываем состояние кнопок, когда префикс не выбран
|
# Сбрасываем состояние кнопок, когда префикс не выбран
|
||||||
self.esync_button.setChecked(False)
|
self.esync_button.setChecked(False)
|
||||||
self.fsync_button.setChecked(False)
|
self.fsync_button.setChecked(False)
|
||||||
|
|
||||||
self.update_prefix_install_button_state()
|
|
||||||
|
|
||||||
def update_prefix_info_display(self, prefix_name):
|
def update_prefix_info_display(self, prefix_name):
|
||||||
"""Обновляет информационный блок для созданного префикса, читая данные из last.conf."""
|
"""Обновляет информационный блок для созданного префикса, читая данные из last.conf."""
|
||||||
if not prefix_name:
|
if not prefix_name:
|
||||||
@@ -2425,8 +2407,13 @@ class WineHelperGUI(QMainWindow):
|
|||||||
html_content += "</p>"
|
html_content += "</p>"
|
||||||
self.prefix_info_display.setHtml(html_content)
|
self.prefix_info_display.setHtml(html_content)
|
||||||
|
|
||||||
def browse_for_prefix_installer(self):
|
def browse_and_run_prefix_installer(self):
|
||||||
"""Открывает диалог выбора файла для установки в созданный префикс."""
|
"""Открывает диалог выбора файла и запускает установку в созданный префикс."""
|
||||||
|
prefix_name = self.current_managed_prefix_name
|
||||||
|
if not prefix_name:
|
||||||
|
QMessageBox.warning(self, "Ошибка", "Сначала выберите префикс для установки.")
|
||||||
|
return
|
||||||
|
|
||||||
file_path, _ = QFileDialog.getOpenFileName(
|
file_path, _ = QFileDialog.getOpenFileName(
|
||||||
self,
|
self,
|
||||||
"Выберите установочный файл",
|
"Выберите установочный файл",
|
||||||
@@ -2434,18 +2421,11 @@ class WineHelperGUI(QMainWindow):
|
|||||||
"Исполняемые файлы (*.exe *.msi);;Все файлы (*)"
|
"Исполняемые файлы (*.exe *.msi);;Все файлы (*)"
|
||||||
)
|
)
|
||||||
if file_path:
|
if file_path:
|
||||||
self.prefix_install_path_edit.setText(file_path)
|
self.run_prefix_installer(file_path)
|
||||||
|
|
||||||
def update_prefix_install_button_state(self):
|
def run_prefix_installer(self, installer_path):
|
||||||
"""Обновляет состояние кнопки установки в префикс."""
|
"""Запускает установку файла в выбранный префикс через скрипт winehelper."""
|
||||||
path_ok = bool(self.prefix_install_path_edit.text().strip())
|
|
||||||
prefix_selected = self.current_managed_prefix_name is not None
|
|
||||||
self.prefix_install_button.setEnabled(path_ok and prefix_selected)
|
|
||||||
|
|
||||||
def run_prefix_installer(self):
|
|
||||||
"""Запускает установку файла в выбранный префикс."""
|
|
||||||
prefix_name = self.current_managed_prefix_name
|
prefix_name = self.current_managed_prefix_name
|
||||||
installer_path = self.prefix_install_path_edit.text().strip()
|
|
||||||
|
|
||||||
if not prefix_name:
|
if not prefix_name:
|
||||||
QMessageBox.warning(self, "Ошибка", "Не выбран префикс для установки.")
|
QMessageBox.warning(self, "Ошибка", "Не выбран префикс для установки.")
|
||||||
@@ -2454,9 +2434,6 @@ class WineHelperGUI(QMainWindow):
|
|||||||
QMessageBox.warning(self, "Ошибка", "Указан неверный путь к установочному файлу.")
|
QMessageBox.warning(self, "Ошибка", "Указан неверный путь к установочному файлу.")
|
||||||
return
|
return
|
||||||
|
|
||||||
prefix_path = os.path.join(Var.USER_WORK_PATH, "prefixes", prefix_name)
|
|
||||||
wine_executable = self._get_wine_executable_for_prefix(prefix_name)
|
|
||||||
|
|
||||||
self.command_dialog = QDialog(self)
|
self.command_dialog = QDialog(self)
|
||||||
self.command_dialog.setWindowTitle(f"Установка в префикс: {prefix_name}")
|
self.command_dialog.setWindowTitle(f"Установка в префикс: {prefix_name}")
|
||||||
self.command_dialog.setMinimumSize(750, 400)
|
self.command_dialog.setMinimumSize(750, 400)
|
||||||
@@ -2480,15 +2457,12 @@ class WineHelperGUI(QMainWindow):
|
|||||||
self.command_process.readyReadStandardOutput.connect(self._handle_command_output)
|
self.command_process.readyReadStandardOutput.connect(self._handle_command_output)
|
||||||
self.command_process.finished.connect(self._handle_prefix_install_finished)
|
self.command_process.finished.connect(self._handle_prefix_install_finished)
|
||||||
|
|
||||||
env = QProcessEnvironment.systemEnvironment()
|
# Окружение полностью настраивается скриптом winehelper
|
||||||
env.insert("WINEPREFIX", prefix_path)
|
self.command_process.setProcessEnvironment(QProcessEnvironment.systemEnvironment())
|
||||||
# Отключаем winemenubuilder, чтобы установщик не создавал ярлыки в обход WineHelper.
|
|
||||||
env.insert("WINEDLLOVERRIDES", "winemenubuilder.exe=d")
|
|
||||||
self.command_process.setProcessEnvironment(env)
|
|
||||||
|
|
||||||
args = [installer_path]
|
args = ["install-to-prefix", prefix_name, installer_path]
|
||||||
self.command_log_output.append(f"Запуск установки: {shlex.quote(wine_executable)} {shlex.quote(installer_path)}")
|
self.command_log_output.append(f"Выполнение: {shlex.quote(self.winehelper_path)} {' '.join(shlex.quote(a) for a in args)}")
|
||||||
self.command_process.start(wine_executable, args)
|
self.command_process.start(self.winehelper_path, args)
|
||||||
self.command_dialog.exec_()
|
self.command_dialog.exec_()
|
||||||
|
|
||||||
def _get_prefix_component_version(self, prefix_name, component_key):
|
def _get_prefix_component_version(self, prefix_name, component_key):
|
||||||
@@ -2960,8 +2934,6 @@ class WineHelperGUI(QMainWindow):
|
|||||||
env.insert("WH_WINE_USE", wine_use)
|
env.insert("WH_WINE_USE", wine_use)
|
||||||
if base_pfx:
|
if base_pfx:
|
||||||
env.insert("BASE_PFX", base_pfx)
|
env.insert("BASE_PFX", base_pfx)
|
||||||
# Отключаем winemenubuilder, чтобы при инициализации префикса не создавались стандартные ярлыки Wine.
|
|
||||||
env.insert("WINEDLLOVERRIDES", "winemenubuilder.exe=d")
|
|
||||||
self.command_process.setProcessEnvironment(env)
|
self.command_process.setProcessEnvironment(env)
|
||||||
|
|
||||||
args = ["init-prefix"]
|
args = ["init-prefix"]
|
||||||
@@ -2998,10 +2970,6 @@ class WineHelperGUI(QMainWindow):
|
|||||||
if not self.management_container_groupbox.isVisible():
|
if not self.management_container_groupbox.isVisible():
|
||||||
self.management_container_groupbox.setVisible(True)
|
self.management_container_groupbox.setVisible(True)
|
||||||
|
|
||||||
QMessageBox.information(self, "Успех",
|
|
||||||
f"Префикс '{prefix_name}' успешно создан.\n"
|
|
||||||
"Теперь вы можете управлять им, выбрав его из выпадающего списка.")
|
|
||||||
|
|
||||||
def update_installed_apps(self):
|
def update_installed_apps(self):
|
||||||
"""Обновляет список установленных приложений в виде кнопок"""
|
"""Обновляет список установленных приложений в виде кнопок"""
|
||||||
# Если активная кнопка находится в списке удаляемых, сбрасываем ее
|
# Если активная кнопка находится в списке удаляемых, сбрасываем ее
|
||||||
@@ -3070,7 +3038,6 @@ class WineHelperGUI(QMainWindow):
|
|||||||
self.command_process.deleteLater()
|
self.command_process.deleteLater()
|
||||||
self.command_process = None
|
self.command_process = None
|
||||||
self.command_close_button.setEnabled(True)
|
self.command_close_button.setEnabled(True)
|
||||||
self.prefix_install_path_edit.clear()
|
|
||||||
self.update_installed_apps()
|
self.update_installed_apps()
|
||||||
|
|
||||||
def _set_active_button(self, button_widget):
|
def _set_active_button(self, button_widget):
|
||||||
@@ -4131,18 +4098,6 @@ class WineHelperGUI(QMainWindow):
|
|||||||
self.created_prefix_selector.setCurrentIndex(0)
|
self.created_prefix_selector.setCurrentIndex(0)
|
||||||
# --- Конец обновления списка префиксов ---
|
# --- Конец обновления списка префиксов ---
|
||||||
|
|
||||||
# Создаем кастомный диалог, чтобы кнопка была на русском
|
|
||||||
success_box = QMessageBox(self.install_dialog)
|
|
||||||
success_box.setWindowTitle("Успех")
|
|
||||||
title_name = self._get_current_app_title()
|
|
||||||
success_text = f"Программа «{title_name}» установлена успешно!"
|
|
||||||
if new_prefix_name:
|
|
||||||
success_text += f"\n\nНовый префикс '{new_prefix_name}' был автоматически выбран в списке управления на вкладке 'Менеджер префиксов'."
|
|
||||||
success_box.setText(success_text)
|
|
||||||
success_box.setIcon(QMessageBox.Information)
|
|
||||||
success_box.addButton("Готово", QMessageBox.AcceptRole)
|
|
||||||
success_box.exec_()
|
|
||||||
|
|
||||||
self.update_installed_apps()
|
self.update_installed_apps()
|
||||||
|
|
||||||
# Кнопка закрыть
|
# Кнопка закрыть
|
||||||
@@ -4242,7 +4197,6 @@ class WineHelperGUI(QMainWindow):
|
|||||||
"""Обрабатывает завершение создания ярлыка."""
|
"""Обрабатывает завершение создания ярлыка."""
|
||||||
self._handle_command_finished(exit_code, exit_status)
|
self._handle_command_finished(exit_code, exit_status)
|
||||||
if exit_code == 0:
|
if exit_code == 0:
|
||||||
QMessageBox.information(self, "Успех", "Ярлык успешно создан.")
|
|
||||||
self.update_installed_apps()
|
self.update_installed_apps()
|
||||||
# Переключаемся на вкладку "Установленные"
|
# Переключаемся на вкладку "Установленные"
|
||||||
for i in range(self.tab_bar.count()):
|
for i in range(self.tab_bar.count()):
|
||||||
|
Reference in New Issue
Block a user