From 9ca39d94ab80b9552311c83dd696635f8f4ef727 Mon Sep 17 00:00:00 2001 From: loathingKernel <142770+loathingKernel@users.noreply.github.com> Date: Wed, 28 Dec 2022 19:55:15 +0200 Subject: [PATCH] GlobalSignals: Reorganize signals into groups Signed-off-by: loathingKernel <142770+loathingKernel@users.noreply.github.com> --- rare/components/main_window.py | 2 +- rare/components/tabs/__init__.py | 4 +- rare/components/tabs/downloads/__init__.py | 8 +-- .../tabs/downloads/download_thread.py | 2 +- .../tabs/games/integrations/eos_group.py | 6 +-- .../tabs/games/integrations/import_group.py | 2 +- rare/components/tabs/settings/debug.py | 2 +- .../components/tabs/settings/widgets/linux.py | 2 +- rare/components/tabs/settings/widgets/rpc.py | 2 +- rare/models/signals.py | 54 +++++++++++++------ rare/shared/game_utils.py | 2 +- rare/utils/rpc.py | 4 +- 12 files changed, 56 insertions(+), 34 deletions(-) diff --git a/rare/components/main_window.py b/rare/components/main_window.py index 384e923d..a6aee0fd 100644 --- a/rare/components/main_window.py +++ b/rare/components/main_window.py @@ -68,7 +68,7 @@ class MainWindow(QMainWindow): self.tray_icon.show_app.connect(self.show) self.tray_icon.activated.connect(lambda r: self.toggle() if r == self.tray_icon.DoubleClick else None) - self.signals.send_notification.connect( + self.signals.application.notify.connect( lambda title: self.tray_icon.showMessage( self.tr("Download finished"), self.tr("Download finished. {} is playable now").format(title), diff --git a/rare/components/tabs/__init__.py b/rare/components/tabs/__init__.py index c01448cf..7686eb21 100644 --- a/rare/components/tabs/__init__.py +++ b/rare/components/tabs/__init__.py @@ -72,10 +72,10 @@ class TabWidget(QTabWidget): ) # Signals # set current index - self.signals.set_main_tab_index.connect(self.setCurrentIndex) + # self.signals.set_main_tab_index.connect(self.setCurrentIndex) # update dl tab text - self.signals.update_download_tab_text.connect(self.update_dl_tab_text) + self.signals.download.update_tab.connect(self.update_dl_tab_text) # Open game list on click on Games tab button self.tabBarClicked.connect(self.mouse_clicked) diff --git a/rare/components/tabs/downloads/__init__.py b/rare/components/tabs/downloads/__init__.py index 012e9dba..21bf744b 100644 --- a/rare/components/tabs/downloads/__init__.py +++ b/rare/components/tabs/downloads/__init__.py @@ -118,7 +118,7 @@ class DownloadsTab(QWidget, Ui_DownloadsTab): if len(self.update_widgets) == 0: self.update_text.setVisible(True) - self.signals.update_download_tab_text.emit() + self.signals.download.update_tab.emit() def update_dl_queue(self, dl_queue): self.dl_queue = dl_queue @@ -180,9 +180,9 @@ class DownloadsTab(QWidget, Ui_DownloadsTab): ): self.remove_update(game.app_name) - self.signals.send_notification.emit(game.app_title) + self.signals.application.notify.emit(game.app_title) self.signals.game.installed.emit([game.app_name]) - self.signals.update_download_tab_text.emit() + self.signals.download.update_tab.emit() self.signals.progress.finished.emit(game.app_name, True) @@ -244,7 +244,7 @@ class DownloadsTab(QWidget, Ui_DownloadsTab): if w := self.update_widgets.get(download_item.options.app_name): w.update_button.setDisabled(True) w.update_with_settings.setDisabled(True) - self.signals.set_main_tab_index.emit(1) + # self.signals.set_main_tab_index.emit(1) else: if w := self.update_widgets.get(download_item.options.app_name): w.update_button.setDisabled(False) diff --git a/rare/components/tabs/downloads/download_thread.py b/rare/components/tabs/downloads/download_thread.py index 35a43a49..6e25cdd2 100644 --- a/rare/components/tabs/downloads/download_thread.py +++ b/rare/components/tabs/downloads/download_thread.py @@ -87,7 +87,7 @@ class DownloadThread(QThread): ret.ret_code = ret.ReturnCode.FINISHED if self.item.options.overlay: - self.signals.overlay_installation_finished.emit() + self.signals.application.overlay_installed.emit() self.core.finish_overlay_install(self.item.download.igame) self.ret_status.emit(ret) return diff --git a/rare/components/tabs/games/integrations/eos_group.py b/rare/components/tabs/games/integrations/eos_group.py index 30f7a034..e9feb511 100644 --- a/rare/components/tabs/games/integrations/eos_group.py +++ b/rare/components/tabs/games/integrations/eos_group.py @@ -57,8 +57,8 @@ class EOSGroup(QGroupBox, Ui_EosWidget): self.update_button.setVisible(False) self.overlay = self.core.lgd.get_overlay_install_info() - self.signals.overlay_installation_finished.connect(self.overlay_installation_finished) - self.signals.wine_prefix_updated.connect(self.update_prefixes) + self.signals.application.overlay_installed.connect(self.overlay_installation_finished) + self.signals.application.prefix_updated.connect(self.update_prefixes) self.update_check_button.clicked.connect(self.check_for_update) self.install_button.clicked.connect(self.install_overlay) @@ -221,7 +221,7 @@ class EOSGroup(QGroupBox, Ui_EosWidget): options = InstallOptionsModel(app_name="", base_path=base_path, platform="Windows", overlay=True) - self.signals.install_game.emit(options) + self.signals.game.install.emit(options) def uninstall_overlay(self): if not self.core.is_overlay_installed(): diff --git a/rare/components/tabs/games/integrations/import_group.py b/rare/components/tabs/games/integrations/import_group.py index 36437015..041ed8f4 100644 --- a/rare/components/tabs/games/integrations/import_group.py +++ b/rare/components/tabs/games/integrations/import_group.py @@ -285,7 +285,7 @@ class ImportGroup(QGroupBox): if igame and igame.version != self.core.get_asset(igame.app_name, igame.platform, False).build_version: # update available self.signals.download.enqueue_game.emit(igame.app_name) - self.signals.update_download_tab_text.emit() + self.signals.download.update_tab.emit() if len(result) == 1: res = result[0] diff --git a/rare/components/tabs/settings/debug.py b/rare/components/tabs/settings/debug.py index 4677d3f5..e1d1c256 100644 --- a/rare/components/tabs/settings/debug.py +++ b/rare/components/tabs/settings/debug.py @@ -13,7 +13,7 @@ class DebugSettings(QWidget): self.raise_runtime_exception_button.clicked.connect(self.raise_exception) self.restart_button = QPushButton("Restart") self.layout().addWidget(self.restart_button) - self.restart_button.clicked.connect(lambda: GlobalSignalsSingleton().exit_app.emit(-133742)) + self.restart_button.clicked.connect(lambda: GlobalSignalsSingleton().application.quit.emit(-133742)) self.layout().addStretch(1) diff --git a/rare/components/tabs/settings/widgets/linux.py b/rare/components/tabs/settings/widgets/linux.py index 104fcf00..698ef6f2 100644 --- a/rare/components/tabs/settings/widgets/linux.py +++ b/rare/components/tabs/settings/widgets/linux.py @@ -68,7 +68,7 @@ class LinuxSettings(QWidget, Ui_LinuxSettings): def save_prefix(self, text: str): self.save_setting(text, f"{self.name}.env", "WINEPREFIX") self.save_setting(text, self.name, "wine_prefix") - self.signals.wine_prefix_updated.emit() + self.signals.application.prefix_updated.emit() def load_setting(self, section: str, setting: str, fallback: str = str()): return self.core.lgd.config.get(section, setting, fallback=fallback) diff --git a/rare/components/tabs/settings/widgets/rpc.py b/rare/components/tabs/settings/widgets/rpc.py index 4d0ece9b..3d2ad312 100644 --- a/rare/components/tabs/settings/widgets/rpc.py +++ b/rare/components/tabs/settings/widgets/rpc.py @@ -39,4 +39,4 @@ class RPCSettings(QGroupBox, Ui_RPCSettings): def changed(self, i): self.settings.setValue("rpc_enable", i) - self.signals.rpc_settings_updated.emit() + self.signals.discord_rpc.apply_settings.emit() diff --git a/rare/models/signals.py b/rare/models/signals.py index 3524a89b..33f0cea4 100644 --- a/rare/models/signals.py +++ b/rare/models/signals.py @@ -3,12 +3,20 @@ from PyQt5.QtCore import QObject, pyqtSignal from .install import InstallOptionsModel -class GlobalSignals(QObject): - exit_app = pyqtSignal(int) # exit code - send_notification = pyqtSignal(str) # app_title +class GlobalSignals: - set_main_tab_index = pyqtSignal(int) # tab index - update_download_tab_text = pyqtSignal() + # set_main_tab_index = pyqtSignal(int) # tab index + # update_gamelist = pyqtSignal(list) + + class ApplicationSignals(QObject): + # int: exit code + quit = pyqtSignal(int) + # str: app_title + notify = pyqtSignal(str) + # none + prefix_updated = pyqtSignal() + # none + overlay_installed = pyqtSignal() class ProgressSignals(QObject): # str: app_name @@ -17,29 +25,43 @@ class GlobalSignals(QObject): value = pyqtSignal(str, int) # str: app_name, bool: stopped finished = pyqtSignal(str, bool) - progress = ProgressSignals() class GameSignals(QObject): install = pyqtSignal(InstallOptionsModel) - # list of app_name + # list: app_name installed = pyqtSignal(list) # str: app_name uninstalled = pyqtSignal(str) # str: app_name verified = pyqtSignal(str) - game = GameSignals() class DownloadSignals(QObject): # str: app_name enqueue_game = pyqtSignal(str) - download = DownloadSignals() + # none + update_tab = pyqtSignal() - overlay_installation_finished = pyqtSignal() + class DiscordRPCSignals(QObject): + # str: app_title + set_title = pyqtSignal(str) + # none + apply_settings = pyqtSignal() - # update_gamelist = pyqtSignal(list) - # game_uninstalled = pyqtSignal(str) + def __init__(self): + self.application = GlobalSignals.ApplicationSignals() + self.progress = GlobalSignals.ProgressSignals() + self.game = GlobalSignals.GameSignals() + self.download = GlobalSignals.DownloadSignals() + self.discord_rpc = GlobalSignals.DiscordRPCSignals() - set_discord_rpc = pyqtSignal(str) # app_name of running game - rpc_settings_updated = pyqtSignal() - - wine_prefix_updated = pyqtSignal() + def deleteLater(self): + self.application.deleteLater() + del self.application + self.progress.deleteLater() + del self.progress + self.game.deleteLater() + del self.game + self.download.deleteLater() + del self.download + self.discord_rpc.deleteLater() + del self.discord_rpc \ No newline at end of file diff --git a/rare/shared/game_utils.py b/rare/shared/game_utils.py index dfae68d9..0accbf0f 100644 --- a/rare/shared/game_utils.py +++ b/rare/shared/game_utils.py @@ -293,7 +293,7 @@ class GameUtils(QObject): self.finished.emit(app_name, "") logger.info(f"Game exited with exit code: {exit_code}") - self.signals.set_discord_rpc.emit("") + self.signals.discord_rpc.set_title.emit("") is_origin = self.core.get_game(app_name).third_party_store == "Origin" if exit_code == 1 and is_origin: msg_box = QMessageBox() diff --git a/rare/utils/rpc.py b/rare/utils/rpc.py index f6fd90e7..ca2e0202 100644 --- a/rare/utils/rpc.py +++ b/rare/utils/rpc.py @@ -25,8 +25,8 @@ class DiscordRPC(QObject): self.state = 2 self.set_discord_rpc() - self.signals.set_discord_rpc.connect(self.update_presence) - self.signals.rpc_settings_updated.connect(self.changed_settings) + self.signals.discord_rpc.set_title.connect(self.update_presence) + self.signals.discord_rpc.apply_settings.connect(self.changed_settings) def update_presence(self, app_name): self.set_discord_rpc(app_name)