1
0
Fork 0
mirror of synced 2024-06-10 22:54:41 +12:00

GameDlcWidget: Make the image label adjust to the widget size

This commit is contained in:
Stelios Tsampas 2021-12-05 01:31:36 +02:00
parent 1afd52da0d
commit 29cc9088eb
No known key found for this signature in database
GPG key ID: 2FAEBF7B5BE5FD7C
3 changed files with 205 additions and 256 deletions

View file

@ -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"))

View file

@ -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"))

View file

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>424</width>
<height>163</height>
<width>517</width>
<height>70</height>
</rect>
</property>
<property name="sizePolicy">
@ -23,206 +23,147 @@
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
<enum>QFrame::Plain</enum>
</property>
<layout class="QHBoxLayout" name="dlc_layout">
<layout class="QHBoxLayout" name="dlc_layout" stretch="0,0,1,0">
<item>
<widget class="QLabel" name="image">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Sunken</enum>
<enum>QFrame::Plain</enum>
</property>
<property name="text">
<string notr="true"/>
<string notr="true">image</string>
</property>
</widget>
</item>
<item>
<layout class="QFormLayout" name="dlc_info_layout">
<property name="labelAlignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="horizontalSpacing">
<number>12</number>
</property>
<property name="verticalSpacing">
<number>12</number>
</property>
<property name="leftMargin">
<number>6</number>
</property>
<property name="topMargin">
<number>6</number>
</property>
<property name="rightMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>6</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="dlc_name_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>DLC Name</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="dlc_name">
<property name="text">
<string notr="true">error</string>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="version_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Version</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="version">
<property name="text">
<string notr="true">error</string>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="status_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Status</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLabel" name="status">
<property name="text">
<string notr="true">error</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="actions_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Actions</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QPushButton" name="action_button">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>250</width>
<height>0</height>
</size>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string notr="true">Action</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="app_name_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Application</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="app_name">
<property name="text">
<string notr="true">error</string>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
</layout>
<widget class="QWidget" name="dlc_info" native="true">
<layout class="QFormLayout" name="dlc_info_layout">
<property name="labelAlignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="dlc_name_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>DLC Name</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="dlc_name">
<property name="minimumSize">
<size>
<width>160</width>
<height>0</height>
</size>
</property>
<property name="text">
<string notr="true">dlc_name</string>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="version_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Version</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="version">
<property name="minimumSize">
<size>
<width>160</width>
<height>0</height>
</size>
</property>
<property name="text">
<string notr="true">version</string>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="app_name_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Application</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="app_name">
<property name="minimumSize">
<size>
<width>160</width>
<height>0</height>
</size>
</property>
<property name="text">
<string notr="true">app_name</string>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="hspacer">
@ -237,6 +178,28 @@
</property>
</spacer>
</item>
<item alignment="Qt::AlignTop">
<widget class="QPushButton" name="action_button">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>160</width>
<height>0</height>
</size>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string notr="true">Action</string>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>