1
0
Fork 0
mirror of synced 2024-07-08 07:56:01 +12:00
Rare/Rare/Components/Tabs/Games/GameWidgets/InstalledListWidget.py

83 lines
3.2 KiB
Python
Raw Normal View History

import os
from logging import getLogger
from PyQt5.QtCore import QProcess, pyqtSignal
from PyQt5.QtWidgets import QHBoxLayout, QLabel, QPushButton, QStyle, QVBoxLayout
from Rare.Components.Tabs.Games.GameWidgets.BaseInstalledWidget import BaseInstalledWidget
from custom_legendary.core import LegendaryCore
from custom_legendary.models.game import InstalledGame
logger = getLogger("GameWidget")
class InstalledListWidget(BaseInstalledWidget):
proc: QProcess
signal = pyqtSignal(str)
update_list = pyqtSignal()
update_game = pyqtSignal()
def __init__(self, game: InstalledGame, core: LegendaryCore, pixmap):
super(InstalledListWidget, self).__init__(game, core, pixmap)
self.core = core
self.game = game
self.dev = core.get_game(self.game.app_name).metadata["developer"]
self.size = game.install_size
self.launch_params = game.launch_parameters
self.update_available = self.core.get_asset(self.game.app_name, True).build_version != game.version
self.layout = QHBoxLayout()
##Layout on the right
self.childLayout = QVBoxLayout()
if self.pixmap:
self.pixmap = self.pixmap.scaled(180, 240)
self.image = QLabel()
self.image.setPixmap(self.pixmap)
self.layout.addWidget(self.image)
play_icon = self.style().standardIcon(getattr(QStyle, 'SP_MediaPlay'))
self.title_widget = QLabel(f"<h1>{self.game.title}</h1>")
self.app_name_label = QLabel(self.game.app_name)
self.launch_button = QPushButton(play_icon, self.tr("Launch"))
self.launch_button.setObjectName("launch_game_button")
self.launch_button.setFixedWidth(120)
self.info = QPushButton("Info")
self.info.clicked.connect(lambda: self.show_info.emit(self.game.app_name))
self.info.setFixedWidth(80)
self.launch_button.clicked.connect(self.launch)
if os.name != "nt":
self.wine_rating = QLabel("Wine Rating: " + self.get_rating())
self.developer_label = QLabel(self.tr("Developer: ") + self.dev)
self.version_label = QLabel("Version: " + str(self.game.version))
self.size_label = QLabel(f"{self.tr('Installed size')}: {round(self.size / (1024 ** 3), 2)} GB")
self.childLayout.addWidget(self.title_widget)
self.childLayout.addWidget(self.launch_button)
self.childLayout.addWidget(self.info)
self.childLayout.addWidget(self.app_name_label)
self.childLayout.addWidget(self.developer_label)
if os.name != "nt":
self.childLayout.addWidget(self.wine_rating)
self.childLayout.addWidget(self.version_label)
self.childLayout.addWidget(self.size_label)
self.childLayout.addStretch(1)
self.layout.addLayout(self.childLayout)
self.layout.addStretch(1)
self.setLayout(self.layout)
def launch(self):
if not self.game_running:
super(InstalledListWidget, self).launch(skip_version_check=self.update_available)
def finished(self):
super().finished()
self.launch_button.setText("Launch")
self.launch_button.setDisabled(False)
def get_rating(self) -> str:
return "gold" # TODO