1
0
Fork 0
mirror of synced 2024-09-30 17:30:21 +13:00
Rare/rare/components/main_window.py

94 lines
3.4 KiB
Python
Raw Normal View History

2021-04-12 08:44:18 +12:00
import platform
import time
2021-04-08 00:46:27 +12:00
from PyQt5.QtCore import QSettings
2021-04-07 22:11:31 +12:00
from PyQt5.QtGui import QCloseEvent
from PyQt5.QtWidgets import QMainWindow, QMessageBox
2021-02-10 23:48:25 +13:00
2021-04-12 08:44:18 +12:00
from pypresence import Presence
from custom_legendary.core import LegendaryCore
2021-04-08 08:39:23 +12:00
from rare.components.tab_widget import TabWidget
2021-02-10 23:48:25 +13:00
class MainWindow(QMainWindow):
2021-04-12 08:44:18 +12:00
def __init__(self, core: LegendaryCore):
2021-02-10 23:48:25 +13:00
super(MainWindow, self).__init__()
2021-04-13 06:31:12 +12:00
self.settings = QSettings()
2021-04-12 08:44:18 +12:00
self.core = core
2021-04-11 00:58:34 +12:00
width, height = 1200, 800
2021-04-13 06:31:12 +12:00
if self.settings.value("save_size", False):
width, height = self.settings.value("window_size", (1200, 800), tuple)
2021-04-11 00:58:34 +12:00
self.setGeometry(0, 0, width, height)
2021-02-10 23:48:25 +13:00
self.setWindowTitle("Rare - GUI for legendary")
2021-04-07 22:11:31 +12:00
self.tab_widget = TabWidget(core)
self.setCentralWidget(self.tab_widget)
2021-04-12 08:44:18 +12:00
2021-04-13 00:10:36 +12:00
self.tab_widget.games_tab.default_widget.game_list.game_started.connect(self.set_discord_rpc)
self.tab_widget.delete_presence.connect(self.remove_rpc)
2021-04-13 02:02:16 +12:00
game = self.tab_widget.games_tab.default_widget.game_list.active_game
if game != ("", 0):
self.set_discord_rpc(game[0]) # Appname
2021-04-13 06:31:12 +12:00
self.RPC = None
if self.settings.value("rpc_enable", 0, int) == 1: # show always
self.RPC = Presence("830732538225360908")
self.RPC.connect()
self.update_rpc()
2021-02-10 23:48:25 +13:00
self.show()
2021-04-07 22:11:31 +12:00
2021-04-12 08:44:18 +12:00
def remove_rpc(self):
2021-04-13 06:31:12 +12:00
if self.settings.value("rpc_enable", 0, int) != 1:
if not self.RPC:
return
self.RPC.close()
del self.RPC
self.RPC = None
else:
self.update_rpc()
2021-04-12 08:44:18 +12:00
def set_discord_rpc(self, app_name):
2021-04-13 06:31:12 +12:00
if not self.RPC:
self.RPC = Presence("830732538225360908") # Rare app: https://discord.com/developers/applications
self.RPC.connect()
self.update_rpc(app_name)
def update_rpc(self, app_name=None):
if self.settings.value("rpc_enable", 0, int) == 2:
self.remove_rpc()
return
title = None
if not app_name:
self.RPC.update(large_image="logo",
details="https://github.com/Dummerle/Rare")
return
if self.settings.value("rpc_name", True, bool):
title = self.core.get_installed_game(app_name).title
start = None
if self.settings.value("rpc_time", True, bool):
start = str(time.time()).split(".")[0]
os = None
if self.settings.value("rpc_os", True, bool):
os = "via Rare on " + platform.system()
self.RPC.update(large_image="logo",
details=title,
large_text=title,
state=os,
start=start)
2021-04-12 08:44:18 +12:00
2021-04-07 22:11:31 +12:00
def closeEvent(self, e: QCloseEvent):
2021-04-13 06:31:12 +12:00
if self.settings.value("sys_tray", True, bool):
2021-04-08 00:46:27 +12:00
self.hide()
e.ignore()
2021-04-11 00:58:34 +12:00
return
elif self.tab_widget.downloadTab.active_game is not None:
if not QMessageBox.question(self, "Close", self.tr("There is a download active. Do you really want to exit app?"), QMessageBox.Yes, QMessageBox.No) == QMessageBox.Yes:
e.ignore()
return
2021-04-13 06:31:12 +12:00
if self.settings.value("save_size", False, bool):
2021-04-11 00:58:34 +12:00
size = self.size().width(), self.size().height()
2021-04-13 06:31:12 +12:00
self.settings.setValue("window_size", size)
2021-04-11 00:58:34 +12:00
e.accept()