1
0
Fork 0
mirror of synced 2024-06-02 18:54:41 +12:00

Update new Signal System

This commit is contained in:
Dummerle 2021-10-14 23:05:00 +02:00
parent 746aa671e0
commit 4f25fd8a20
16 changed files with 146 additions and 147 deletions

View file

@ -9,6 +9,7 @@ import qtawesome
from PyQt5.QtCore import QSettings, QTranslator
from PyQt5.QtGui import QIcon, QPalette
from PyQt5.QtWidgets import QApplication, QSystemTrayIcon, QStyleFactory, QMessageBox
from requests import HTTPError
from legendary.core import LegendaryCore
from rare import languages_path, resources_path, cache_dir
@ -29,6 +30,17 @@ logger = logging.getLogger("Rare")
def excepthook(exc_type, exc_value, exc_tb):
tb = "".join(traceback.format_exception(exc_type, exc_value, exc_tb))
print("Error")
if exc_tb == HTTPError:
try:
if shared.legendary_core.login():
return
else:
raise ValueError
except Exception as e:
logger.fatal(str(e))
QMessageBox.warning(None, "Error", QApplication.tr("Failed to login"))
QApplication.exit(1)
return
logger.fatal(tb)
QMessageBox.warning(None, "Error", tb)
QApplication.exit(1)
@ -74,7 +86,15 @@ class App(QApplication):
self.settings = QSettings()
self.signals = shared.init_signals()
self.signals.app.connect(lambda x: self.handle_signal(*x))
self.signals.exit_app.connect(self.exit)
self.signals.send_notification.connect(
lambda title:
self.tray_icon.showMessage(
self.tr("Download finished"),
self.tr("Download finished. {} is playable now").format(title),
QSystemTrayIcon.Information, 4000)
if self.settings.value("notification", True, bool) else None)
# Translator
self.translator = QTranslator()
@ -135,17 +155,6 @@ class App(QApplication):
if not self.args.silent:
self.mainwindow.show()
def handle_signal(self, action, data):
if action == self.signals.actions.quit_app:
self.exit_app(data)
elif action == self.signals.actions.installation_finished:
# data: (notification, app_title)
if self.settings.value("notification", True, bool):
self.tray_icon.showMessage(
self.tr("Download finished"),
self.tr("Download finished. {} is playable now").format(data),
QSystemTrayIcon.Information, 4000)
def tray(self, reason):
if reason == QSystemTrayIcon.DoubleClick:
self.mainwindow.show()

View file

