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-11 00:58:34 +12:00
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
if settings . value ( " save_size " , False ) :
width , height = settings . value ( " window_size " , ( 1200 , 800 ) , tuple )
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-12 08:44:18 +12:00
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 ) :
self . RPC . clear ( )
self . RPC . close ( )
del self . RPC
def set_discord_rpc ( self , app_name ) :
2021-04-13 00:10:36 +12:00
self . RPC = Presence ( " 830732538225360908 " ) # Rare app: https://discord.com/developers/applications
2021-04-12 08:44:18 +12:00
self . RPC . connect ( )
title = self . core . get_installed_game ( app_name ) . title
start = str ( time . time ( ) ) . split ( " . " ) [ 0 ]
2021-04-13 00:10:36 +12:00
self . RPC . update ( large_image = " logo " , details = title , large_text = title ,
state = " via Rare on " + platform . system ( ) , 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-11 00:58:34 +12:00
settings = QSettings ( )
if 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
if settings . value ( " save_size " , False , bool ) :
size = self . size ( ) . width ( ) , self . size ( ) . height ( )
settings . setValue ( " window_size " , size )
e . accept ( )