From d76fc2b68b65bd07c2e38fff18303396daf22d8a Mon Sep 17 00:00:00 2001
From: loathingKernel <142770+loathingKernel@users.noreply.github.com>
Date: Fri, 31 Mar 2023 01:07:45 +0300
Subject: [PATCH] ShopWidget: Fix layouting again
---
rare/components/tabs/store/__main__.py | 35 ++++++++++++++++++
rare/components/tabs/store/shop_widget.py | 43 +++++++++++-----------
rare/ui/components/tabs/store/store.py | 39 ++++++++++++--------
rare/ui/components/tabs/store/store.ui | 44 ++++++++++++++++-------
4 files changed, 111 insertions(+), 50 deletions(-)
create mode 100644 rare/components/tabs/store/__main__.py
diff --git a/rare/components/tabs/store/__main__.py b/rare/components/tabs/store/__main__.py
new file mode 100644
index 00000000..1f62692c
--- /dev/null
+++ b/rare/components/tabs/store/__main__.py
@@ -0,0 +1,35 @@
+import sys
+
+from PyQt5.QtCore import QSize
+from PyQt5.QtWidgets import QDialog, QApplication, QVBoxLayout
+from legendary.core import LegendaryCore
+
+from . import StoreTab
+
+
+class StoreWindow(QDialog):
+ def __init__(self):
+ super().__init__()
+
+ self.core = LegendaryCore()
+ self.core.login()
+ self.store_tab = StoreTab(self.core, self)
+
+ layout = QVBoxLayout(self)
+ layout.addWidget(self.store_tab)
+
+ self.store_tab.load()
+
+
+if __name__ == "__main__":
+ from rare.utils.misc import set_style_sheet
+ import rare.resources.static_css
+ import rare.resources.stylesheets.RareStyle
+
+ app = QApplication(sys.argv)
+
+ set_style_sheet("RareStyle")
+ window = StoreWindow()
+ window.resize(QSize(1280, 800))
+ window.show()
+ app.exec()
\ No newline at end of file
diff --git a/rare/components/tabs/store/shop_widget.py b/rare/components/tabs/store/shop_widget.py
index 4e72a8ef..20b3903b 100644
--- a/rare/components/tabs/store/shop_widget.py
+++ b/rare/components/tabs/store/shop_widget.py
@@ -39,12 +39,8 @@ class ShopWidget(QWidget, Ui_ShopWidget):
self.tags = []
self.types = []
self.update_games_allowed = True
- free_games_container_layout = QHBoxLayout(self.free_games_container)
- free_games_container_layout.setContentsMargins(0, 0, 0, 0)
- self.free_games_container.setContentsMargins(0, 0, 0, 3)
- self.free_games_container.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
- self.free_games_scrollarea.setDisabled(True)
- self.free_games_scrollarea.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
+
+ self.free_scrollarea.setDisabled(True)
self.free_game_widgets = []
self.active_search_request = False
@@ -125,35 +121,35 @@ class ShopWidget(QWidget, Ui_ShopWidget):
self.discount_widget.layout().update()
def add_free_games(self, free_games: list):
- for w in self.free_games_container.layout().findChildren(QGroupBox, options=Qt.FindDirectChildrenOnly):
- self.free_games_container.layout().removeWidget(w)
+ for w in self.free_container.layout().findChildren(QGroupBox, options=Qt.FindDirectChildrenOnly):
+ self.free_container.layout().removeWidget(w)
w.deleteLater()
if free_games and free_games[0] == "error":
- self.free_games_container.layout().addWidget(
+ self.free_container.layout().addWidget(
QLabel(self.tr("Failed to fetch free games: {}").format(free_games[1]))
)
btn = QPushButton(self.tr("Reload"))
- self.free_games_container.layout().addWidget(btn)
+ self.free_container.layout().addWidget(btn)
btn.clicked.connect(
lambda: self.api_core.get_free_games(self.add_free_games)
)
- self.free_games_container.setEnabled(True)
+ self.free_container.setEnabled(True)
return
- self.free_games_now = QGroupBox(self.tr("Free now"), parent=self.free_games_container)
+ self.free_games_now = QGroupBox(self.tr("Free now"), parent=self.free_container)
free_games_now_layout = QHBoxLayout(self.free_games_now)
# free_games_now_layout.setContentsMargins(0, 0, 0, 0)
self.free_games_now.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
self.free_games_now.setLayout(free_games_now_layout)
- self.free_games_container.layout().addWidget(self.free_games_now)
+ self.free_container.layout().addWidget(self.free_games_now)
- self.free_games_next = QGroupBox(self.tr("Free next week"), parent=self.free_games_container)
+ self.free_games_next = QGroupBox(self.tr("Free next week"), parent=self.free_container)
free_games_next_layout = QHBoxLayout(self.free_games_next)
# free_games_next_layout.setContentsMargins(0, 0, 0, 0)
self.free_games_next.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
self.free_games_next.setLayout(free_games_next_layout)
- self.free_games_container.layout().addWidget(self.free_games_next)
+ self.free_container.layout().addWidget(self.free_games_next)
date = datetime.datetime.now()
free_games_now = []
@@ -222,13 +218,13 @@ class ShopWidget(QWidget, Ui_ShopWidget):
self.free_games_next.layout().addWidget(w)
# self.coming_free_games.setFixedWidth(int(40 + len(coming_free_games) * 300))
- self.free_games_scrollarea.setMinimumHeight(
+ self.free_scrollarea.setMinimumHeight(
self.free_games_now.sizeHint().height()
- + self.free_games_container.contentsMargins().top()
- + self.free_games_container.contentsMargins().bottom()
- + self.free_games_scrollarea.horizontalScrollBar().sizeHint().height()
+ + self.free_container.layout().contentsMargins().top()
+ + self.free_container.layout().contentsMargins().bottom()
+ + self.free_scrollarea.horizontalScrollBar().sizeHint().height()
)
- self.free_games_scrollarea.setEnabled(True)
+ self.free_scrollarea.setEnabled(True)
def show_search_results(self):
if self.search_bar.text():
@@ -287,7 +283,8 @@ class ShopWidget(QWidget, Ui_ShopWidget):
self.reset_button.clicked.connect(self.reset_filters)
self.filter_scrollarea.setMinimumWidth(
self.filter_container.sizeHint().width()
- + self.filter_container_layout.spacing()
+ + self.filter_container.layout().contentsMargins().left()
+ + self.filter_container.layout().contentsMargins().right()
+ self.filter_scrollarea.verticalScrollBar().sizeHint().width()
)
@@ -327,10 +324,10 @@ class ShopWidget(QWidget, Ui_ShopWidget):
if removed_type and removed_type in self.types:
self.types.remove(removed_type)
if (self.types or self.price) or self.tags or self.on_discount.isChecked():
- self.free_games_scrollarea.setVisible(False)
+ self.free_scrollarea.setVisible(False)
self.discounts_group.setVisible(False)
else:
- self.free_games_scrollarea.setVisible(True)
+ self.free_scrollarea.setVisible(True)
if len(self.discounts_group.layout().children()) > 0:
self.discounts_group.setVisible(True)
diff --git a/rare/ui/components/tabs/store/store.py b/rare/ui/components/tabs/store/store.py
index e25179b9..3fe0fa68 100644
--- a/rare/ui/components/tabs/store/store.py
+++ b/rare/ui/components/tabs/store/store.py
@@ -14,7 +14,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_ShopWidget(object):
def setupUi(self, ShopWidget):
ShopWidget.setObjectName("ShopWidget")
- ShopWidget.resize(784, 525)
+ ShopWidget.resize(750, 588)
ShopWidget.setWindowTitle("Store")
self.shop_layout = QtWidgets.QHBoxLayout(ShopWidget)
self.shop_layout.setObjectName("shop_layout")
@@ -27,22 +27,30 @@ class Ui_ShopWidget(object):
self.games_scrollarea.setWidgetResizable(True)
self.games_scrollarea.setObjectName("games_scrollarea")
self.games_container = QtWidgets.QWidget()
- self.games_container.setGeometry(QtCore.QRect(0, 0, 611, 511))
+ self.games_container.setGeometry(QtCore.QRect(0, 0, 583, 574))
self.games_container.setObjectName("games_container")
self.games_container_layout = QtWidgets.QVBoxLayout(self.games_container)
self.games_container_layout.setContentsMargins(0, 0, 3, 0)
self.games_container_layout.setObjectName("games_container_layout")
- self.free_games_scrollarea = QtWidgets.QScrollArea(self.games_container)
- self.free_games_scrollarea.setFrameShape(QtWidgets.QFrame.NoFrame)
- self.free_games_scrollarea.setFrameShadow(QtWidgets.QFrame.Plain)
- self.free_games_scrollarea.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
- self.free_games_scrollarea.setWidgetResizable(True)
- self.free_games_scrollarea.setObjectName("free_games_scrollarea")
- self.free_games_container = QtWidgets.QWidget()
- self.free_games_container.setGeometry(QtCore.QRect(0, 0, 608, 166))
- self.free_games_container.setObjectName("free_games_container")
- self.free_games_scrollarea.setWidget(self.free_games_container)
- self.games_container_layout.addWidget(self.free_games_scrollarea)
+ self.free_scrollarea = QtWidgets.QScrollArea(self.games_container)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.free_scrollarea.sizePolicy().hasHeightForWidth())
+ self.free_scrollarea.setSizePolicy(sizePolicy)
+ self.free_scrollarea.setFrameShape(QtWidgets.QFrame.NoFrame)
+ self.free_scrollarea.setFrameShadow(QtWidgets.QFrame.Plain)
+ self.free_scrollarea.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
+ self.free_scrollarea.setWidgetResizable(True)
+ self.free_scrollarea.setObjectName("free_scrollarea")
+ self.free_container = QtWidgets.QWidget()
+ self.free_container.setGeometry(QtCore.QRect(0, 0, 580, 83))
+ self.free_container.setObjectName("free_container")
+ self.free_container_layout = QtWidgets.QHBoxLayout(self.free_container)
+ self.free_container_layout.setContentsMargins(0, 0, 0, 3)
+ self.free_container_layout.setObjectName("free_container_layout")
+ self.free_scrollarea.setWidget(self.free_container)
+ self.games_container_layout.addWidget(self.free_scrollarea)
self.discounts_group = QtWidgets.QGroupBox(self.games_container)
self.discounts_group.setObjectName("discounts_group")
self.discounts_layout = QtWidgets.QVBoxLayout(self.discounts_group)
@@ -86,10 +94,10 @@ class Ui_ShopWidget(object):
self.filter_scrollarea.setWidgetResizable(True)
self.filter_scrollarea.setObjectName("filter_scrollarea")
self.filter_container = QtWidgets.QWidget()
- self.filter_container.setGeometry(QtCore.QRect(0, 0, 151, 479))
+ self.filter_container.setGeometry(QtCore.QRect(0, 0, 145, 542))
self.filter_container.setObjectName("filter_container")
self.filter_container_layout = QtWidgets.QVBoxLayout(self.filter_container)
- self.filter_container_layout.setContentsMargins(0, 0, 0, 0)
+ self.filter_container_layout.setContentsMargins(0, 0, 3, 0)
self.filter_container_layout.setObjectName("filter_container_layout")
self.price_group = QtWidgets.QGroupBox(self.filter_container)
self.price_group.setObjectName("price_group")
@@ -141,6 +149,7 @@ class Ui_ShopWidget(object):
self.filter_scrollarea.setWidget(self.filter_container)
self.right_layout.addWidget(self.filter_scrollarea)
self.shop_layout.addLayout(self.right_layout)
+ self.shop_layout.setStretch(0, 1)
self.retranslateUi(ShopWidget)
diff --git a/rare/ui/components/tabs/store/store.ui b/rare/ui/components/tabs/store/store.ui
index 89d0f021..c5350030 100644
--- a/rare/ui/components/tabs/store/store.ui
+++ b/rare/ui/components/tabs/store/store.ui
@@ -6,14 +6,14 @@
0
0
- 784
- 525
+ 750
+ 588
Store
-
+
-
-
@@ -35,8 +35,8 @@
0
0
- 611
- 511
+ 583
+ 574
@@ -53,7 +53,13 @@
0
-
-
+
+
+
+ 0
+ 0
+
+
QFrame::NoFrame
@@ -66,15 +72,29 @@
true
-
+
0
0
- 608
- 166
+ 580
+ 83
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 3
+
+
@@ -149,8 +169,8 @@
0
0
- 151
- 479
+ 145
+ 542
@@ -161,7 +181,7 @@
0
- 0
+ 3
0