From f0ff1524e5ec51af9e5f3990fbf6421c9312df7c Mon Sep 17 00:00:00 2001 From: Dummerle Date: Mon, 22 Feb 2021 18:50:00 +0100 Subject: [PATCH] Base for Game info --- Rare/Components/TabWidget.py | 8 ++--- Rare/Components/Tabs/Games/GameInfo.py | 31 +++++++++++++++++++ Rare/Components/Tabs/Games/GameList.py | 7 +++-- .../Tabs/Games/GameWidgetInstalled.py | 3 ++ Rare/Components/Tabs/Games/GamesTab.py | 23 ++++++++++++-- Rare/Main.py | 4 +-- 6 files changed, 64 insertions(+), 12 deletions(-) create mode 100644 Rare/Components/Tabs/Games/GameInfo.py diff --git a/Rare/Components/TabWidget.py b/Rare/Components/TabWidget.py index 2e286f20..79b828e1 100644 --- a/Rare/Components/TabWidget.py +++ b/Rare/Components/TabWidget.py @@ -5,7 +5,7 @@ from legendary.core import LegendaryCore from Rare import style_path from Rare.Components.Tabs.Account.AccountWidget import MiniWidget from Rare.Components.Tabs.Downloads.DownloadTab import DownloadTab -from Rare.Components.Tabs.Games.GamesTab import Games +from Rare.Components.Tabs.Games.GamesTab import GameTab from Rare.Components.Tabs.Settings.SettingsTab import SettingsTab @@ -14,12 +14,12 @@ class TabWidget(QTabWidget): super(TabWidget, self).__init__() self.setTabBar(TabBar(2)) self.settings = SettingsTab(core) - self.game_list = Games(core) + self.game_list = GameTab(core) self.addTab(self.game_list, self.tr("Games")) self.downloadTab = DownloadTab(core) self.addTab(self.downloadTab, "Downloads") - self.downloadTab.finished.connect(self.game_list.game_list.update_list) - self.game_list.game_list.install_game.connect(lambda x: self.downloadTab.install_game(x)) + self.downloadTab.finished.connect(self.game_list.default_widget.game_list.update_list) + self.game_list.default_widget.game_list.install_game.connect(lambda x: self.downloadTab.install_game(x)) # Space Tab self.addTab(QWidget(), "") self.setTabEnabled(2, False) diff --git a/Rare/Components/Tabs/Games/GameInfo.py b/Rare/Components/Tabs/Games/GameInfo.py new file mode 100644 index 00000000..f162c47e --- /dev/null +++ b/Rare/Components/Tabs/Games/GameInfo.py @@ -0,0 +1,31 @@ +from PyQt5.QtWidgets import QWidget, QPushButton, QVBoxLayout, QLabel +from legendary.core import LegendaryCore +from legendary.models.game import InstalledGame, Game + + +class GameInfo(QWidget): + igame: InstalledGame + game: Game + + def __init__(self, core: LegendaryCore): + super(GameInfo, self).__init__() + self.core = core + self.app_name = "" + self.layout = QVBoxLayout() + self.back_button = QPushButton("Back") + self.layout.addWidget(self.back_button) + + # TODO More Information: Image text settings needs_verification platform + + self.game_title = QLabel("Error") + self.layout.addWidget(self.game_title) + + + + self.setLayout(self.layout) + + def update_game(self, app_name): + self.game = self.core.get_game(app_name) + self.igame = self.core.get_installed_game(app_name) + + self.game_title.setText(self.game.app_title) \ No newline at end of file diff --git a/Rare/Components/Tabs/Games/GameList.py b/Rare/Components/Tabs/Games/GameList.py index c63b50f5..57455b0b 100644 --- a/Rare/Components/Tabs/Games/GameList.py +++ b/Rare/Components/Tabs/Games/GameList.py @@ -9,6 +9,7 @@ from Rare.utils.QtExtensions import FlowLayout class GameList(QScrollArea): install_game = pyqtSignal(dict) + show_game_info = pyqtSignal(str) def __init__(self, core: LegendaryCore): super(GameList, self).__init__() @@ -21,10 +22,9 @@ class GameList(QScrollArea): self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) self.init_ui() - def init_ui(self): self.widget = QWidget() - self.widgets=[] + self.widgets = [] self.layout = FlowLayout() # Installed Games for game in sorted(self.core.get_installed_list(), key=lambda x: x.title): @@ -32,6 +32,7 @@ class GameList(QScrollArea): widget = GameWidgetInstalled(self.core, game) self.layout.addWidget(widget) widget.update_list.connect(self.update_list) + widget.show_info.connect(lambda app_name: self.show_game_info.emit(app_name)) uninstalled_games = [] installed = [i.app_name for i in self.core.get_installed_list()] @@ -65,4 +66,4 @@ class GameList(QScrollArea): print("Updating List") self.setWidget(QWidget()) self.init_ui() - self.update() \ No newline at end of file + self.update() diff --git a/Rare/Components/Tabs/Games/GameWidgetInstalled.py b/Rare/Components/Tabs/Games/GameWidgetInstalled.py index 3e7fcc81..c3b0eec6 100644 --- a/Rare/Components/Tabs/Games/GameWidgetInstalled.py +++ b/Rare/Components/Tabs/Games/GameWidgetInstalled.py @@ -16,6 +16,7 @@ logger = getLogger("GameWidgetInstalled") class GameWidgetInstalled(QWidget): update_list = pyqtSignal() + show_info = pyqtSignal(str) def __init__(self, core: LegendaryCore, game: InstalledGame): super(GameWidgetInstalled, self).__init__() @@ -108,6 +109,8 @@ class GameWidgetInstalled(QWidget): logger.info("Uninstalling " + self.game.title) self.core.uninstall_game(self.game) self.update_list.emit() + elif action == "info": + self.show_info.emit(self.game.app_name) class Menu(QMenu): diff --git a/Rare/Components/Tabs/Games/GamesTab.py b/Rare/Components/Tabs/Games/GamesTab.py index 07470c77..2678905b 100644 --- a/Rare/Components/Tabs/Games/GamesTab.py +++ b/Rare/Components/Tabs/Games/GamesTab.py @@ -1,8 +1,27 @@ -from PyQt5.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QCheckBox, QLineEdit, QLabel, QPushButton, QStyle +from PyQt5.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QCheckBox, QLineEdit, QLabel, QPushButton, QStyle, \ + QStackedLayout +from Rare.Components.Tabs.Games.GameInfo import GameInfo from Rare.Components.Tabs.Games.GameList import GameList +class GameTab(QWidget): + def __init__(self, core): + super(GameTab, self).__init__() + self.layout = QStackedLayout() + self.default_widget = Games(core) + self.default_widget.game_list.show_game_info.connect(self.show_info) + self.layout.addWidget(self.default_widget) + self.game_info = GameInfo(core) + self.game_info.back_button.clicked.connect(lambda: self.layout.setCurrentIndex(0)) + self.layout.addWidget(self.game_info) + self.setLayout(self.layout) + + def show_info(self, app_name): + self.game_info.update_game(app_name) + self.layout.setCurrentIndex(1) + + class Games(QWidget): def __init__(self, core): super(Games, self).__init__() @@ -45,7 +64,7 @@ class GameListHeadBar(QWidget): self.view = QCheckBox("Icon view") self.layout.addWidget(self.view) self.refresh_list = QPushButton() - self.refresh_list.setIcon(self.style().standardIcon(getattr(QStyle, "SP_BrowserReload"))) # Reload icon + self.refresh_list.setIcon(self.style().standardIcon(getattr(QStyle, "SP_BrowserReload"))) # Reload icon self.layout.addWidget(self.refresh_list) self.setLayout(self.layout) diff --git a/Rare/Main.py b/Rare/Main.py index 65450f35..905e5553 100644 --- a/Rare/Main.py +++ b/Rare/Main.py @@ -4,7 +4,6 @@ import sys from PyQt5.QtCore import QTranslator, QSettings from PyQt5.QtWidgets import QApplication - from legendary.core import LegendaryCore from Rare import style_path, lang_path @@ -25,7 +24,7 @@ def main(): settings = QSettings() # Translator translator = QTranslator() - lang = settings.value("language",get_lang() , type=str) + lang = settings.value("language", get_lang(), type=str) if os.path.exists(lang_path + lang + ".qm"): translator.load(lang_path + lang + ".qm") @@ -35,7 +34,6 @@ def main(): # Style app.setStyleSheet(open(style_path + "RareStyle.qss").read()) - launch_dialog = LaunchDialog(core) launch_dialog.exec_() mainwindow = MainWindow(core)