From 4239acea24f300c374212a93a35bec01365375e0 Mon Sep 17 00:00:00 2001 From: loathingKernel <142770+loathingKernel@users.noreply.github.com> Date: Sat, 24 Dec 2022 01:09:19 +0200 Subject: [PATCH] GameDlc: Replace double inheritance with UI member class Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com> --- .../tabs/games/game_info/game_dlc.py | 63 ++++++++++--------- 1 file changed, 34 insertions(+), 29 deletions(-) diff --git a/rare/components/tabs/games/game_info/game_dlc.py b/rare/components/tabs/games/game_info/game_dlc.py index 82510dea..cc8b06eb 100644 --- a/rare/components/tabs/games/game_info/game_dlc.py +++ b/rare/components/tabs/games/game_info/game_dlc.py @@ -1,30 +1,33 @@ -from PyQt5.QtCore import pyqtSignal +from typing import Optional + +from PyQt5.QtCore import pyqtSignal, pyqtSlot from PyQt5.QtWidgets import QFrame, QWidget, QMessageBox from legendary.models.game import Game from rare.components.tabs.games.game_utils import GameUtils +from rare.models.install import InstallOptionsModel from rare.shared import LegendaryCoreSingleton, GlobalSignalsSingleton, ImageManagerSingleton from rare.shared.image_manager import ImageSize from rare.ui.components.tabs.games.game_info.game_dlc import Ui_GameDlc from rare.ui.components.tabs.games.game_info.game_dlc_widget import Ui_GameDlcWidget -from rare.models.install import InstallOptionsModel from rare.widgets.image_widget import ImageWidget -class GameDlc(QWidget, Ui_GameDlc): +class GameDlc(QWidget): install_dlc = pyqtSignal(str, bool) - game: Game def __init__(self, dlcs: dict, game_utils: GameUtils, parent=None): super(GameDlc, self).__init__(parent=parent) - self.setupUi(self) + self.ui = Ui_GameDlc() + self.ui.setupUi(self) self.core = LegendaryCoreSingleton() self.signals = GlobalSignalsSingleton() + self.game: Optional[Game] = None self.game_utils = game_utils - self.available_dlc_scroll.setFrameStyle(QFrame.NoFrame) - self.installed_dlc_scroll.setFrameStyle(QFrame.NoFrame) + self.ui.available_dlc_scroll.setFrameStyle(QFrame.NoFrame) + self.ui.installed_dlc_scroll.setFrameStyle(QFrame.NoFrame) self.dlcs = dlcs self.installed_dlc_widgets = list() @@ -49,22 +52,23 @@ class GameDlc(QWidget, Ui_GameDlc): for dlc in sorted(dlcs, key=lambda x: x.app_title): if self.core.is_installed(dlc.app_name): dlc_widget = GameDlcWidget(dlc, True) - self.installed_dlc_contents_layout.addWidget(dlc_widget) + self.ui.installed_dlc_contents_layout.addWidget(dlc_widget) dlc_widget.uninstall.connect(self.uninstall) self.installed_dlc_widgets.append(dlc_widget) else: dlc_widget = GameDlcWidget(dlc, False) - self.available_dlc_contents_layout.addWidget(dlc_widget) + self.ui.available_dlc_contents_layout.addWidget(dlc_widget) dlc_widget.install.connect(self.install) self.available_dlc_widgets.append(dlc_widget) - self.installed_dlc_label.setVisible(not self.installed_dlc_widgets) - self.installed_dlc_scroll.setVisible(bool(self.installed_dlc_widgets)) + self.ui.installed_dlc_label.setVisible(not self.installed_dlc_widgets) + self.ui.installed_dlc_scroll.setVisible(bool(self.installed_dlc_widgets)) - self.available_dlc_label.setVisible(not self.available_dlc_widgets) - self.available_dlc_scroll.setVisible(bool(self.available_dlc_widgets)) + self.ui.available_dlc_label.setVisible(not self.available_dlc_widgets) + self.ui.available_dlc_scroll.setVisible(bool(self.available_dlc_widgets)) + @pyqtSlot(str) def uninstall(self, app_name): if self.game_utils.uninstall_game(app_name): self.update_dlcs(self.game.app_name) @@ -85,41 +89,42 @@ class GameDlc(QWidget, Ui_GameDlc): ) -class GameDlcWidget(QFrame, Ui_GameDlcWidget): +class GameDlcWidget(QFrame): install = pyqtSignal(str) # Appname uninstall = pyqtSignal(str) def __init__(self, dlc: Game, installed: bool, parent=None): super(GameDlcWidget, self).__init__(parent=parent) self.image_manager = ImageManagerSingleton() - self.setupUi(self) + self.ui = Ui_GameDlcWidget() + self.ui.setupUi(self) self.dlc = dlc self.image = ImageWidget(self) self.image.setFixedSize(ImageSize.Smaller) - self.dlc_layout.insertWidget(0, self.image) + self.ui.dlc_layout.insertWidget(0, self.image) - self.dlc_name.setText(dlc.app_title) - self.version.setText(dlc.app_version()) - self.app_name.setText(dlc.app_name) + self.ui.dlc_name.setText(dlc.app_title) + self.ui.version.setText(dlc.app_version()) + self.ui.app_name.setText(dlc.app_name) self.image.setPixmap(self.image_manager.get_pixmap(dlc.app_name)) if installed: - self.action_button.setProperty("uninstall", 1) - self.action_button.clicked.connect(self.uninstall_dlc) - self.action_button.setText(self.tr("Uninstall DLC")) + self.ui.action_button.setProperty("uninstall", 1) + self.ui.action_button.clicked.connect(self.uninstall_dlc) + self.ui.action_button.setText(self.tr("Uninstall DLC")) else: - self.action_button.setProperty("install", 1) - self.action_button.clicked.connect(self.install_game) - self.action_button.setText(self.tr("Install DLC")) + self.ui.action_button.setProperty("install", 1) + self.ui.action_button.clicked.connect(self.install_game) + self.ui.action_button.setText(self.tr("Install DLC")) def uninstall_dlc(self): - self.action_button.setDisabled(True) - self.action_button.setText(self.tr("Uninstalling")) + self.ui.action_button.setDisabled(True) + self.ui.action_button.setText(self.tr("Uninstalling")) self.uninstall.emit(self.dlc.app_name) def install_game(self): - self.action_button.setDisabled(True) - self.action_button.setText(self.tr("Installing")) + self.ui.action_button.setDisabled(True) + self.ui.action_button.setText(self.tr("Installing")) self.install.emit(self.dlc.app_name)