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 custom_legendary . core import LegendaryCore
2021-04-08 08:39:23 +12:00
from rare . components . tab_widget import TabWidget
2021-04-13 07:55:08 +12:00
from rare . utils . rpc import DiscordRPC
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-13 07:55:08 +12:00
self . rpc = DiscordRPC ( 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 07:55:08 +12:00
# 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 ) )
# Remove RPC
self . tab_widget . delete_presence . connect ( self . rpc . remove_rpc )
# Show RPC on changed rare_settings
self . tab_widget . settings . rare_settings . rpc . update_settings . connect ( lambda : self . rpc . changed_settings ( self . tab_widget . games_tab . default_widget . game_list . running_games ) )
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-12 08:44:18 +12:00
2021-04-13 07:55:08 +12:00
self . show ( )
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 ( )