@ -21,7 +21,6 @@ class MainWindow(QMainWindow):
self.core = shared.legendary_core
self.signals = shared.signals
self.signals.main_window.connect(lambda x: self.handle_signal(*x))
self.offline = shared.args.offline
width, height = 1200, 800
@ -35,11 +34,7 @@ class MainWindow(QMainWindow):
self.tab_widget = TabWidget(self)
self.setCentralWidget(self.tab_widget)
if not shared.args.offline:
self.rpc = DiscordRPC(shared.legendary_core)
# Discord RPC on game launch
# self.tab_widget.games_tab.default_widget.game_list.game_started.connect(
# lambda: self.rpc.set_discord_rpc(self.tab_widget.games_tab.default_widget.game_list.running_games[0]))
# Remove RPC
self.rpc = DiscordRPC()
self.tab_widget.delete_presence.connect(self.rpc.set_discord_rpc)
# Show RPC on changed rare_settings
self.tab_widget.settings.rare_settings.rpc.update_settings.connect(

View file

@ -35,4 +35,4 @@ class MiniWidget(QWidget):
if reply == QMessageBox.Yes:
self.core.lgd.invalidate_userdata()
self.signals.app.emit((self.signals.actions.quit_app, -133742)) # restart exit code
self.signals.exit_app.emit(-133742) # restart exit code

View file

@ -32,13 +32,9 @@ class SyncSaves(QScrollArea):
super(SyncSaves, self).__init__()
self.core = shared.legendary_core
self.signals = shared.signals
self.signals.cloud_saves.connect(self.signal_received)
self.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
self.load_saves()
def signal_received(self, action, data):
pass
def load_saves(self, app_name=None, auto=False):
self.widget = QWidget()
layout = QVBoxLayout()

View file

@ -20,7 +20,7 @@ logger = getLogger("Download")
class DownloadTab(QWidget):
thread: QThread
dl_queue = []
dl_queue = list()
dl_status = pyqtSignal(int)
def __init__(self, updates: list):
@ -30,7 +30,6 @@ class DownloadTab(QWidget):
self.active_game: Game = None
self.analysis = None
self.signals = shared.signals
self.signals.dl_tab.connect(lambda x: self.signal_received(*x))
self.info_layout = QGridLayout()
self.installing_game = QLabel(self.tr("No active Download"))
@ -82,9 +81,7 @@ class DownloadTab(QWidget):
self.setLayout(self.layout)
def signal_received(self, action, data):
if action == self.signals.actions.install_game:
self.get_install_options(data)
self.signals.install_game.connect(self.get_install_options)
def add_update(self, igame: InstalledGame):
widget = UpdateWidget(self.core, igame, self)
@ -121,7 +118,7 @@ class DownloadTab(QWidget):
self.analysis = queue_item.download.analysis
self.installing_game.setText(self.tr("Installing Game: ") + self.active_game.app_title)
self.signals.games_tab.emit((self.signals.actions.start_installation, self.active_game))
self.signals.installation_started.emit(self.active_game)
def status(self, text):
if text == "dl_finished":
@ -145,10 +142,12 @@ class DownloadTab(QWidget):
if len(self.update_widgets) == 0:
self.update_text.setVisible(True)
self.signals.app.emit((self.signals.actions.installation_finished, game.app_title))
self.signals.games_tab.emit((self.signals.actions.installation_finished, (game.app_name, True)))
self.signals.tab_widget.emit(
(self.signals.actions.set_dl_tab_text, len(self.dl_queue) + len(self.update_widgets.keys())))
self.signals.send_notification.emit(game.app_title)
self.signals.update_gamelist.emit(game.app_name)
self.signals.update_download_tab_text.emit()
self.signals.installation_finished.emit(True, game.app_name)
self.reset_infos()
if len(self.dl_queue) != 0:
@ -161,8 +160,7 @@ class DownloadTab(QWidget):
elif text == "stop":
self.reset_infos()
self.signals.games_tab.emit(
(self.signals.actions.installation_finished, (self.active_game.app_name, False)))
self.signals.installation_finished.emit(False, self.active_game.app_name)
self.active_game = None
if self.dl_queue:
self.start_installation(self.dl_queue[0])
@ -185,8 +183,7 @@ class DownloadTab(QWidget):
self.downloaded.setText(
self.tr("Downloaded") + f": {get_size(ui_update.total_downloaded)} / {get_size(self.analysis.dl_size)}")
self.time_left.setText(self.tr("Time left: ") + self.get_time(ui_update.estimated_time_left))
self.signals.games_tab.emit(
(self.signals.actions.dl_status, int(100 * ui_update.total_downloaded / self.analysis.dl_size)))
self.signals.dl_progress.emit(int(100 * ui_update.total_downloaded / self.analysis.dl_size))
def get_time(self, seconds: int) -> str:
return str(datetime.timedelta(seconds=seconds))
@ -194,7 +191,7 @@ class DownloadTab(QWidget):
def on_install_dialog_closed(self, download_item: InstallQueueItemModel):
if download_item:
self.install_game(download_item)
self.signals.tab_widget.emit((self.signals.actions.set_index, 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)

View file

@ -1,9 +1,10 @@
from logging import getLogger
from PyQt5.QtCore import pyqtSignal, QSettings, QObjectCleanupHandler
from PyQt5.QtCore import QSettings, QObjectCleanupHandler
from PyQt5.QtWidgets import QStackedWidget, QVBoxLayout, QWidget
import rare.shared as shared
from legendary.models.game import Game, InstalledGame
from rare.components.dialogs.uninstall_dialog import UninstallDialog
from rare.components.tabs.games.game_info import GameInfoTabs
from rare.components.tabs.games.game_info.uninstalled_info import UninstalledInfoTabs
@ -27,8 +28,6 @@ logger = getLogger("GamesTab")
class GamesTab(QStackedWidget, Ui_GamesTab):
widgets = {}
running_games = []
game_exited = pyqtSignal(str)
game_started = pyqtSignal(str)
updates = set()
def __init__(self):
@ -36,7 +35,6 @@ class GamesTab(QStackedWidget, Ui_GamesTab):
self.setupUi(self)
self.core = shared.legendary_core
self.signals = shared.signals
self.signals.games_tab.connect(lambda x: self.signal_received(*x))
self.settings = QSettings()
self.game_list = shared.api_results.game_list
@ -85,30 +83,32 @@ class GamesTab(QStackedWidget, Ui_GamesTab):
self.filter(self.head_bar.available_filters[self.settings.value("filter", 0, int)])
def signal_received(self, action, data):
if action == self.signals.actions.dl_status:
self.installing_widget.set_status(data)
elif action == self.signals.actions.set_index:
self.setCurrentIndex(data)
elif action == self.signals.actions.start_installation:
self.installing_widget.set_game(data)
self.installing_widget.setVisible(True)
elif action == self.signals.actions.installation_finished:
if data[1]: # update list
self.update_list(data[0])
self.installing_widget.setVisible(False)
elif action == self.signals.actions.uninstall:
infos = UninstallDialog(data).get_information()
if infos == 0:
return
legendary_utils.uninstall(data.app_name, self.core, infos)
self.setCurrentIndex(0)
self.update_list(data.app_name)
elif action == self.signals.actions.verification_finished:
i_widget, l_widget = self.widgets[data.app_name]
i_widget.igame = data
l_widget.igame = data
i_widget.info_text = ""
# signals
self.signals.dl_progress.connect(self.installing_widget.set_status)
self.signals.installation_started.connect(self.installation_started)
self.signals.update_gamelist.connect(self.update_list)
self.signals.installation_finished.connect(lambda x: self.installing_widget.setVisible(False))
def installation_started(self, game: Game):
if game.is_dlc:
return
self.installing_widget.set_game(game)
self.installing_widget.setVisible(True)
def verification_finished(self, igame: InstalledGame):
# only if igame needs verification
i_widget, l_widget = self.widgets[igame.app_name]
i_widget.igame = igame
l_widget.igame = igame
i_widget.info_text = ""
def uninstall_game(self, game: Game):
infos = UninstallDialog(game).get_information()
if infos == 0:
return
legendary_utils.uninstall(game.app_name, self.core, infos)
self.setCurrentIndex(0)
self.update_list(game.app_name)
def show_game_info(self, game):
self.game_info_tabs.update_game(game, self.dlcs)
@ -224,16 +224,18 @@ class GamesTab(QStackedWidget, Ui_GamesTab):
self.widgets[app_name][0].info_text = self.tr("Sync CLoud saves")
self.widgets[app_name][0].info_label.setText(self.tr("Sync CLoud saves"))
self.widgets[app_name][1].info_label.setText(self.tr("Sync CLoud saves"))
self.game_exited.emit(app_name)
self.signals.set_discord_rpc.emit(None)
def launch(self, app_name):
self.running_games.append(app_name)
self.game_started.emit(app_name)
# self.game_started.emit(app_name)
self.widgets[app_name][0].info_text = self.tr("Game running")
self.widgets[app_name][0].info_label.setText(self.tr("Game running"))
self.widgets[app_name][1].launch_button.setDisabled(True)
self.widgets[app_name][1].launch_button.setText(self.tr("Game running"))
self.signals.set_discord_rpc.emit(app_name)
def search(self, text: str):
for t in self.widgets.values():
for w in t:

View file

@ -1,8 +1,8 @@
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QKeyEvent
from legendary.models.game import Game
import rare.shared as shared
from legendary.models.game import Game
from rare.utils.extra_widgets import SideTabWidget
from .game_dlc import GameDlc
from .game_info import GameInfo
@ -15,7 +15,7 @@ class GameInfoTabs(SideTabWidget):
self.core = shared.legendary_core
self.signals = shared.signals
self.info = GameInfo(self.core, self.signals, self)
self.info = GameInfo(self)
self.addTab(self.info, self.tr("Information"))
self.settings = GameSettings(self.core, self)

View file

@ -75,8 +75,7 @@ class GameDlc(QWidget, Ui_GameDlc):
self.game.app_title))
return
self.signals.dl_tab.emit(
(self.signals.actions.install_game, (InstallOptionsModel(app_name=app_name, update=True))))
self.signals.install_game.emit(InstallOptionsModel(app_name=app_name, update=True))
class GameDlcWidget(QFrame, Ui_GameDlcWidget):

