1
0
Fork 0
mirror of synced 2024-06-27 02:30:31 +12:00

add Discord RPC

This commit is contained in:
Dummerle 2021-04-11 22:44:18 +02:00
parent 10839623c6
commit f58154f3f1
5 changed files with 41 additions and 7 deletions

View file

@ -1,14 +1,21 @@
import platform
import time
from PyQt5.QtCore import QSettings from PyQt5.QtCore import QSettings
from PyQt5.QtGui import QCloseEvent from PyQt5.QtGui import QCloseEvent
from PyQt5.QtWidgets import QMainWindow, QMessageBox from PyQt5.QtWidgets import QMainWindow, QMessageBox
from pypresence import Presence
from custom_legendary.core import LegendaryCore
from rare.components.tab_widget import TabWidget from rare.components.tab_widget import TabWidget
class MainWindow(QMainWindow): class MainWindow(QMainWindow):
def __init__(self, core):
def __init__(self, core: LegendaryCore):
super(MainWindow, self).__init__() super(MainWindow, self).__init__()
settings = QSettings() settings = QSettings()
self.core = core
width, height = 1200, 800 width, height = 1200, 800
if settings.value("save_size", False): if settings.value("save_size", False):
width, height = settings.value("window_size", (1200, 800), tuple) width, height = settings.value("window_size", (1200, 800), tuple)
@ -17,8 +24,25 @@ class MainWindow(QMainWindow):
self.setWindowTitle("Rare - GUI for legendary") self.setWindowTitle("Rare - GUI for legendary")
self.tab_widget = TabWidget(core) self.tab_widget = TabWidget(core)
self.setCentralWidget(self.tab_widget) self.setCentralWidget(self.tab_widget)
self.tab_widget.game_list.default_widget.game_list.game_started.connect(self.set_discord_rpc)
self.tab_widget.update_presence.connect(self.remove_rpc)
self.show() self.show()
def remove_rpc(self):
self.RPC.clear()
self.RPC.close()
del self.RPC
def set_discord_rpc(self, app_name):
self.RPC = Presence("830732538225360908")
self.RPC.connect()
title = self.core.get_installed_game(app_name).title
start = str(time.time()).split(".")[0]
self.RPC.update(large_image="logo", details=title, large_text=title, state="via Rare on " + platform.system(), start=start)
def closeEvent(self, e: QCloseEvent): def closeEvent(self, e: QCloseEvent):
settings = QSettings() settings = QSettings()
if settings.value("sys_tray", True, bool): if settings.value("sys_tray", True, bool):

View file

@ -1,6 +1,6 @@
import webbrowser import webbrowser
from PyQt5.QtCore import QSize from PyQt5.QtCore import QSize, pyqtSignal
from PyQt5.QtWidgets import QMenu, QTabWidget, QWidget, QWidgetAction from PyQt5.QtWidgets import QMenu, QTabWidget, QWidget, QWidgetAction
from qtawesome import icon from qtawesome import icon
@ -15,6 +15,9 @@ from custom_legendary.core import LegendaryCore
class TabWidget(QTabWidget): class TabWidget(QTabWidget):
update_presence = pyqtSignal()
def __init__(self, core: LegendaryCore): def __init__(self, core: LegendaryCore):
super(TabWidget, self).__init__() super(TabWidget, self).__init__()
disabled_tab = 3 disabled_tab = 3
@ -39,8 +42,7 @@ class TabWidget(QTabWidget):
self.cloud_saves.finished.connect(self.finished_sync) self.cloud_saves.finished.connect(self.finished_sync)
self.game_list.default_widget.game_list.sync_cloud.connect( self.game_list.default_widget.game_list.game_exited.connect(self.game_finished)
lambda app_name: self.cloud_saves.sync_game(app_name, True))
# Space Tab # Space Tab
self.addTab(QWidget(), "") self.addTab(QWidget(), "")
@ -65,6 +67,10 @@ class TabWidget(QTabWidget):
account_button.menu().addAction(account_action) account_button.menu().addAction(account_action)
self.tabBar().setTabButton(4, self.tabBar().RightSide, account_button) self.tabBar().setTabButton(4, self.tabBar().RightSide, account_button)
def game_finished(self, app_name):
self.update_presence.emit()
self.cloud_saves.sync_game(app_name, True)
def dl_finished(self): def dl_finished(self):
self.game_list.default_widget.game_list.update_list() self.game_list.default_widget.game_list.update_list()
self.setTabText(1, "Downloads") self.setTabText(1, "Downloads")

View file

@ -21,7 +21,8 @@ class GameList(QStackedWidget):
install_game = pyqtSignal(InstallOptions) install_game = pyqtSignal(InstallOptions)
show_game_info = pyqtSignal(str) show_game_info = pyqtSignal(str)
update_game = pyqtSignal() update_game = pyqtSignal()
sync_cloud = pyqtSignal(str) game_exited = pyqtSignal(str)
game_started = pyqtSignal(str)
def __init__(self, core: LegendaryCore): def __init__(self, core: LegendaryCore):
super(GameList, self).__init__() super(GameList, self).__init__()
@ -165,12 +166,13 @@ class GameList(QStackedWidget):
logger.info("Auto saves disabled") logger.info("Auto saves disabled")
return return
self.sync_cloud.emit(app_name) self.game_exited.emit(app_name)
self.widgets[app_name][0].info_text = self.tr("Sync CLoud saves") 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][0].info_label.setText(self.tr("Sync CLoud saves"))
self.widgets[app_name][1].info_label.setText(self.tr("Sync CLoud saves")) self.widgets[app_name][1].info_label.setText(self.tr("Sync CLoud saves"))
def launch(self, app_name): def launch(self, 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_text = self.tr("Game running")
self.widgets[app_name][1].launch_button.setDisabled(True) self.widgets[app_name][1].launch_button.setDisabled(True)
self.widgets[app_name][1].launch_button.setText(self.tr("Game running")) self.widgets[app_name][1].launch_button.setText(self.tr("Game running"))

View file

@ -4,3 +4,4 @@ PyQt5
QtAwesome QtAwesome
notify-py notify-py
psutil psutil
pypresence

View file

@ -33,6 +33,7 @@ setuptools.setup(
"PyQt5", "PyQt5",
"QtAwesome", "QtAwesome",
"notify-py", "notify-py",
"psutil" "psutil",
"pypresence"
], ],
) )