From 4653e519f9bea6c206fc56de7a32cecaff18c45a Mon Sep 17 00:00:00 2001 From: Dummerle Date: Wed, 14 Apr 2021 15:14:06 +0200 Subject: [PATCH] Add timer to start from other inctance --- rare/__main__.py | 10 ++++++++++ rare/components/main_window.py | 28 ++++++++++++++++++++++++++-- 2 files changed, 36 insertions(+), 2 deletions(-) diff --git a/rare/__main__.py b/rare/__main__.py index 4fb7217e..f2645432 100644 --- a/rare/__main__.py +++ b/rare/__main__.py @@ -1,3 +1,4 @@ +import os from argparse import ArgumentParser from rare import __version__ from rare.utils import singleton @@ -22,6 +23,15 @@ def main(): me = singleton.SingleInstance() except singleton.SingleInstanceException: print("Rare is already running") + + with open(os.path.expanduser("~/.cache/rare/lockfile"), "w") as file: + if args.subparser == "launch": + file.write("launch " + args.app_name) + else: + print("write start") + file.write("start") + file.close() + exit(0) from rare.app import start diff --git a/rare/components/main_window.py b/rare/components/main_window.py index ddfbeb27..9f641c34 100644 --- a/rare/components/main_window.py +++ b/rare/components/main_window.py @@ -1,6 +1,7 @@ +import os from logging import getLogger -from PyQt5.QtCore import QSettings +from PyQt5.QtCore import QSettings, QTimer from PyQt5.QtGui import QCloseEvent from PyQt5.QtWidgets import QMainWindow, QMessageBox @@ -40,7 +41,6 @@ class MainWindow(QMainWindow): if game != ("", 0): self.rpc.set_discord_rpc(game[0]) # Appname - self.show() if args.subparser == "launch": logger.info("Launching " + self.core.get_installed_game(args.app_name).title) if args.app_name in self.tab_widget.games_tab.default_widget.game_list.widgets.keys(): @@ -48,6 +48,30 @@ class MainWindow(QMainWindow): else: logger.info(f"Could not find {args.app_name} in Games") + self.timer = QTimer() + self.timer.timeout.connect(self.timer_finished) + self.timer.start(1000) + + self.show() + + def timer_finished(self): + file_path = os.path.expanduser("~/.cache/rare/lockfile") + if os.path.exists(file_path): + file = open(file_path, "r") + action = file.read() + file.close() + if action.startswith("launch"): + game = action.replace("launch ", "").replace("\n", "") + if game in self.tab_widget.games_tab.default_widget.game_list.widgets.keys(): + self.tab_widget.games_tab.default_widget.game_list.widgets[game][1].launch() + else: + logger.info(f"Could not find {game} in Games") + + elif action.startswith("start"): + self.show() + os.remove(file_path) + self.timer.start(1000) + def closeEvent(self, e: QCloseEvent): if self.settings.value("sys_tray", True, bool): self.hide()