View file

@ -1,13 +1,14 @@
import os
import platform
from PyQt5.QtCore import pyqtSignal
from PyQt5.QtWidgets import QWidget, QMessageBox
from legendary.core import LegendaryCore
from legendary.models.game import Game, InstalledGame
from rare import shared
from rare.ui.components.tabs.games.game_info.game_info import Ui_GameInfo
from rare.utils.legendary_utils import VerifyThread
from rare.utils.models import Signals, InstallOptionsModel
from rare.utils.models import InstallOptionsModel
from rare.utils.steam_grades import SteamWorker
from rare.utils.utils import get_size, get_pixmap
@ -16,12 +17,13 @@ class GameInfo(QWidget, Ui_GameInfo):
igame: InstalledGame
game: Game = None
verify_threads = dict()
verification_finished = pyqtSignal(InstalledGame)
def __init__(self, core: LegendaryCore, signals: Signals, parent):
def __init__(self, parent):
super(GameInfo, self).__init__(parent=parent)
self.setupUi(self)
self.core = core
self.signals = signals
self.core = shared.legendary_core
self.signals = shared.signals
if platform.system() == "Windows":
self.lbl_grade.setVisible(False)
@ -34,26 +36,18 @@ class GameInfo(QWidget, Ui_GameInfo):
self.install_button.setText(self.tr("Link to Origin/Launch"))
self.game_actions_stack.resize(self.game_actions_stack.minimumSize())
self.uninstall_button.clicked.connect(self.uninstall)
self.uninstall_button.clicked.connect(lambda: self.signals.uninstall_game.emit(self.game))
self.verify_button.clicked.connect(self.verify)
self.repair_button.clicked.connect(self.repair)
def uninstall(self):
# uninstall game
self.signals.games_tab.emit((self.signals.actions.uninstall, self.game))
# remove from update or dl_queue
self.signals.dl_tab.emit((self.signals.actions.uninstall, self.game))
def repair(self):
repair_file = os.path.join(self.core.lgd.get_tmp_path(), f'{self.game.app_name}.repair')
if not os.path.exists(repair_file):
QMessageBox.warning(self, "Warning", self.tr(
"Repair file does not exist or game does not need a repair. Please verify game first"))
return
self.signals.dl_tab.emit(
(self.signals.actions.install_game, InstallOptionsModel(app_name=self.game.app_name, repair=True,
base_path=self.igame.install_path)))
self.signals.install_game.emit(InstallOptionsModel(app_name=self.game.app_name, repair=True,
update=True))
def verify(self):
self.verify_widget.setCurrentIndex(1)
@ -70,22 +64,22 @@ class GameInfo(QWidget, Ui_GameInfo):
if progress[2] == self.game.app_name:
self.verify_progress.setValue(progress[0] * 100 / progress[1])
def finish_verify(self, failed):
failed, missing, app_name = failed
if failed == 0 and missing == 0:
def finish_verify(self, failed, missing, app_name):
if failed == missing == 0:
QMessageBox.information(self, "Summary",
"Game was verified successfully. No missing or corrupt files found")
self.igame.needs_verification = False
self.core.lgd.set_installed_game(self.igame.app_name, self.igame)
self.signals.games_tab.emit((self.signals.actions.verification_finished, self.igame))
igame = self.core.get_installed_game(app_name)
if igame.needs_verification:
igame.needs_verification = False
self.core.lgd.set_installed_game(self.igame.app_name, igame)
self.verification_finished.emit(igame)
else:
ans = QMessageBox.question(self, "Summary", self.tr(
'Verification failed, {} file(s) corrupted, {} file(s) are missing. Do you want to repair them?').format(
failed, missing), QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
if ans == QMessageBox.Yes:
self.signals.dl_tab.emit(
(self.signals.actions.install_game, InstallOptionsModel(app_name=self.game.app_name, repair=True,
base_path=self.igame.install_path)))
self.signals.install_game.emit(InstallOptionsModel(app_name=self.game.app_name, repair=True,
update=True))
self.verify_widget.setCurrentIndex(0)
self.verify_threads.pop(app_name)
@ -102,6 +96,7 @@ class GameInfo(QWidget, Ui_GameInfo):
self.app_name.setText(self.game.app_name)
self.version.setText(self.game.app_version)
self.dev.setText(self.game.metadata["developer"])
if self.igame:
self.install_size.setText(get_size(self.igame.install_size))
self.install_path.setText(self.igame.install_path)

View file

@ -3,9 +3,9 @@ import platform
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QKeyEvent
from PyQt5.QtWidgets import QWidget, QTreeView
from legendary.models.game import Game
import rare.shared as shared
from legendary.models.game import Game
from rare.ui.components.tabs.games.game_info.game_info import Ui_GameInfo
from rare.utils.extra_widgets import SideTabWidget
from rare.utils.json_formatter import QJsonModel
@ -75,7 +75,7 @@ class UninstalledInfo(QWidget, Ui_GameInfo):
self.game_actions_stack.resize(self.game_actions_stack.minimumSize())
def install_game(self):
self.signals.dl_tab.emit((self.signals.actions.install_game, InstallOptionsModel(app_name=self.game.app_name)))
self.signals.install_game.emit(InstallOptionsModel(app_name=self.game.app_name))
def update_game(self, game: Game):
self.game = game

View file

@ -32,6 +32,11 @@ class GameWidget(QWidget):
mini_layout = QHBoxLayout()
self.layout.addLayout(mini_layout)
if not json_info:
self.layout.addWidget(QLabel("An error occurred"))
self.setLayout(self.layout)
return
self.title_label = QLabel(json_info.get("title"))
self.title_label.setWordWrap(True)
mini_layout.addWidget(self.title_label)

View file

@ -26,7 +26,7 @@ class TabWidget(QTabWidget):
# Generate Tabs
self.games_tab = GamesTab()
self.addTab(self.games_tab, self.tr("Games"))
self.signals.tab_widget.connect(lambda x: self.handle_signal(*x))
if not shared.args.offline:
# updates = self.games_tab.default_widget.game_list.updates
self.downloadTab = DownloadTab(self.games_tab.updates)
@ -61,8 +61,13 @@ class TabWidget(QTabWidget):
"(!)" if self.settings.about.update_available else "")
# Signals
# set current index
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)
# imported
self.games_tab.import_widget.update_list.connect(self.game_imported)
# self.games_tab.import_widget.update_list.connect(self.game_imported)
if not shared.args.offline:
# install dlc
@ -74,7 +79,6 @@ class TabWidget(QTabWidget):
# Finished sync
self.cloud_saves.finished.connect(self.finished_sync)
# Game finished
self.games_tab.game_exited.connect(self.game_finished)
# Open game list on click on Games tab button
self.tabBarClicked.connect(self.mouse_clicked)
@ -86,11 +90,14 @@ class TabWidget(QTabWidget):
QShortcut("Alt+3", self).activated.connect(lambda: self.setCurrentIndex(2))
QShortcut("Alt+4", self).activated.connect(lambda: self.setCurrentIndex(5))
def handle_signal(self, action, data):
if action == self.signals.actions.set_index:
self.setCurrentIndex(data)
if action == self.signals.actions.set_dl_tab_text:
self.setTabText(1, "Downloads" + ((" (" + str(data) + ")") if data != 0 else ""))
def update_dl_tab_text(self):
num_downloads = len(set([i.options.app_name for i in self.downloadTab.dl_queue] + [i for i in
self.downloadTab.update_widgets.keys()]))
if num_downloads != 0:
self.setTabText(1, f"Downloads ({num_downloads})")
else:
self.setTabText(1, "Downloads")
def mouse_clicked(self, tab_num):
if tab_num == 0:
@ -108,13 +115,6 @@ class TabWidget(QTabWidget):
self.games_tab.update_list(app_name)
self.games_tab.setCurrentIndex(0)
# Sync game and delete dc rpc
def game_finished(self, app_name):
self.delete_presence.emit()
game = self.core.get_game(app_name)
if game and game.supports_cloud_saves:
self.cloud_saves.sync_game(app_name, True)
def resizeEvent(self, event):
self.tabBar().setMinimumWidth(self.width())
super(TabWidget, self).resizeEvent(event)

