1
0
Fork 0
mirror of synced 2024-05-04 20:52:58 +12:00

ShopWidget: Fix layouting again

This commit is contained in:
loathingKernel 2023-03-31 01:07:45 +03:00
parent 2db34324af
commit d76fc2b68b
No known key found for this signature in database
GPG key ID: CE0C72D0B53821FD
4 changed files with 111 additions and 50 deletions

View file

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

View file

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

View file

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

View file

@ -6,14 +6,14 @@
<rect>
<x>0</x>
<y>0</y>
<width>784</width>
<height>525</height>
<width>750</width>
<height>588</height>
</rect>
</property>
<property name="windowTitle">
<string notr="true">Store</string>
</property>
<layout class="QHBoxLayout" name="shop_layout" stretch="0,0">
<layout class="QHBoxLayout" name="shop_layout" stretch="1,0">
<item>
<layout class="QVBoxLayout" name="left_layout">
<item>
@ -35,8 +35,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>611</width>
<height>511</height>
<width>583</width>
<height>574</height>
</rect>
</property>
<layout class="QVBoxLayout" name="games_container_layout">
@ -53,7 +53,13 @@
<number>0</number>
</property>
<item>
<widget class="QScrollArea" name="free_games_scrollarea">
<widget class="QScrollArea" name="free_scrollarea">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
@ -66,15 +72,29 @@
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="free_games_container">
<widget class="QWidget" name="free_container">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>608</width>
<height>166</height>
<width>580</width>
<height>83</height>
</rect>
</property>
<layout class="QHBoxLayout" name="free_container_layout">
<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>3</number>
</property>
</layout>
</widget>
</widget>
</item>
@ -149,8 +169,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>151</width>
<height>479</height>
<width>145</width>
<height>542</height>
</rect>
</property>
<layout class="QVBoxLayout" name="filter_container_layout">
@ -161,7 +181,7 @@
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
<number>3</number>
</property>
<property name="bottomMargin">
<number>0</number>