diff --git a/rare/components/tabs/games/__init__.py b/rare/components/tabs/games/__init__.py index 4c8a603a..cb1a90fe 100644 --- a/rare/components/tabs/games/__init__.py +++ b/rare/components/tabs/games/__init__.py @@ -39,10 +39,16 @@ class GamesTab(QStackedWidget, Ui_GamesTab): self.signals.games_tab.connect(lambda x: self.signal_received(*x)) self.settings = QSettings() + self.game_list = shared.api_results.game_list + self.dlcs = shared.api_results.dlcs + self.bit32 = shared.api_results.bit32_games + self.mac_games = shared.api_results.mac_games + self.no_assets = shared.api_results.no_asset_games + self.head_bar = GameListHeadBar() self.games.layout().insertWidget(0, self.head_bar) - self.game_info = InfoTabs(self.core, self.signals, self) + self.game_info = InfoTabs(self.dlcs, self) self.addWidget(self.game_info) self.import_widget = ImportWidget() @@ -56,11 +62,6 @@ class GamesTab(QStackedWidget, Ui_GamesTab): self.import_widget.back_button.clicked.connect(lambda: self.setCurrentIndex(0)) self.uninstalled_info_widget.tabBarClicked.connect(lambda x: self.setCurrentIndex(0) if x == 0 else None) - self.game_list = shared.api_results.game_list - self.dlcs = shared.api_results.dlcs - self.bit32 = shared.api_results.bit32_games - self.mac_games = shared.api_results.mac_games - self.no_assets = shared.api_results.no_asset_games self.no_asset_names = [] if not shared.args.offline: for game in self.no_assets: @@ -262,7 +263,6 @@ class GamesTab(QStackedWidget, Ui_GamesTab): w.setVisible(True) def update_list(self, app_name=None): - print(app_name) if app_name: if widgets := self.widgets.get(app_name): diff --git a/rare/components/tabs/games/game_info/__init__.py b/rare/components/tabs/games/game_info/__init__.py index ab59db92..e1e2bd8f 100644 --- a/rare/components/tabs/games/game_info/__init__.py +++ b/rare/components/tabs/games/game_info/__init__.py @@ -4,19 +4,19 @@ from PyQt5.QtWidgets import QWidget, QTabWidget from qtawesome import icon from legendary.models.game import Game +from rare import shared from rare.components.tabs.games.game_info.game_dlc import GameDlc from rare.components.tabs.games.game_info.game_info import GameInfo from rare.components.tabs.games.game_info.game_settings import GameSettings from rare.utils.extra_widgets import SideTabBar -from rare.utils.models import Signals class InfoTabs(QTabWidget): - def __init__(self, core, signals: Signals, parent): + def __init__(self, dlcs: list, parent): super(InfoTabs, self).__init__(parent=parent) self.app_name = "" - self.core = core - self.signals = signals + self.core = shared.legendary_core + self.signals = shared.signals self.setTabBar(SideTabBar()) self.setTabPosition(QTabWidget.West) @@ -26,11 +26,12 @@ class InfoTabs(QTabWidget): self.info = GameInfo(self.core, self.signals, self) self.addTab(self.info, self.tr("Information")) - self.settings = GameSettings(core, self) + self.settings = GameSettings(self.core, self) self.addTab(self.settings, self.tr("Settings")) self.tabBar().setCurrentIndex(1) - self.dlc = GameDlc(core, self.signals, self) + self.dlc_list = dlcs + self.dlc = GameDlc(self.dlc_list, self) self.addTab(self.dlc, self.tr("Downloadable Content")) def update_game(self, game: Game, dlcs: list): @@ -39,14 +40,11 @@ class InfoTabs(QTabWidget): self.settings.update_game(game) # DLC Tab: Disable if no dlcs available - if dlcs: - if len(dlcs[game.asset_info.catalog_item_id]) == 0: - self.setTabEnabled(3, False) - else: - self.setTabEnabled(3, True) - self.dlc.update_dlcs(game.app_name, dlcs) - else: + if len(self.dlc_list[game.asset_info.catalog_item_id]) == 0: self.setTabEnabled(3, False) + else: + self.setTabEnabled(3, True) + self.dlc.update_dlcs(game.app_name) def keyPressEvent(self, e: QKeyEvent): if e.key() == Qt.Key_Escape: diff --git a/rare/components/tabs/games/game_info/game_dlc.py b/rare/components/tabs/games/game_info/game_dlc.py index 955e2965..694e08b7 100644 --- a/rare/components/tabs/games/game_info/game_dlc.py +++ b/rare/components/tabs/games/game_info/game_dlc.py @@ -1,11 +1,13 @@ from PyQt5.QtCore import pyqtSignal from PyQt5.QtWidgets import QFrame, QWidget, QMessageBox -from legendary.core import LegendaryCore from legendary.models.game import Game +from rare import shared +from rare.components.dialogs.uninstall_dialog import UninstallDialog 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.utils.models import Signals, InstallOptionsModel +from rare.utils import legendary_utils +from rare.utils.models import InstallOptionsModel from rare.utils.utils import get_pixmap @@ -13,21 +15,22 @@ class GameDlc(QWidget, Ui_GameDlc): install_dlc = pyqtSignal(str, bool) game: Game - def __init__(self, core: LegendaryCore, signals: Signals, parent=None): + def __init__(self, dlcs: list, parent=None): super(GameDlc, self).__init__(parent=parent) self.setupUi(self) self.available_dlc_scroll.setObjectName("noborder") self.installed_dlc_scroll.setObjectName("noborder") + self.signals = shared.signals + self.core = shared.legendary_core - self.signals = signals - self.core = core - self.installed_dlcs = list() + self.dlcs = dlcs self.installed_dlc_widgets = list() self.available_dlc_widgets = list() - def update_dlcs(self, app_name, dlcs: list): + def update_dlcs(self, app_name): self.game = self.core.get_game(app_name) + dlcs = self.dlcs[self.game.asset_info.catalog_item_id] self.game_title.setText(f"