View file

@ -1,7 +1,7 @@
from argparse import Namespace
from legendary.core import LegendaryCore
from rare.utils.models import Signals, ApiResults
from rare.utils.models import ApiResults, Signals
legendary_core: LegendaryCore = None
signals: Signals = None

View file

@ -2,7 +2,6 @@ import os
import platform
import shutil
from logging import getLogger
from sys import stdout
from PyQt5.QtCore import QProcess, QProcessEnvironment, QThread, pyqtSignal
from PyQt5.QtWidgets import QMessageBox
@ -106,7 +105,7 @@ def uninstall(app_name: str, core: LegendaryCore, options=None):
class VerifyThread(QThread):
status = pyqtSignal(tuple)
summary = pyqtSignal(tuple)
summary = pyqtSignal(int, int, str)
def __init__(self, core, app_name):
super(VerifyThread, self).__init__()
@ -159,8 +158,6 @@ class VerifyThread(QThread):
QMessageBox.warning(None, "Error", self.tr("No files to validate"))
logger.error(str(e))
stdout.write(f'Verification progress: {self.num}/{self.total} ({self.num * 100 / self.total:.01f}%)\t\n')
# always write repair file, even if all match
if repair_file:
repair_filename = os.path.join(self.core.lgd.get_tmp_path(), f'{self.app_name}.repair')
@ -174,7 +171,7 @@ class VerifyThread(QThread):
else:
logger.error(f'Verification finished, {len(failed)} file(s) corrupted, {len(missing)} file(s) are missing.')
self.summary.emit((len(failed), len(missing), self.app_name))
self.summary.emit(len(failed), len(missing), self.app_name)
def import_game(core: LegendaryCore, app_name: str, path: str):

