ShopWidget: Fix layouting again
This commit is contained in:
parent
74ee9f8e20
commit
2940ea7176
4 changed files with 111 additions and 50 deletions
35
rare/components/tabs/store/__main__.py
Normal file
35
rare/components/tabs/store/__main__.py
Normal 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()
|
|
@ -39,12 +39,8 @@ class ShopWidget(QWidget, Ui_ShopWidget):
|
||||||
self.tags = []
|
self.tags = []
|
||||||
self.types = []
|
self.types = []
|
||||||
self.update_games_allowed = True
|
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_scrollarea.setDisabled(True)
|
||||||
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_game_widgets = []
|
self.free_game_widgets = []
|
||||||
self.active_search_request = False
|
self.active_search_request = False
|
||||||
|
@ -121,35 +117,35 @@ class ShopWidget(QWidget, Ui_ShopWidget):
|
||||||
self.discount_widget.layout().update()
|
self.discount_widget.layout().update()
|
||||||
|
|
||||||
def add_free_games(self, free_games: list):
|
def add_free_games(self, free_games: list):
|
||||||
for w in self.free_games_container.layout().findChildren(QGroupBox, options=Qt.FindDirectChildrenOnly):
|
for w in self.free_container.layout().findChildren(QGroupBox, options=Qt.FindDirectChildrenOnly):
|
||||||
self.free_games_container.layout().removeWidget(w)
|
self.free_container.layout().removeWidget(w)
|
||||||
w.deleteLater()
|
w.deleteLater()
|
||||||
|
|
||||||
if free_games and free_games[0] == "error":
|
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]))
|
QLabel(self.tr("Failed to fetch free games: {}").format(free_games[1]))
|
||||||
)
|
)
|
||||||
btn = QPushButton(self.tr("Reload"))
|
btn = QPushButton(self.tr("Reload"))
|
||||||
self.free_games_container.layout().addWidget(btn)
|
self.free_container.layout().addWidget(btn)
|
||||||
btn.clicked.connect(
|
btn.clicked.connect(
|
||||||
lambda: self.api_core.get_free_games(self.add_free_games)
|
lambda: self.api_core.get_free_games(self.add_free_games)
|
||||||
)
|
)
|
||||||
self.free_games_container.setEnabled(True)
|
self.free_container.setEnabled(True)
|
||||||
return
|
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 = QHBoxLayout(self.free_games_now)
|
||||||
# free_games_now_layout.setContentsMargins(0, 0, 0, 0)
|
# free_games_now_layout.setContentsMargins(0, 0, 0, 0)
|
||||||
self.free_games_now.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
|
self.free_games_now.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
|
||||||
self.free_games_now.setLayout(free_games_now_layout)
|
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 = QHBoxLayout(self.free_games_next)
|
||||||
# free_games_next_layout.setContentsMargins(0, 0, 0, 0)
|
# free_games_next_layout.setContentsMargins(0, 0, 0, 0)
|
||||||
self.free_games_next.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
|
self.free_games_next.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
|
||||||
self.free_games_next.setLayout(free_games_next_layout)
|
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()
|
date = datetime.datetime.now()
|
||||||
free_games_now = []
|
free_games_now = []
|
||||||
|
@ -218,13 +214,13 @@ class ShopWidget(QWidget, Ui_ShopWidget):
|
||||||
self.free_games_next.layout().addWidget(w)
|
self.free_games_next.layout().addWidget(w)
|
||||||
# self.coming_free_games.setFixedWidth(int(40 + len(coming_free_games) * 300))
|
# 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_now.sizeHint().height()
|
||||||
+ self.free_games_container.contentsMargins().top()
|
+ self.free_container.layout().contentsMargins().top()
|
||||||
+ self.free_games_container.contentsMargins().bottom()
|
+ self.free_container.layout().contentsMargins().bottom()
|
||||||
+ self.free_games_scrollarea.horizontalScrollBar().sizeHint().height()
|
+ self.free_scrollarea.horizontalScrollBar().sizeHint().height()
|
||||||
)
|
)
|
||||||
self.free_games_scrollarea.setEnabled(True)
|
self.free_scrollarea.setEnabled(True)
|
||||||
|
|
||||||
def show_search_results(self):
|
def show_search_results(self):
|
||||||
if self.search_bar.text():
|
if self.search_bar.text():
|
||||||
|
@ -283,7 +279,8 @@ class ShopWidget(QWidget, Ui_ShopWidget):
|
||||||
self.reset_button.clicked.connect(self.reset_filters)
|
self.reset_button.clicked.connect(self.reset_filters)
|
||||||
self.filter_scrollarea.setMinimumWidth(
|
self.filter_scrollarea.setMinimumWidth(
|
||||||
self.filter_container.sizeHint().width()
|
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()
|
+ self.filter_scrollarea.verticalScrollBar().sizeHint().width()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -323,10 +320,10 @@ class ShopWidget(QWidget, Ui_ShopWidget):
|
||||||
if removed_type and removed_type in self.types:
|
if removed_type and removed_type in self.types:
|
||||||
self.types.remove(removed_type)
|
self.types.remove(removed_type)
|
||||||
if (self.types or self.price) or self.tags or self.on_discount.isChecked():
|
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)
|
self.discounts_group.setVisible(False)
|
||||||
else:
|
else:
|
||||||
self.free_games_scrollarea.setVisible(True)
|
self.free_scrollarea.setVisible(True)
|
||||||
if len(self.discounts_group.layout().children()) > 0:
|
if len(self.discounts_group.layout().children()) > 0:
|
||||||
self.discounts_group.setVisible(True)
|
self.discounts_group.setVisible(True)
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
|
||||||
class Ui_ShopWidget(object):
|
class Ui_ShopWidget(object):
|
||||||
def setupUi(self, ShopWidget):
|
def setupUi(self, ShopWidget):
|
||||||
ShopWidget.setObjectName("ShopWidget")
|
ShopWidget.setObjectName("ShopWidget")
|
||||||
ShopWidget.resize(784, 525)
|
ShopWidget.resize(750, 588)
|
||||||
ShopWidget.setWindowTitle("Store")
|
ShopWidget.setWindowTitle("Store")
|
||||||
self.shop_layout = QtWidgets.QHBoxLayout(ShopWidget)
|
self.shop_layout = QtWidgets.QHBoxLayout(ShopWidget)
|
||||||
self.shop_layout.setObjectName("shop_layout")
|
self.shop_layout.setObjectName("shop_layout")
|
||||||
|
@ -27,22 +27,30 @@ class Ui_ShopWidget(object):
|
||||||
self.games_scrollarea.setWidgetResizable(True)
|
self.games_scrollarea.setWidgetResizable(True)
|
||||||
self.games_scrollarea.setObjectName("games_scrollarea")
|
self.games_scrollarea.setObjectName("games_scrollarea")
|
||||||
self.games_container = QtWidgets.QWidget()
|
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.setObjectName("games_container")
|
||||||
self.games_container_layout = QtWidgets.QVBoxLayout(self.games_container)
|
self.games_container_layout = QtWidgets.QVBoxLayout(self.games_container)
|
||||||
self.games_container_layout.setContentsMargins(0, 0, 3, 0)
|
self.games_container_layout.setContentsMargins(0, 0, 3, 0)
|
||||||
self.games_container_layout.setObjectName("games_container_layout")
|
self.games_container_layout.setObjectName("games_container_layout")
|
||||||
self.free_games_scrollarea = QtWidgets.QScrollArea(self.games_container)
|
self.free_scrollarea = QtWidgets.QScrollArea(self.games_container)
|
||||||
self.free_games_scrollarea.setFrameShape(QtWidgets.QFrame.NoFrame)
|
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
|
||||||
self.free_games_scrollarea.setFrameShadow(QtWidgets.QFrame.Plain)
|
sizePolicy.setHorizontalStretch(0)
|
||||||
self.free_games_scrollarea.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
|
sizePolicy.setVerticalStretch(0)
|
||||||
self.free_games_scrollarea.setWidgetResizable(True)
|
sizePolicy.setHeightForWidth(self.free_scrollarea.sizePolicy().hasHeightForWidth())
|
||||||
self.free_games_scrollarea.setObjectName("free_games_scrollarea")
|
self.free_scrollarea.setSizePolicy(sizePolicy)
|
||||||
self.free_games_container = QtWidgets.QWidget()
|
self.free_scrollarea.setFrameShape(QtWidgets.QFrame.NoFrame)
|
||||||
self.free_games_container.setGeometry(QtCore.QRect(0, 0, 608, 166))
|
self.free_scrollarea.setFrameShadow(QtWidgets.QFrame.Plain)
|
||||||
self.free_games_container.setObjectName("free_games_container")
|
self.free_scrollarea.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
|
||||||
self.free_games_scrollarea.setWidget(self.free_games_container)
|
self.free_scrollarea.setWidgetResizable(True)
|
||||||
self.games_container_layout.addWidget(self.free_games_scrollarea)
|
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 = QtWidgets.QGroupBox(self.games_container)
|
||||||
self.discounts_group.setObjectName("discounts_group")
|
self.discounts_group.setObjectName("discounts_group")
|
||||||
self.discounts_layout = QtWidgets.QVBoxLayout(self.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.setWidgetResizable(True)
|
||||||
self.filter_scrollarea.setObjectName("filter_scrollarea")
|
self.filter_scrollarea.setObjectName("filter_scrollarea")
|
||||||
self.filter_container = QtWidgets.QWidget()
|
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.setObjectName("filter_container")
|
||||||
self.filter_container_layout = QtWidgets.QVBoxLayout(self.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.filter_container_layout.setObjectName("filter_container_layout")
|
||||||
self.price_group = QtWidgets.QGroupBox(self.filter_container)
|
self.price_group = QtWidgets.QGroupBox(self.filter_container)
|
||||||
self.price_group.setObjectName("price_group")
|
self.price_group.setObjectName("price_group")
|
||||||
|
@ -141,6 +149,7 @@ class Ui_ShopWidget(object):
|
||||||
self.filter_scrollarea.setWidget(self.filter_container)
|
self.filter_scrollarea.setWidget(self.filter_container)
|
||||||
self.right_layout.addWidget(self.filter_scrollarea)
|
self.right_layout.addWidget(self.filter_scrollarea)
|
||||||
self.shop_layout.addLayout(self.right_layout)
|
self.shop_layout.addLayout(self.right_layout)
|
||||||
|
self.shop_layout.setStretch(0, 1)
|
||||||
|
|
||||||
self.retranslateUi(ShopWidget)
|
self.retranslateUi(ShopWidget)
|
||||||
|
|
||||||
|
|
|
@ -6,14 +6,14 @@
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>784</width>
|
<width>750</width>
|
||||||
<height>525</height>
|
<height>588</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string notr="true">Store</string>
|
<string notr="true">Store</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QHBoxLayout" name="shop_layout" stretch="0,0">
|
<layout class="QHBoxLayout" name="shop_layout" stretch="1,0">
|
||||||
<item>
|
<item>
|
||||||
<layout class="QVBoxLayout" name="left_layout">
|
<layout class="QVBoxLayout" name="left_layout">
|
||||||
<item>
|
<item>
|
||||||
|
@ -35,8 +35,8 @@
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>611</width>
|
<width>583</width>
|
||||||
<height>511</height>
|
<height>574</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="games_container_layout">
|
<layout class="QVBoxLayout" name="games_container_layout">
|
||||||
|
@ -53,7 +53,13 @@
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<item>
|
<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">
|
<property name="frameShape">
|
||||||
<enum>QFrame::NoFrame</enum>
|
<enum>QFrame::NoFrame</enum>
|
||||||
</property>
|
</property>
|
||||||
|
@ -66,15 +72,29 @@
|
||||||
<property name="widgetResizable">
|
<property name="widgetResizable">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="free_games_container">
|
<widget class="QWidget" name="free_container">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>608</width>
|
<width>580</width>
|
||||||
<height>166</height>
|
<height>83</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</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>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
@ -149,8 +169,8 @@
|
||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>151</width>
|
<width>145</width>
|
||||||
<height>479</height>
|
<height>542</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="filter_container_layout">
|
<layout class="QVBoxLayout" name="filter_container_layout">
|
||||||
|
@ -161,7 +181,7 @@
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="rightMargin">
|
<property name="rightMargin">
|
||||||
<number>0</number>
|
<number>3</number>
|
||||||
</property>
|
</property>
|
||||||
<property name="bottomMargin">
|
<property name="bottomMargin">
|
||||||
<number>0</number>
|
<number>0</number>
|
||||||
|
|
Loading…
Reference in a new issue