From 29cc9088eb5b60c327333a1b04bb4d9c6409b4e0 Mon Sep 17 00:00:00 2001 From: Stelios Tsampas Date: Sun, 5 Dec 2021 01:31:36 +0200 Subject: [PATCH] GameDlcWidget: Make the image label adjust to the widget size --- .../tabs/games/game_info/game_dlc.py | 25 +- .../tabs/games/game_info/game_dlc_widget.py | 95 ++--- .../tabs/games/game_info/game_dlc_widget.ui | 341 ++++++++---------- 3 files changed, 205 insertions(+), 256 deletions(-) diff --git a/rare/components/tabs/games/game_info/game_dlc.py b/rare/components/tabs/games/game_info/game_dlc.py index e95a629d..bdd066f3 100644 --- a/rare/components/tabs/games/game_info/game_dlc.py +++ b/rare/components/tabs/games/game_info/game_dlc.py @@ -1,4 +1,5 @@ -from PyQt5.QtCore import pyqtSignal +from PyQt5.QtCore import Qt, pyqtSignal +from PyQt5.QtGui import QPixmap, QResizeEvent from PyQt5.QtWidgets import QFrame, QWidget, QMessageBox from legendary.models.game import Game @@ -84,24 +85,36 @@ class GameDlcWidget(QFrame, Ui_GameDlcWidget): self.setupUi(self) self.dlc = dlc - pixmap = get_pixmap(dlc.app_name) - self.image.setPixmap(pixmap.scaledToHeight(int(pixmap.height() * 0.5))) - self.dlc_name.setText(dlc.app_title) self.version.setText(dlc.app_version) self.app_name.setText(dlc.app_name) + self.pixmap = get_pixmap(dlc.app_name) + if installed: self.action_button.setProperty("uninstall", 1) self.action_button.clicked.connect(self.uninstall_dlc) - self.status.setText(self.tr("Installed")) self.action_button.setText(self.tr("Uninstall DLC")) else: self.action_button.setProperty("install", 1) self.action_button.clicked.connect(self.install_game) - self.status.setText(self.tr("Not installed")) self.action_button.setText(self.tr("Install DLC")) + def resizeEvent(self, a0: QResizeEvent) -> None: + self.image.clear() + super(GameDlcWidget, self).resizeEvent(a0) + self.setPixmap(self.pixmap) + + def setPixmap(self, a0: QPixmap) -> None: + self.pixmap = a0 + self.image.setPixmap( + self.pixmap.scaledToHeight( + self.dlc_info.size().height() - (self.image.contentsMargins().top() + + self.image.contentsMargins().bottom() + + self.image.lineWidth()*2), + Qt.SmoothTransformation)) + self.image.setAlignment(Qt.AlignHCenter | Qt.AlignVCenter) + def uninstall_dlc(self): self.action_button.setDisabled(True) self.action_button.setText(self.tr("Uninstalling")) diff --git a/rare/ui/components/tabs/games/game_info/game_dlc_widget.py b/rare/ui/components/tabs/games/game_info/game_dlc_widget.py index de90784a..723a14f5 100644 --- a/rare/ui/components/tabs/games/game_info/game_dlc_widget.py +++ b/rare/ui/components/tabs/games/game_info/game_dlc_widget.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'rare/ui/components/tabs/games/game_info/game_dlc_widget.ui' # -# Created by: PyQt5 UI code generator 5.15.4 +# Created by: PyQt5 UI code generator 5.15.6 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. @@ -14,7 +14,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets class Ui_GameDlcWidget(object): def setupUi(self, GameDlcWidget): GameDlcWidget.setObjectName("GameDlcWidget") - GameDlcWidget.resize(424, 163) + GameDlcWidget.resize(517, 70) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -22,21 +22,22 @@ class Ui_GameDlcWidget(object): GameDlcWidget.setSizePolicy(sizePolicy) GameDlcWidget.setWindowTitle("GameDlcWidget") GameDlcWidget.setFrameShape(QtWidgets.QFrame.StyledPanel) - GameDlcWidget.setFrameShadow(QtWidgets.QFrame.Raised) + GameDlcWidget.setFrameShadow(QtWidgets.QFrame.Plain) self.dlc_layout = QtWidgets.QHBoxLayout(GameDlcWidget) self.dlc_layout.setObjectName("dlc_layout") self.image = QtWidgets.QLabel(GameDlcWidget) self.image.setFrameShape(QtWidgets.QFrame.StyledPanel) - self.image.setFrameShadow(QtWidgets.QFrame.Sunken) - self.image.setText("") + self.image.setFrameShadow(QtWidgets.QFrame.Plain) + self.image.setText("image") self.image.setObjectName("image") self.dlc_layout.addWidget(self.image) - self.dlc_info_layout = QtWidgets.QFormLayout() + self.dlc_info = QtWidgets.QWidget(GameDlcWidget) + self.dlc_info.setObjectName("dlc_info") + self.dlc_info_layout = QtWidgets.QFormLayout(self.dlc_info) self.dlc_info_layout.setLabelAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.dlc_info_layout.setContentsMargins(6, 6, 6, 6) - self.dlc_info_layout.setSpacing(12) + self.dlc_info_layout.setContentsMargins(0, 0, 0, 0) self.dlc_info_layout.setObjectName("dlc_info_layout") - self.dlc_name_label = QtWidgets.QLabel(GameDlcWidget) + self.dlc_name_label = QtWidgets.QLabel(self.dlc_info) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -48,12 +49,13 @@ class Ui_GameDlcWidget(object): self.dlc_name_label.setFont(font) self.dlc_name_label.setObjectName("dlc_name_label") self.dlc_info_layout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.dlc_name_label) - self.dlc_name = QtWidgets.QLabel(GameDlcWidget) - self.dlc_name.setText("error") + self.dlc_name = QtWidgets.QLabel(self.dlc_info) + self.dlc_name.setMinimumSize(QtCore.QSize(160, 0)) + self.dlc_name.setText("dlc_name") self.dlc_name.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse) self.dlc_name.setObjectName("dlc_name") self.dlc_info_layout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.dlc_name) - self.version_label = QtWidgets.QLabel(GameDlcWidget) + self.version_label = QtWidgets.QLabel(self.dlc_info) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -65,53 +67,13 @@ class Ui_GameDlcWidget(object): self.version_label.setFont(font) self.version_label.setObjectName("version_label") self.dlc_info_layout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.version_label) - self.version = QtWidgets.QLabel(GameDlcWidget) - self.version.setText("error") + self.version = QtWidgets.QLabel(self.dlc_info) + self.version.setMinimumSize(QtCore.QSize(160, 0)) + self.version.setText("version") self.version.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse) self.version.setObjectName("version") self.dlc_info_layout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.version) - self.status_label = QtWidgets.QLabel(GameDlcWidget) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.status_label.sizePolicy().hasHeightForWidth()) - self.status_label.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setBold(True) - font.setWeight(75) - self.status_label.setFont(font) - self.status_label.setObjectName("status_label") - self.dlc_info_layout.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.status_label) - self.status = QtWidgets.QLabel(GameDlcWidget) - self.status.setText("error") - self.status.setWordWrap(True) - self.status.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse) - self.status.setObjectName("status") - self.dlc_info_layout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.status) - self.actions_label = QtWidgets.QLabel(GameDlcWidget) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.actions_label.sizePolicy().hasHeightForWidth()) - self.actions_label.setSizePolicy(sizePolicy) - font = QtGui.QFont() - font.setBold(True) - font.setWeight(75) - self.actions_label.setFont(font) - self.actions_label.setObjectName("actions_label") - self.dlc_info_layout.setWidget(4, QtWidgets.QFormLayout.LabelRole, self.actions_label) - self.action_button = QtWidgets.QPushButton(GameDlcWidget) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.action_button.sizePolicy().hasHeightForWidth()) - self.action_button.setSizePolicy(sizePolicy) - self.action_button.setMinimumSize(QtCore.QSize(250, 0)) - self.action_button.setStyleSheet("") - self.action_button.setText("Action") - self.action_button.setObjectName("action_button") - self.dlc_info_layout.setWidget(4, QtWidgets.QFormLayout.FieldRole, self.action_button) - self.app_name_label = QtWidgets.QLabel(GameDlcWidget) + self.app_name_label = QtWidgets.QLabel(self.dlc_info) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) @@ -123,14 +85,27 @@ class Ui_GameDlcWidget(object): self.app_name_label.setFont(font) self.app_name_label.setObjectName("app_name_label") self.dlc_info_layout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.app_name_label) - self.app_name = QtWidgets.QLabel(GameDlcWidget) - self.app_name.setText("error") + self.app_name = QtWidgets.QLabel(self.dlc_info) + self.app_name.setMinimumSize(QtCore.QSize(160, 0)) + self.app_name.setText("app_name") self.app_name.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse) self.app_name.setObjectName("app_name") self.dlc_info_layout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.app_name) - self.dlc_layout.addLayout(self.dlc_info_layout) + self.dlc_layout.addWidget(self.dlc_info) spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.dlc_layout.addItem(spacerItem) + self.action_button = QtWidgets.QPushButton(GameDlcWidget) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.action_button.sizePolicy().hasHeightForWidth()) + self.action_button.setSizePolicy(sizePolicy) + self.action_button.setMinimumSize(QtCore.QSize(160, 0)) + self.action_button.setStyleSheet("") + self.action_button.setText("Action") + self.action_button.setObjectName("action_button") + self.dlc_layout.addWidget(self.action_button, 0, QtCore.Qt.AlignTop) + self.dlc_layout.setStretch(2, 1) self.retranslateUi(GameDlcWidget) QtCore.QMetaObject.connectSlotsByName(GameDlcWidget) @@ -139,8 +114,6 @@ class Ui_GameDlcWidget(object): _translate = QtCore.QCoreApplication.translate self.dlc_name_label.setText(_translate("GameDlcWidget", "DLC Name")) self.version_label.setText(_translate("GameDlcWidget", "Version")) - self.status_label.setText(_translate("GameDlcWidget", "Status")) - self.actions_label.setText(_translate("GameDlcWidget", "Actions")) self.app_name_label.setText(_translate("GameDlcWidget", "Application")) diff --git a/rare/ui/components/tabs/games/game_info/game_dlc_widget.ui b/rare/ui/components/tabs/games/game_info/game_dlc_widget.ui index a3680aff..33ae4ef8 100644 --- a/rare/ui/components/tabs/games/game_info/game_dlc_widget.ui +++ b/rare/ui/components/tabs/games/game_info/game_dlc_widget.ui @@ -6,8 +6,8 @@ 0 0 - 424 - 163 + 517 + 70 @@ -23,206 +23,147 @@ QFrame::StyledPanel - QFrame::Raised + QFrame::Plain - + QFrame::StyledPanel - QFrame::Sunken + QFrame::Plain - + image - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - 12 - - - 12 - - - 6 - - - 6 - - - 6 - - - 6 - - - - - - 0 - 0 - - - - - 75 - true - - - - DLC Name - - - - - - - error - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse - - - - - - - - 0 - 0 - - - - - 75 - true - - - - Version - - - - - - - error - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse - - - - - - - - 0 - 0 - - - - - 75 - true - - - - Status - - - - - - - error - - - true - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse - - - - - - - - 0 - 0 - - - - - 75 - true - - - - Actions - - - - - - - - 0 - 0 - - - - - 250 - 0 - - - - - - - Action - - - - - - - - 0 - 0 - - - - - 75 - true - - - - Application - - - - - - - error - - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse - - - - + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 75 + true + + + + DLC Name + + + + + + + + 160 + 0 + + + + dlc_name + + + Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + + + + + + + + 0 + 0 + + + + + 75 + true + + + + Version + + + + + + + + 160 + 0 + + + + version + + + Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + + + + + + + + 0 + 0 + + + + + 75 + true + + + + Application + + + + + + + + 160 + 0 + + + + app_name + + + Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + + + + + @@ -237,6 +178,28 @@ + + + + + 0 + 0 + + + + + 160 + 0 + + + + + + + Action + + +