View file

@ -44,29 +44,6 @@ class InstallQueueItemModel:
return (self.status_q is not None) and (self.download is not None) and (self.options is not None)
class SignalActions:
quit_app = "quit_app"
dl_status = "dl_status"
install_game = "install_game"
start_installation = "start_installation"
installation_finished = "installation_finished"
uninstall = "uninstall"
set_index = "set_index"
set_dl_tab_text = "set_dl_tab_text"
verification_finished = "verification_finished"
class Signals(QObject):
actions = SignalActions()
tab_widget = pyqtSignal(tuple)
games_tab = pyqtSignal(tuple)
cloud_saves = pyqtSignal(tuple)
dl_tab = pyqtSignal(tuple)
main_window = pyqtSignal(tuple)
app = pyqtSignal(tuple)
@dataclass
class ApiResults:
game_list: list = None
@ -83,3 +60,23 @@ class ApiResults:
and self.mac_games is not None \
and self.assets is not None \
and self.no_asset_games is not None
class Signals(QObject):
exit_app = pyqtSignal(int)
send_notification = pyqtSignal(str)
set_main_tab_index = pyqtSignal(int)
update_download_tab_text = pyqtSignal()
dl_progress = pyqtSignal(int)
# set visibility of installing widget in games tab
installation_started = pyqtSignal(Game)
install_game = pyqtSignal(InstallOptionsModel)
installation_finished = pyqtSignal(bool, str)
update_gamelist = pyqtSignal(str)
uninstall_game = pyqtSignal(Game)
set_discord_rpc = pyqtSignal(str)

