diff --git a/.github/workflows/_job_publish.yml b/.github/workflows/_job_publish.yml index 6adf496c8..6b6dc113e 100644 --- a/.github/workflows/_job_publish.yml +++ b/.github/workflows/_job_publish.yml @@ -36,6 +36,7 @@ jobs: if: ${{ matrix.file != '' }} with: name: ${{ matrix.file }} + skip-decompress: true - name: Upload ${{ matrix.file }} to release if: ${{ matrix.file != '' }} shell: bash diff --git a/rare/components/tabs/library/details/details.py b/rare/components/tabs/library/details/details.py index 073d72ec7..327ffd00a 100644 --- a/rare/components/tabs/library/details/details.py +++ b/rare/components/tabs/library/details/details.py @@ -128,7 +128,7 @@ def __init__(self, rcore: RareCore, parent=None): # lk: hide unfinished things self.ui.description_field.setVisible(False) - self.ui.requirements_group.setVisible(False) + self.ui.requirements_frame.setVisible(False) @Slot() def __on_install(self): diff --git a/rare/components/tabs/store/widgets/details.py b/rare/components/tabs/store/widgets/details.py index 0abd13753..0391c10f8 100644 --- a/rare/components/tabs/store/widgets/details.py +++ b/rare/components/tabs/store/widgets/details.py @@ -183,7 +183,7 @@ def data_received(self, product: DieselProduct): description = description.replace('### ', '##### ') description = description.replace('## ', '#### ') description = description.replace('# ', '### ') - self.ui.description_label.setMarkdown(description) + self.ui.description_field.setMarkdown(description) self.ui.developer.setText(about.developerAttribution) # try: # if isinstance(aboudeveloper, list): diff --git a/rare/ui/components/tabs/library/details/details.py b/rare/ui/components/tabs/library/details/details.py index c82270a1d..287d8d816 100644 --- a/rare/ui/components/tabs/library/details/details.py +++ b/rare/ui/components/tabs/library/details/details.py @@ -32,7 +32,7 @@ class Ui_GameDetails: def setupUi(self, GameDetails): if not GameDetails.objectName(): GameDetails.setObjectName("GameDetails") - GameDetails.resize(870, 601) + GameDetails.resize(928, 626) GameDetails.setWindowTitle("GameDetails") self.main_layout = QHBoxLayout(GameDetails) self.main_layout.setObjectName("main_layout") @@ -76,77 +76,7 @@ def setupUi(self, GameDetails): self.description_field.setMinimumSize(QSize(450, 0)) self.description_field.setOpenExternalLinks(True) - self.right_layout.addWidget(self.description_field, 1, 0, 1, 1) - - self.requirements_group = QFrame(GameDetails) - self.requirements_group.setObjectName("requirements_group") - self.requirements_group.setFrameShape(QFrame.Shape.StyledPanel) - self.requirements_group.setFrameShadow(QFrame.Shadow.Sunken) - self.requirements_layout = QHBoxLayout(self.requirements_group) - self.requirements_layout.setObjectName("requirements_layout") - - self.right_layout.addWidget(self.requirements_group, 2, 0, 2, 2) - - self.achievements_group = QWidget(GameDetails) - self.achievements_group.setObjectName("achievements_group") - self.achievements_layout = QVBoxLayout(self.achievements_group) - self.achievements_layout.setObjectName("achievements_layout") - self.achievements_layout.setContentsMargins(0, 0, 0, 0) - self.achievement_stats_layout = QHBoxLayout() - self.achievement_stats_layout.setObjectName("achievement_stats_layout") - self.achievement_stats_layout.setContentsMargins(0, -1, 0, -1) - self.progress_label = QLabel(self.achievements_group) - self.progress_label.setObjectName("progress_label") - font = QFont() - font.setBold(True) - self.progress_label.setFont(font) - - self.achievement_stats_layout.addWidget(self.progress_label) - - self.progress_field = QLabel(self.achievements_group) - self.progress_field.setObjectName("progress_field") - - self.achievement_stats_layout.addWidget(self.progress_field) - - self.exp_label = QLabel(self.achievements_group) - self.exp_label.setObjectName("exp_label") - self.exp_label.setFont(font) - - self.achievement_stats_layout.addWidget(self.exp_label) - - self.exp_field = QLabel(self.achievements_group) - self.exp_field.setObjectName("exp_field") - - self.achievement_stats_layout.addWidget(self.exp_field) - - self.achievement_stats_layout.setStretch(1, 1) - self.achievement_stats_layout.setStretch(3, 1) - - self.achievements_layout.addLayout(self.achievement_stats_layout) - - self.achievements_toolbox = QToolBox(self.achievements_group) - self.achievements_toolbox.setObjectName("achievements_toolbox") - self.ach_progress_page = QWidget() - self.ach_progress_page.setObjectName("ach_progress_page") - self.ach_progress_page.setGeometry(QRect(0, 0, 274, 417)) - self.achievements_toolbox.addItem(self.ach_progress_page, "In progress") - self.ach_completed_page = QWidget() - self.ach_completed_page.setObjectName("ach_completed_page") - self.ach_completed_page.setGeometry(QRect(0, 0, 274, 417)) - self.achievements_toolbox.addItem(self.ach_completed_page, "Completed") - self.ach_uninitiated_page = QWidget() - self.ach_uninitiated_page.setObjectName("ach_uninitiated_page") - self.ach_uninitiated_page.setGeometry(QRect(0, 0, 274, 417)) - self.achievements_toolbox.addItem(self.ach_uninitiated_page, "Uninitiated") - self.ach_hidden_page = QWidget() - self.ach_hidden_page.setObjectName("ach_hidden_page") - self.ach_hidden_page.setGeometry(QRect(0, 0, 274, 417)) - self.achievements_toolbox.addItem(self.ach_hidden_page, "Hidden") - - self.achievements_layout.addWidget(self.achievements_toolbox) - - - self.right_layout.addWidget(self.achievements_group, 0, 1, 2, 1) + self.right_layout.addWidget(self.description_field, 1, 0, 1, 2) self.details_widget = QWidget(GameDetails) self.details_widget.setObjectName("details_widget") @@ -167,6 +97,8 @@ def setupUi(self, GameDetails): sizePolicy2.setVerticalStretch(0) sizePolicy2.setHeightForWidth(self.dev_label.sizePolicy().hasHeightForWidth()) self.dev_label.setSizePolicy(sizePolicy2) + font = QFont() + font.setBold(True) self.dev_label.setFont(font) self.dev_label.setAlignment(Qt.AlignmentFlag.AlignRight|Qt.AlignmentFlag.AlignTrailing|Qt.AlignmentFlag.AlignVCenter) @@ -392,8 +324,88 @@ def setupUi(self, GameDetails): self.right_layout.addWidget(self.details_widget, 0, 0, 1, 1) + self.right_layout_spacer = QSpacerItem(0, 0, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum) + + self.right_layout.addItem(self.right_layout_spacer, 0, 1, 1, 1) + + self.requirements_frame = QFrame(GameDetails) + self.requirements_frame.setObjectName("requirements_frame") + sizePolicy.setHeightForWidth(self.requirements_frame.sizePolicy().hasHeightForWidth()) + self.requirements_frame.setSizePolicy(sizePolicy) + self.requirements_frame.setFrameShape(QFrame.Shape.StyledPanel) + self.requirements_frame.setFrameShadow(QFrame.Shadow.Sunken) + self.requirements_layout = QHBoxLayout(self.requirements_frame) + self.requirements_layout.setObjectName("requirements_layout") + + self.right_layout.addWidget(self.requirements_frame, 2, 0, 1, 2, Qt.AlignmentFlag.AlignBottom) + + self.achievements_group = QWidget(GameDetails) + self.achievements_group.setObjectName("achievements_group") + sizePolicy4 = QSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Preferred) + sizePolicy4.setHorizontalStretch(0) + sizePolicy4.setVerticalStretch(0) + sizePolicy4.setHeightForWidth(self.achievements_group.sizePolicy().hasHeightForWidth()) + self.achievements_group.setSizePolicy(sizePolicy4) + self.achievements_layout = QVBoxLayout(self.achievements_group) + self.achievements_layout.setObjectName("achievements_layout") + self.achievements_layout.setContentsMargins(0, 0, 0, 0) + self.achievement_stats_layout = QHBoxLayout() + self.achievement_stats_layout.setObjectName("achievement_stats_layout") + self.achievement_stats_layout.setContentsMargins(0, -1, 0, -1) + self.progress_label = QLabel(self.achievements_group) + self.progress_label.setObjectName("progress_label") + self.progress_label.setFont(font) + + self.achievement_stats_layout.addWidget(self.progress_label) + + self.progress_field = QLabel(self.achievements_group) + self.progress_field.setObjectName("progress_field") + + self.achievement_stats_layout.addWidget(self.progress_field) + + self.exp_label = QLabel(self.achievements_group) + self.exp_label.setObjectName("exp_label") + self.exp_label.setFont(font) + + self.achievement_stats_layout.addWidget(self.exp_label) + + self.exp_field = QLabel(self.achievements_group) + self.exp_field.setObjectName("exp_field") + + self.achievement_stats_layout.addWidget(self.exp_field) + + self.achievement_stats_layout.setStretch(1, 1) + self.achievement_stats_layout.setStretch(3, 1) + + self.achievements_layout.addLayout(self.achievement_stats_layout) + + self.achievements_toolbox = QToolBox(self.achievements_group) + self.achievements_toolbox.setObjectName("achievements_toolbox") + self.ach_progress_page = QWidget() + self.ach_progress_page.setObjectName("ach_progress_page") + self.ach_progress_page.setGeometry(QRect(0, 0, 297, 472)) + self.achievements_toolbox.addItem(self.ach_progress_page, "In progress") + self.ach_completed_page = QWidget() + self.ach_completed_page.setObjectName("ach_completed_page") + self.ach_completed_page.setGeometry(QRect(0, 0, 297, 472)) + self.achievements_toolbox.addItem(self.ach_completed_page, "Completed") + self.ach_uninitiated_page = QWidget() + self.ach_uninitiated_page.setObjectName("ach_uninitiated_page") + self.ach_uninitiated_page.setGeometry(QRect(0, 0, 297, 472)) + self.achievements_toolbox.addItem(self.ach_uninitiated_page, "Uninitiated") + self.ach_hidden_page = QWidget() + self.ach_hidden_page.setObjectName("ach_hidden_page") + self.ach_hidden_page.setGeometry(QRect(0, 0, 297, 472)) + self.achievements_toolbox.addItem(self.ach_hidden_page, "Hidden") + + self.achievements_layout.addWidget(self.achievements_toolbox) + + + self.right_layout.addWidget(self.achievements_group, 0, 2, 3, 1) + self.right_layout.setRowStretch(1, 1) self.right_layout.setColumnStretch(1, 1) + self.right_layout.setColumnStretch(2, 2) self.main_layout.addLayout(self.right_layout) @@ -401,10 +413,10 @@ def setupUi(self, GameDetails): self.retranslateUi(GameDetails) - self.achievements_toolbox.setCurrentIndex(0) self.actions_stack.setCurrentIndex(1) self.verify_stack.setCurrentIndex(0) self.move_stack.setCurrentIndex(0) + self.achievements_toolbox.setCurrentIndex(3) # setupUi @@ -414,14 +426,6 @@ def retranslateUi(self, GameDetails): self.add_tag_button.setToolTip(QCoreApplication.translate("GameDetails", "Add custom tag", None)) #endif // QT_CONFIG(tooltip) self.add_tag_button.setText(QCoreApplication.translate("GameDetails", "Add tag", None)) - self.progress_label.setText(QCoreApplication.translate("GameDetails", "Progress:", None)) - self.progress_field.setText(QCoreApplication.translate("GameDetails", "progress_error", None)) - self.exp_label.setText(QCoreApplication.translate("GameDetails", "Experience:", None)) - self.exp_field.setText(QCoreApplication.translate("GameDetails", "xp_error", None)) - self.achievements_toolbox.setItemText(self.achievements_toolbox.indexOf(self.ach_progress_page), QCoreApplication.translate("GameDetails", "In progress", None)) - self.achievements_toolbox.setItemText(self.achievements_toolbox.indexOf(self.ach_completed_page), QCoreApplication.translate("GameDetails", "Completed", None)) - self.achievements_toolbox.setItemText(self.achievements_toolbox.indexOf(self.ach_uninitiated_page), QCoreApplication.translate("GameDetails", "Uninitiated", None)) - self.achievements_toolbox.setItemText(self.achievements_toolbox.indexOf(self.ach_hidden_page), QCoreApplication.translate("GameDetails", "Hidden", None)) self.dev_label.setText(QCoreApplication.translate("GameDetails", "Developer", None)) self.app_name_label.setText(QCoreApplication.translate("GameDetails", "Application name", None)) self.version_label.setText(QCoreApplication.translate("GameDetails", "Version", None)) @@ -437,5 +441,13 @@ def retranslateUi(self, GameDetails): self.uninstall_button.setText(QCoreApplication.translate("GameDetails", "Uninstall", None)) self.install_button.setText(QCoreApplication.translate("GameDetails", "Install", None)) self.import_button.setText(QCoreApplication.translate("GameDetails", "Import", None)) + self.progress_label.setText(QCoreApplication.translate("GameDetails", "Progress:", None)) + self.progress_field.setText(QCoreApplication.translate("GameDetails", "progress_error", None)) + self.exp_label.setText(QCoreApplication.translate("GameDetails", "Experience:", None)) + self.exp_field.setText(QCoreApplication.translate("GameDetails", "xp_error", None)) + self.achievements_toolbox.setItemText(self.achievements_toolbox.indexOf(self.ach_progress_page), QCoreApplication.translate("GameDetails", "In progress", None)) + self.achievements_toolbox.setItemText(self.achievements_toolbox.indexOf(self.ach_completed_page), QCoreApplication.translate("GameDetails", "Completed", None)) + self.achievements_toolbox.setItemText(self.achievements_toolbox.indexOf(self.ach_uninitiated_page), QCoreApplication.translate("GameDetails", "Uninitiated", None)) + self.achievements_toolbox.setItemText(self.achievements_toolbox.indexOf(self.ach_hidden_page), QCoreApplication.translate("GameDetails", "Hidden", None)) # retranslateUi diff --git a/rare/ui/components/tabs/library/details/details.ui b/rare/ui/components/tabs/library/details/details.ui index 30afe75ee..695114b15 100644 --- a/rare/ui/components/tabs/library/details/details.ui +++ b/rare/ui/components/tabs/library/details/details.ui @@ -6,8 +6,8 @@ 0 0 - 870 - 601 + 928 + 626 @@ -53,11 +53,11 @@ - + 24 - + @@ -70,142 +70,6 @@ - - - - QFrame::Shape::StyledPanel - - - QFrame::Shadow::Sunken - - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - 0 - - - 0 - - - - - - true - - - - Progress: - - - - - - - progress_error - - - - - - - - true - - - - Experience: - - - - - - - xp_error - - - - - - - - - 0 - - - - - 0 - 0 - 274 - 417 - - - - In progress - - - - - - 0 - 0 - 274 - 417 - - - - Completed - - - - - - 0 - 0 - 274 - 417 - - - - Uninitiated - - - - - - 0 - 0 - 274 - 417 - - - - Hidden - - - - - - - @@ -693,6 +557,167 @@ + + + + Qt::Orientation::Horizontal + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + QFrame::Shape::StyledPanel + + + QFrame::Shadow::Sunken + + + + + + + + + 0 + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + 0 + + + + + + true + + + + Progress: + + + + + + + progress_error + + + + + + + + true + + + + Experience: + + + + + + + xp_error + + + + + + + + + 3 + + + + + 0 + 0 + 297 + 472 + + + + In progress + + + + + + 0 + 0 + 297 + 472 + + + + Completed + + + + + + 0 + 0 + 297 + 472 + + + + Uninitiated + + + + + + 0 + 0 + 297 + 472 + + + + Hidden + + + + + + + diff --git a/rare/ui/components/tabs/store/details.py b/rare/ui/components/tabs/store/details.py index dd6b35cee..8282c517e 100644 --- a/rare/ui/components/tabs/store/details.py +++ b/rare/ui/components/tabs/store/details.py @@ -18,6 +18,7 @@ QLayout, QPushButton, QSizePolicy, + QSpacerItem, QTextBrowser, QVBoxLayout, QWidget, @@ -28,7 +29,7 @@ class Ui_StoreDetailsWidget: def setupUi(self, StoreDetailsWidget): if not StoreDetailsWidget.objectName(): StoreDetailsWidget.setObjectName("StoreDetailsWidget") - StoreDetailsWidget.resize(850, 492) + StoreDetailsWidget.resize(928, 626) StoreDetailsWidget.setWindowTitle("StoreDetailsWidget") self.main_layout = QHBoxLayout(StoreDetailsWidget) self.main_layout.setObjectName("main_layout") @@ -53,30 +54,18 @@ def setupUi(self, StoreDetailsWidget): self.right_layout = QGridLayout() self.right_layout.setSpacing(24) self.right_layout.setObjectName("right_layout") - self.requirements_frame = QFrame(StoreDetailsWidget) - self.requirements_frame.setObjectName("requirements_frame") - sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Fixed) - sizePolicy1.setHorizontalStretch(0) - sizePolicy1.setVerticalStretch(0) - sizePolicy1.setHeightForWidth(self.requirements_frame.sizePolicy().hasHeightForWidth()) - self.requirements_frame.setSizePolicy(sizePolicy1) - self.requirements_frame.setFrameShape(QFrame.Shape.StyledPanel) - self.requirements_frame.setFrameShadow(QFrame.Shadow.Sunken) - self.requirements_layout = QHBoxLayout(self.requirements_frame) - self.requirements_layout.setObjectName("requirements_layout") - self.requirements_layout.setContentsMargins(0, 0, 0, 0) - - self.right_layout.addWidget(self.requirements_frame, 2, 0, 1, 2, Qt.AlignmentFlag.AlignBottom) - - self.description_label = QTextBrowser(StoreDetailsWidget) - self.description_label.setObjectName("description_label") - self.description_label.setMinimumSize(QSize(450, 0)) - self.description_label.setOpenExternalLinks(True) + self.description_field = QTextBrowser(StoreDetailsWidget) + self.description_field.setObjectName("description_field") + self.description_field.setMinimumSize(QSize(450, 0)) + self.description_field.setOpenExternalLinks(True) - self.right_layout.addWidget(self.description_label, 1, 0, 1, 1) + self.right_layout.addWidget(self.description_field, 1, 0, 1, 2) self.details_widget = QWidget(StoreDetailsWidget) self.details_widget.setObjectName("details_widget") + sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Fixed) + sizePolicy1.setHorizontalStretch(0) + sizePolicy1.setVerticalStretch(0) sizePolicy1.setHeightForWidth(self.details_widget.sizePolicy().hasHeightForWidth()) self.details_widget.setSizePolicy(sizePolicy1) self.details_widget.setMinimumSize(QSize(450, 0)) @@ -235,8 +224,29 @@ def setupUi(self, StoreDetailsWidget): self.right_layout.addWidget(self.details_widget, 0, 0, 1, 1) + self.right_layout_spacer = QSpacerItem(0, 0, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum) + + self.right_layout.addItem(self.right_layout_spacer, 0, 1, 1, 1) + + self.requirements_frame = QFrame(StoreDetailsWidget) + self.requirements_frame.setObjectName("requirements_frame") + sizePolicy1.setHeightForWidth(self.requirements_frame.sizePolicy().hasHeightForWidth()) + self.requirements_frame.setSizePolicy(sizePolicy1) + self.requirements_frame.setFrameShape(QFrame.Shape.StyledPanel) + self.requirements_frame.setFrameShadow(QFrame.Shadow.Sunken) + self.requirements_layout = QHBoxLayout(self.requirements_frame) + self.requirements_layout.setObjectName("requirements_layout") + + self.right_layout.addWidget(self.requirements_frame, 2, 0, 1, 2, Qt.AlignmentFlag.AlignBottom) + + self.spare_widget = QWidget(StoreDetailsWidget) + self.spare_widget.setObjectName("spare_widget") + + self.right_layout.addWidget(self.spare_widget, 0, 2, 3, 1) + self.right_layout.setRowStretch(1, 1) self.right_layout.setColumnStretch(1, 1) + self.right_layout.setColumnStretch(2, 2) self.main_layout.addLayout(self.right_layout) diff --git a/rare/ui/components/tabs/store/details.ui b/rare/ui/components/tabs/store/details.ui index 15f2b7e00..9fd91032d 100644 --- a/rare/ui/components/tabs/store/details.ui +++ b/rare/ui/components/tabs/store/details.ui @@ -6,8 +6,8 @@ 0 0 - 850 - 492 + 928 + 626 @@ -41,42 +41,12 @@ - + 24 - - - - - 0 - 0 - - - - QFrame::Shape::StyledPanel - - - QFrame::Shadow::Sunken - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - + + 450 @@ -397,6 +367,39 @@ + + + + Qt::Orientation::Horizontal + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + QFrame::Shape::StyledPanel + + + QFrame::Shadow::Sunken + + + + + + + diff --git a/rare/widgets/side_tab.py b/rare/widgets/side_tab.py index 6581737d9..2550bb4f9 100644 --- a/rare/widgets/side_tab.py +++ b/rare/widgets/side_tab.py @@ -1,3 +1,4 @@ +from abc import abstractmethod from logging import getLogger from typing import Protocol @@ -65,12 +66,15 @@ class SideTabContents: class SideTabContentsProtocol(Protocol): implements_scrollarea: bool + @abstractmethod def layout(self) -> QLayout: pass + @abstractmethod def set_title(self) -> Signal: pass + @abstractmethod def sizeHint(self) -> QSize: pass @@ -80,7 +84,8 @@ def __init__( self, widget: QWidget | SideTabContentsProtocol, title: str = '', - parent: QWidget = None, + *, + parent: QWidget | None = None, ): super(SideTabContainer, self).__init__(parent=parent) self.title = QLabel(self) @@ -120,7 +125,7 @@ def setTitle(self, text: str) -> None: class SideTabWidget(QTabWidget): back_clicked = Signal() - def __init__(self, show_back: bool = False, padding: int = -1, parent=None): + def __init__(self, show_back: bool = False, padding: int = -1, *, parent: QWidget | None = None): super(SideTabWidget, self).__init__(parent=parent) self.setTabBar(SideTabBar(padding=padding, parent=self)) self.setDocumentMode(True)