1
0
Fork 0
mirror of synced 2024-07-04 06:00:30 +12:00
Rare/Rare/Components/Tabs/Games/GameWidgets/BaseInstalledWidget.py

49 lines
1.7 KiB
Python
Raw Normal View History

2021-03-25 23:49:27 +13:00
from logging import getLogger
from PyQt5.QtCore import pyqtSignal, QProcess
2021-03-27 06:23:22 +13:00
from PyQt5.QtWidgets import QGroupBox
2021-03-25 23:49:27 +13:00
from Rare.utils import LegendaryApi
2021-03-27 06:23:22 +13:00
from custom_legendary.core import LegendaryCore
from custom_legendary.models.game import InstalledGame
2021-03-25 23:49:27 +13:00
logger = getLogger("Game")
2021-03-27 01:29:26 +13:00
class BaseInstalledWidget(QGroupBox):
2021-03-25 23:49:27 +13:00
launch_signal = pyqtSignal(str)
show_info = pyqtSignal(str)
2021-03-27 00:50:57 +13:00
finish_signal = pyqtSignal(str)
2021-03-25 23:49:27 +13:00
proc: QProcess()
2021-03-26 00:14:34 +13:00
def __init__(self, igame: InstalledGame, core: LegendaryCore, pixmap):
2021-03-25 23:49:27 +13:00
super(BaseInstalledWidget, self).__init__()
2021-03-26 00:14:34 +13:00
self.igame = igame
2021-03-25 23:49:27 +13:00
self.core = core
2021-03-26 00:14:34 +13:00
self.game = self.core.get_game(self.igame.app_name)
2021-03-25 23:49:27 +13:00
self.pixmap = pixmap
self.game_running = False
2021-03-27 06:23:22 +13:00
self.update_available = self.core.get_asset(self.game.app_name, True).build_version != igame.version
2021-03-25 23:49:27 +13:00
2021-03-27 06:23:22 +13:00
self.setContentsMargins(0, 0, 0, 0)
2021-03-27 01:29:26 +13:00
# self.setStyleSheet("border-radius: 5px")
2021-03-25 23:49:27 +13:00
def launch(self, offline=False, skip_version_check=False):
2021-03-26 00:14:34 +13:00
logger.info("Launching " + self.igame.title)
2021-03-27 06:23:22 +13:00
self.proc, params = LegendaryApi.launch_game(self.core, self.igame.app_name, offline,
skip_version_check=skip_version_check)
2021-03-25 23:49:27 +13:00
if not self.proc:
logger.error("Could not start process")
return 1
self.proc.finished.connect(self.finished)
2021-03-27 06:23:22 +13:00
self.proc.start(params[0], params[1:])
2021-03-26 00:14:34 +13:00
self.launch_signal.emit(self.igame.app_name)
2021-03-25 23:49:27 +13:00
self.game_running = True
return 0
2021-03-27 00:50:57 +13:00
def finished(self, exit_code):
logger.info("Game exited with exit code: ", exit_code)
2021-03-27 00:50:57 +13:00
self.finish_signal.emit(self.game.app_name)
2021-03-25 23:49:27 +13:00
self.game_running = False