1
0
Fork 0
mirror of synced 2024-06-30 20:20:53 +12:00
Rare/rare/components/dialogs/uninstall_dialog.py
loathingKernel a26b977bda Fix a few issues around refactoring the stylesheets.
Properly set object names for install and uninstall buttons in dialogs
Change margins on widgets that are put into scrollareas
Add top margin only on checkable QGroupBox
Remove padding from QToolBox
2023-02-04 17:38:07 +02:00

78 lines
2.7 KiB
Python

from PyQt5.QtCore import Qt, pyqtSignal
from PyQt5.QtGui import QCloseEvent
from PyQt5.QtWidgets import (
QDialog,
QLabel,
QVBoxLayout,
QCheckBox,
QHBoxLayout,
QPushButton,
QApplication,
)
from legendary.utils.selective_dl import get_sdl_appname
from rare.models.game import RareGame
from rare.models.install import UninstallOptionsModel
from rare.utils.misc import icon
class UninstallDialog(QDialog):
result_ready = pyqtSignal(UninstallOptionsModel)
def __init__(self, rgame: RareGame, options: UninstallOptionsModel, parent=None):
super(UninstallDialog, self).__init__(parent=parent)
self.setAttribute(Qt.WA_DeleteOnClose, True)
self.setWindowFlags(Qt.Dialog | Qt.CustomizeWindowHint | Qt.WindowTitleHint)
self.setWindowTitle(f'{QApplication.instance().applicationName()} - Uninstall "{rgame.app_title}"')
self.info_text = QLabel(
self.tr("Do you really want to uninstall <b>{}</b>?").format(rgame.app_title)
)
self.keep_files = QCheckBox(self.tr("Keep game files."))
self.keep_files.setChecked(bool(options.keep_files))
self.keep_config = QCheckBox(self.tr("Keep game configuation."))
self.keep_config.setChecked(bool(options.keep_config))
self.uninstall_button = QPushButton(
icon("ei.remove-circle", color="red"), self.tr("Uninstall")
)
self.uninstall_button.setObjectName("UninstallButton")
self.uninstall_button.clicked.connect(self.__on_uninstall)
self.cancel_button = QPushButton(self.tr("Cancel"))
self.cancel_button.clicked.connect(self.__on_cancel)
form_layout = QVBoxLayout()
form_layout.setContentsMargins(-1, -1, 0, -1)
form_layout.addWidget(self.keep_files)
form_layout.addWidget(self.keep_config)
button_layout = QHBoxLayout()
button_layout.addWidget(self.cancel_button)
button_layout.addStretch(1)
button_layout.addWidget(self.uninstall_button)
layout = QVBoxLayout()
layout.addWidget(self.info_text)
layout.addLayout(form_layout)
layout.addLayout(button_layout)
self.setLayout(layout)
if get_sdl_appname(rgame.app_name) is not None:
self.keep_config.setChecked(True)
self.options: UninstallOptionsModel = options
def closeEvent(self, a0: QCloseEvent) -> None:
self.result_ready.emit(self.options)
super(UninstallDialog, self).closeEvent(a0)
def __on_uninstall(self):
self.options.values = (True, self.keep_files.isChecked(), self.keep_config.isChecked())
self.close()
def __on_cancel(self):
self.options.values = (None, None, None)
self.close()