View file

@ -6,23 +6,30 @@ import pypresence.exceptions
from PyQt5.QtCore import QObject, QSettings
from pypresence import Presence
from legendary.core import LegendaryCore
from rare import shared
client_id = "830732538225360908"
logger = getLogger("RPC")
class DiscordRPC(QObject):
def __init__(self, core: LegendaryCore):
def __init__(self):
super(DiscordRPC, self).__init__()
self.RPC = None
self.state = 1 # 0: game, 1: always active, 2: off
self.core = core
self.core = shared.legendary_core
self.signals = shared.signals
self.settings = QSettings()
if self.settings.value("rpc_enable", 0, int) == 1: # show always
self.state = 2
self.set_discord_rpc()
self.signals.set_discord_rpc.connect(self.update_presence)
def update_presence(self, app_name):
self.set_discord_rpc(app_name)
def changed_settings(self, game_running: list):
value = self.settings.value("rpc_enable", 0, int)
if value == 2:
@ -54,7 +61,7 @@ class DiscordRPC(QObject):
def set_discord_rpc(self, app_name=None):
if not self.RPC:
try:
self.RPC = Presence("830732538225360908") # Rare app: https://discord.com/developers/applications
self.RPC = Presence(client_id) # Rare app: https://discord.com/developers/applications
self.RPC.connect()
except ConnectionRefusedError as e:
logger.warning("Discord is not active\n" + str(e))