diff --git a/rare/components/tabs/downloads/__init__.py b/rare/components/tabs/downloads/__init__.py index c27b497b..33aae173 100644 --- a/rare/components/tabs/downloads/__init__.py +++ b/rare/components/tabs/downloads/__init__.py @@ -193,7 +193,7 @@ class DownloadsTab(QWidget): self.update_title.emit(self.queues_count()) - # lk: if we finished a repair and we have a disabled update, re-enable it + # lk: if we finished a repair, and we have a disabled update, re-enable it if self.updates_group.contains(result.item.options.app_name): self.updates_group.set_widget_enabled(result.item.options.app_name, True) diff --git a/rare/components/tabs/downloads/widgets.py b/rare/components/tabs/downloads/widgets.py index ed1f5e66..ff2fe67b 100644 --- a/rare/components/tabs/downloads/widgets.py +++ b/rare/components/tabs/downloads/widgets.py @@ -10,7 +10,7 @@ from rare.models.install import InstallQueueItemModel, InstallOptionsModel from rare.shared import ImageManagerSingleton from rare.ui.components.tabs.downloads.download_widget import Ui_DownloadWidget from rare.ui.components.tabs.downloads.info_widget import Ui_InfoWidget -from rare.utils.misc import get_size, widget_object_name +from rare.utils.misc import get_size, widget_object_name, elide_text from rare.widgets.image_widget import ImageWidget, ImageSize @@ -30,8 +30,10 @@ class InfoWidget(QWidget): self.image_manager = ImageManagerSingleton() self.ui.title.setText(game.app_title) - self.ui.remote_version.setText(old_igame.version if old_igame else game.app_version(igame.platform)) - self.ui.local_version.setText(igame.version) + self.ui.remote_version.setText( + elide_text(self.ui.remote_version, old_igame.version if old_igame else game.app_version(igame.platform)) + ) + self.ui.local_version.setText(elide_text(self.ui.local_version, igame.version)) self.ui.dl_size.setText(get_size(analysis.dl_size) if analysis else "") self.ui.install_size.setText(get_size(analysis.install_size) if analysis else "") diff --git a/rare/ui/components/tabs/downloads/info_widget.py b/rare/ui/components/tabs/downloads/info_widget.py index 62c83ec4..8329b005 100644 --- a/rare/ui/components/tabs/downloads/info_widget.py +++ b/rare/ui/components/tabs/downloads/info_widget.py @@ -24,21 +24,22 @@ class Ui_InfoWidget(object): self.info_widget_layout = QtWidgets.QGridLayout(InfoWidget) self.info_widget_layout.setContentsMargins(0, 0, 0, 0) self.info_widget_layout.setObjectName("info_widget_layout") - self.install_size = QtWidgets.QLabel(InfoWidget) - self.install_size.setMinimumSize(QtCore.QSize(160, 0)) - self.install_size.setText("install_size") - self.install_size.setObjectName("install_size") - self.info_widget_layout.addWidget(self.install_size, 2, 4, 1, 1) - self.remote_version = QtWidgets.QLabel(InfoWidget) - self.remote_version.setMinimumSize(QtCore.QSize(160, 0)) - self.remote_version.setText("remote_version") - self.remote_version.setObjectName("remote_version") - self.info_widget_layout.addWidget(self.remote_version, 1, 2, 1, 1) - self.local_version = QtWidgets.QLabel(InfoWidget) - self.local_version.setMinimumSize(QtCore.QSize(160, 0)) - self.local_version.setText("local_version") - self.local_version.setObjectName("local_version") - self.info_widget_layout.addWidget(self.local_version, 2, 2, 1, 1) + self.dl_size_label = QtWidgets.QLabel(InfoWidget) + font = QtGui.QFont() + font.setBold(True) + font.setWeight(75) + self.dl_size_label.setFont(font) + self.dl_size_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.dl_size_label.setObjectName("dl_size_label") + self.info_widget_layout.addWidget(self.dl_size_label, 1, 3, 1, 1) + self.title = QtWidgets.QLabel(InfoWidget) + font = QtGui.QFont() + font.setBold(True) + font.setWeight(75) + self.title.setFont(font) + self.title.setText("title") + self.title.setObjectName("title") + self.info_widget_layout.addWidget(self.title, 0, 1, 1, 4) self.local_version_label = QtWidgets.QLabel(InfoWidget) font = QtGui.QFont() font.setBold(True) @@ -47,14 +48,6 @@ class Ui_InfoWidget(object): self.local_version_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.local_version_label.setObjectName("local_version_label") self.info_widget_layout.addWidget(self.local_version_label, 2, 1, 1, 1) - self.remote_version_label = QtWidgets.QLabel(InfoWidget) - font = QtGui.QFont() - font.setBold(True) - font.setWeight(75) - self.remote_version_label.setFont(font) - self.remote_version_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.remote_version_label.setObjectName("remote_version_label") - self.info_widget_layout.addWidget(self.remote_version_label, 1, 1, 1, 1) self.image_layout = QtWidgets.QVBoxLayout() self.image_layout.setSizeConstraint(QtWidgets.QLayout.SetFixedSize) self.image_layout.setObjectName("image_layout") @@ -67,39 +60,47 @@ class Ui_InfoWidget(object): self.install_size_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.install_size_label.setObjectName("install_size_label") self.info_widget_layout.addWidget(self.install_size_label, 2, 3, 1, 1) - self.dl_size_label = QtWidgets.QLabel(InfoWidget) - font = QtGui.QFont() - font.setBold(True) - font.setWeight(75) - self.dl_size_label.setFont(font) - self.dl_size_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) - self.dl_size_label.setObjectName("dl_size_label") - self.info_widget_layout.addWidget(self.dl_size_label, 1, 3, 1, 1) + self.install_size = QtWidgets.QLabel(InfoWidget) + self.install_size.setMinimumSize(QtCore.QSize(160, 0)) + self.install_size.setText("install_size") + self.install_size.setObjectName("install_size") + self.info_widget_layout.addWidget(self.install_size, 2, 4, 1, 1) + spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.info_widget_layout.addItem(spacerItem, 0, 5, 3, 1) self.dl_size = QtWidgets.QLabel(InfoWidget) self.dl_size.setMinimumSize(QtCore.QSize(160, 0)) self.dl_size.setText("dl_size") self.dl_size.setObjectName("dl_size") self.info_widget_layout.addWidget(self.dl_size, 1, 4, 1, 1) - spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) - self.info_widget_layout.addItem(spacerItem, 0, 5, 3, 1) - self.title = QtWidgets.QLabel(InfoWidget) + self.remote_version_label = QtWidgets.QLabel(InfoWidget) font = QtGui.QFont() font.setBold(True) font.setWeight(75) - self.title.setFont(font) - self.title.setText("title") - self.title.setObjectName("title") - self.info_widget_layout.addWidget(self.title, 0, 1, 1, 4) - self.info_widget_layout.setColumnStretch(5, 1) + self.remote_version_label.setFont(font) + self.remote_version_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.remote_version_label.setObjectName("remote_version_label") + self.info_widget_layout.addWidget(self.remote_version_label, 1, 1, 1, 1) + self.local_version = QtWidgets.QLabel(InfoWidget) + self.local_version.setMinimumSize(QtCore.QSize(160, 0)) + self.local_version.setMaximumSize(QtCore.QSize(160, 16777215)) + self.local_version.setText("local_version") + self.local_version.setObjectName("local_version") + self.info_widget_layout.addWidget(self.local_version, 2, 2, 1, 1) + self.remote_version = QtWidgets.QLabel(InfoWidget) + self.remote_version.setMinimumSize(QtCore.QSize(160, 0)) + self.remote_version.setMaximumSize(QtCore.QSize(160, 16777215)) + self.remote_version.setText("remote_version") + self.remote_version.setObjectName("remote_version") + self.info_widget_layout.addWidget(self.remote_version, 1, 2, 1, 1) self.retranslateUi(InfoWidget) def retranslateUi(self, InfoWidget): _translate = QtCore.QCoreApplication.translate - self.local_version_label.setText(_translate("InfoWidget", "Local version")) - self.remote_version_label.setText(_translate("InfoWidget", "Remote version")) - self.install_size_label.setText(_translate("InfoWidget", "Installed size")) self.dl_size_label.setText(_translate("InfoWidget", "Download size")) + self.local_version_label.setText(_translate("InfoWidget", "Local version")) + self.install_size_label.setText(_translate("InfoWidget", "Installed size")) + self.remote_version_label.setText(_translate("InfoWidget", "Remote version")) if __name__ == "__main__": diff --git a/rare/ui/components/tabs/downloads/info_widget.ui b/rare/ui/components/tabs/downloads/info_widget.ui index 34c3d5d1..e7a16364 100644 --- a/rare/ui/components/tabs/downloads/info_widget.ui +++ b/rare/ui/components/tabs/downloads/info_widget.ui @@ -19,7 +19,7 @@ InfoWidget - + 0 @@ -32,42 +32,32 @@ 0 - - - - - 160 - 0 - + + + + + 75 + true + - install_size + Download size + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - 160 - 0 - + + + + + 75 + true + - remote_version - - - - - - - - 160 - 0 - - - - local_version + title @@ -87,22 +77,6 @@ - - - - - 75 - true - - - - Remote version - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - @@ -126,24 +100,8 @@ - - - - - 75 - true - - - - Download size - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - + + 160 @@ -151,7 +109,7 @@ - dl_size + install_size @@ -168,8 +126,21 @@ - - + + + + + 160 + 0 + + + + dl_size + + + + + 75 @@ -177,7 +148,48 @@ - title + Remote version + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 160 + 0 + + + + + 160 + 16777215 + + + + local_version + + + + + + + + 160 + 0 + + + + + 160 + 16777215 + + + + remote_version diff --git a/rare/utils/misc.py b/rare/utils/misc.py index 29356dc4..d69bf12e 100644 --- a/rare/utils/misc.py +++ b/rare/utils/misc.py @@ -14,10 +14,10 @@ from PyQt5.QtCore import ( QSettings, QStandardPaths, QFile, - QDir, + QDir, Qt, ) -from PyQt5.QtGui import QPalette, QColor, QImage -from PyQt5.QtWidgets import qApp, QStyleFactory, QWidget +from PyQt5.QtGui import QPalette, QColor, QImage, QFontMetrics +from PyQt5.QtWidgets import qApp, QStyleFactory, QWidget, QLabel from legendary.core import LegendaryCore from legendary.models.game import Game from requests.exceptions import HTTPError @@ -353,4 +353,9 @@ def icon(icn_str: str, fallback: str = None, **kwargs): def widget_object_name(widget: QWidget, app_name: str) -> str: - return f"{type(widget).__name__}_{app_name}" \ No newline at end of file + return f"{type(widget).__name__}_{app_name}" + + +def elide_text(label: QLabel, text: str) -> str: + metrics = QFontMetrics(label.font()) + return metrics.elidedText(text, Qt.ElideRight, label.width())