Merge Browse and free games in one tab
This commit is contained in:
parent
a63a46ded5
commit
8fbf0bcacf
|
@ -7,9 +7,8 @@ from PyQt5.QtWidgets import QGroupBox, QMessageBox, QAction
|
|||
|
||||
from custom_legendary.core import LegendaryCore
|
||||
from custom_legendary.models.game import InstalledGame
|
||||
from rare import cache_dir
|
||||
from rare.components.dialogs.uninstall_dialog import UninstallDialog
|
||||
from rare.components.extra.Console import ConsoleWindow
|
||||
from rare.components.extra.console import ConsoleWindow
|
||||
from rare.utils import legendary_utils
|
||||
from rare.utils.utils import create_desktop_link
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@ class RareSettings(QWidget, Ui_RareSettings):
|
|||
(self.notification, "notification", True),
|
||||
(self.save_size, "save_size", False),
|
||||
(self.log_games, "show_console", False),
|
||||
(self.image_cache, "cache_images", True)
|
||||
# (self.image_cache, "cache_images", True)
|
||||
]
|
||||
|
||||
self.settings = QSettings()
|
||||
|
|
|
@ -2,7 +2,6 @@ from PyQt5.QtWidgets import QStackedWidget, QTabWidget
|
|||
|
||||
from custom_legendary.core import LegendaryCore
|
||||
from rare import cache_dir
|
||||
from rare.components.tabs.shop.browse_games import BrowseGames
|
||||
from rare.components.tabs.shop.game_info import ShopGameInfo
|
||||
from rare.components.tabs.shop.search_results import SearchResults
|
||||
from rare.components.tabs.shop.shop_api_core import ShopApiCore
|
||||
|
@ -19,12 +18,10 @@ class Shop(QStackedWidget):
|
|||
self.shop_api = ShopApiCore(self.core.egs.session.headers["Authorization"])
|
||||
|
||||
self.shop = ShopWidget(cache_dir, core, self.shop_api)
|
||||
self.browse_games = BrowseGames(cache_dir, self.shop_api)
|
||||
|
||||
self.store_tabs = QTabWidget()
|
||||
self.store_tabs.addTab(self.shop, self.tr("Games"))
|
||||
self.store_tabs.addTab(self.browse_games, self.tr("Browse"))
|
||||
self.store_tabs.tabBarClicked.connect(lambda x: self.browse_games.load() if x == 1 else None)
|
||||
# self.store_tabs.addTab(self.browse_games, self.tr("Browse"))
|
||||
|
||||
self.addWidget(self.store_tabs)
|
||||
|
||||
|
@ -40,11 +37,7 @@ class Shop(QStackedWidget):
|
|||
self.shop.show_info.connect(self.show_search_results)
|
||||
|
||||
self.shop.show_game.connect(self.show_game_info)
|
||||
self.browse_games.show_game.connect(self.show_game_info)
|
||||
self.shop_api.update_wishlist.connect(self.update_wishlist)
|
||||
|
||||
def update_wishlist(self):
|
||||
self.shop.update_wishlist()
|
||||
self.shop_api.update_wishlist.connect(self.shop.update_wishlist)
|
||||
|
||||
def load(self):
|
||||
if not self.init:
|
||||
|
|
|
@ -1,130 +0,0 @@
|
|||
import datetime
|
||||
import logging
|
||||
import random
|
||||
|
||||
from PyQt5.QtCore import pyqtSignal
|
||||
from PyQt5.QtWidgets import QWidget, QCheckBox, QVBoxLayout, QLabel
|
||||
|
||||
from rare.components.tabs.shop.constants import Constants
|
||||
from rare.components.tabs.shop.game_widgets import GameWidget
|
||||
from rare.components.tabs.shop.shop_models import BrowseModel
|
||||
from rare.ui.components.tabs.store.browse_games import Ui_browse_games
|
||||
from rare.utils.extra_widgets import FlowLayout, WaitingSpinner
|
||||
from rare.utils.utils import get_lang
|
||||
|
||||
logger = logging.getLogger("BrowseGames")
|
||||
|
||||
|
||||
class BrowseGames(QWidget, Ui_browse_games):
|
||||
show_game = pyqtSignal(dict)
|
||||
init = False
|
||||
price = ""
|
||||
tags = []
|
||||
types = []
|
||||
|
||||
def __init__(self, path, api_core):
|
||||
super(BrowseGames, self).__init__()
|
||||
self.setupUi(self)
|
||||
self.api_core = api_core
|
||||
self.path = path
|
||||
self.games_widget = QWidget()
|
||||
self.games_widget.setLayout(FlowLayout())
|
||||
self.games.setWidget(self.games_widget)
|
||||
|
||||
self.stack.addWidget(WaitingSpinner())
|
||||
|
||||
self.clear_price.toggled.connect(lambda: self.prepare_request("") if self.clear_price.isChecked() else None)
|
||||
self.free_button.toggled.connect(lambda: self.prepare_request("free") if self.free_button.isChecked() else None)
|
||||
self.under10.toggled.connect(
|
||||
lambda: self.prepare_request("<price>[0, 1000)") if self.under10.isChecked() else None)
|
||||
self.under20.toggled.connect(
|
||||
lambda: self.prepare_request("<price>[0, 2000)") if self.under20.isChecked() else None)
|
||||
self.under30.toggled.connect(
|
||||
lambda: self.prepare_request("<price>[0, 3000)") if self.under30.isChecked() else None)
|
||||
self.above.toggled.connect(lambda: self.prepare_request("<price>[1499,]") if self.above.isChecked() else None)
|
||||
self.on_discount.toggled.connect(lambda: self.prepare_request("sale") if self.on_discount.isChecked() else None)
|
||||
|
||||
constants = Constants()
|
||||
|
||||
for groupbox, variables in [(self.genre_gb, constants.categories),
|
||||
(self.platform_gb, constants.platforms),
|
||||
(self.others_gb, constants.others)]:
|
||||
|
||||
for text, tag in variables:
|
||||
checkbox = CheckBox(text, tag)
|
||||
checkbox.activated.connect(lambda x: self.prepare_request(added_tag=x))
|
||||
checkbox.deactivated.connect(lambda x: self.prepare_request(removed_tag=x))
|
||||
groupbox.layout().addWidget(checkbox)
|
||||
|
||||
for text, tag in constants.types:
|
||||
checkbox = CheckBox(text, tag)
|
||||
checkbox.activated.connect(lambda x: self.prepare_request(added_type=x))
|
||||
checkbox.deactivated.connect(lambda x: self.prepare_request(removed_type=x))
|
||||
self.type_gb.layout().addWidget(checkbox)
|
||||
|
||||
def load(self):
|
||||
if not self.init:
|
||||
self.prepare_request()
|
||||
self.init = True
|
||||
|
||||
def prepare_request(self, price: str = None, added_tag: int = 0, removed_tag: int = 0,
|
||||
added_type: str = "", removed_type: str = ""):
|
||||
|
||||
if price is not None:
|
||||
self.price = price
|
||||
if added_tag != 0:
|
||||
self.tags.append(added_tag)
|
||||
if removed_tag != 0 and removed_tag in self.tags:
|
||||
self.tags.remove(removed_tag)
|
||||
|
||||
if added_type:
|
||||
self.types.append(added_type)
|
||||
if removed_type and removed_type in self.types:
|
||||
self.types.remove(removed_type)
|
||||
|
||||
locale = get_lang()
|
||||
self.stack.setCurrentIndex(2)
|
||||
date = f"[,{datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%dT%X')}.{str(random.randint(0, 999)).zfill(3)}Z]"
|
||||
|
||||
browse_model = BrowseModel(locale=locale, date=date, count=30, price=self.price)
|
||||
browse_model.tag = "|".join(self.tags)
|
||||
|
||||
if self.types:
|
||||
browse_model.category = "|".join(self.types)
|
||||
|
||||
self.api_core.browse_games(browse_model, self.show_games)
|
||||
|
||||
def show_games(self, data):
|
||||
QWidget().setLayout(self.games_widget.layout())
|
||||
|
||||
if data:
|
||||
self.games_widget.setLayout(FlowLayout())
|
||||
|
||||
for game in data:
|
||||
w = GameWidget(self.path, game, 275)
|
||||
self.games_widget.layout().addWidget(w)
|
||||
w.show_info.connect(self.show_game.emit)
|
||||
|
||||
else:
|
||||
self.games_widget.setLayout(QVBoxLayout())
|
||||
self.games_widget.layout().addWidget(
|
||||
QLabel(self.tr("Could not get games matching the filter")))
|
||||
self.games_widget.layout().addStretch(1)
|
||||
self.stack.setCurrentIndex(0)
|
||||
|
||||
|
||||
class CheckBox(QCheckBox):
|
||||
activated = pyqtSignal(str)
|
||||
deactivated = pyqtSignal(str)
|
||||
|
||||
def __init__(self, text, tag):
|
||||
super(CheckBox, self).__init__(text)
|
||||
self.tag = tag
|
||||
|
||||
self.toggled.connect(self.handle_toggle)
|
||||
|
||||
def handle_toggle(self):
|
||||
if self.isChecked():
|
||||
self.activated.emit(self.tag)
|
||||
else:
|
||||
self.deactivated.emit(self.tag)
|
|
@ -107,3 +107,4 @@ search_query = "query searchStoreQuery($allowCountries: String, $category: Strin
|
|||
wishlist_query = "\n query wishlistQuery($country:String!, $locale:String) {\n Wishlist {\n wishlistItems {\n elements {\n id\n order\n created\n offerId\n updated\n namespace\n \n offer {\n productSlug\n urlSlug\n title\n id\n namespace\n offerType\n expiryDate\n status\n isCodeRedemptionOnly\n description\n effectiveDate\n keyImages {\n type\n url\n }\n seller {\n id\n name\n }\n productSlug\n urlSlug\n items {\n id\n namespace\n }\n customAttributes {\n key\n value\n }\n catalogNs {\n mappings(pageType: \"productHome\") {\n pageSlug\n pageType\n }\n }\n offerMappings {\n pageSlug\n pageType\n }\n categories {\n path\n }\n price(country: $country) {\n totalPrice {\n discountPrice\n originalPrice\n voucherDiscount\n discount\n fmtPrice(locale: $locale) {\n originalPrice\n discountPrice\n intermediatePrice\n }\n currencyCode\n currencyInfo {\n decimals\n symbol\n }\n }\n lineOffers {\n appliedRules {\n id\n endDate\n }\n }\n }\n }\n\n }\n }\n }\n }\n"
|
||||
add_to_wishlist_query = "\n mutation removeFromWishlistMutation($namespace: String!, $offerId: String!, $operation: RemoveOperation!) {\n Wishlist {\n removeFromWishlist(namespace: $namespace, offerId: $offerId, operation: $operation) {\n success\n }\n }\n }\n"
|
||||
remove_from_wishlist_query = "\n mutation removeFromWishlistMutation($namespace: String!, $offerId: String!, $operation: RemoveOperation!) {\n Wishlist {\n removeFromWishlist(namespace: $namespace, offerId: $offerId, operation: $operation) {\n success\n }\n }\n }\n"
|
||||
coupon_query = "\n query getCoupons($currencyCountry: String!, $identityId: String!, $locale: String) {\n CodeRedemption {\n coupons(currencyCountry: $currencyCountry, identityId: $identityId, includeSalesEventInfo: true) {\n code\n codeStatus\n codeType\n consumptionMetadata {\n amountDisplay {\n amount\n currency\n placement\n symbol\n }\n minSalesPriceDisplay {\n amount\n currency\n placement\n symbol\n }\n }\n endDate\n namespace\n salesEvent(locale: $locale) {\n eventName\n eventSlug\n voucherImages {\n type\n url\n }\n voucherLink\n }\n startDate\n }\n }\n }\n"
|
||||
|
|
|
@ -77,9 +77,9 @@ class ShopGameInfo(QWidget, Ui_shop_info):
|
|||
def add_to_wishlist(self):
|
||||
if not self.in_wishlist:
|
||||
return
|
||||
self.api_core.add_to_wishlist(self.game.namespace, self.game.offer_id,
|
||||
lambda success: self.wishlist_button.setText(self.tr("Remove from wishlist"))
|
||||
if success else self.wishlist_button.setText("Something goes wrong"))
|
||||
# self.api_core.add_to_wishlist(self.game.namespace, self.game.offer_id,
|
||||
# lambda success: self.wishlist_button.setText(self.tr("Remove from wishlist"))
|
||||
# if success else self.wishlist_button.setText("Something goes wrong"))
|
||||
else:
|
||||
self.api_core.remove_from_wishlist(self.game.namespace, self.game.offer_id,
|
||||
lambda success: self.wishlist_button.setVisible(False)
|
||||
|
|
|
@ -53,17 +53,6 @@ class GameWidget(QWidget):
|
|||
def mousePressEvent(self, a0: QtGui.QMouseEvent) -> None:
|
||||
self.show_info.emit(self.json_info)
|
||||
|
||||
@classmethod
|
||||
def from_request(cls, name, path, shop_api):
|
||||
c = cls(path)
|
||||
shop_api.search_game(name, c.handle_response)
|
||||
return c
|
||||
|
||||
def handle_response(self, data):
|
||||
|
||||
data = data["data"]["Catalog"]["searchStore"]["elements"][0]
|
||||
self.init_ui(data)
|
||||
|
||||
|
||||
class GameWidgetDiscount(GameWidget):
|
||||
def __init__(self, *args, **kwargs):
|
||||
|
|
|
@ -40,7 +40,6 @@ class SearchResults(QStackedWidget):
|
|||
self.api_core.search_game(text, self.show_results)
|
||||
|
||||
def show_results(self, results: dict):
|
||||
results = results["data"]["Catalog"]["searchStore"]["elements"]
|
||||
QVBoxLayout().addWidget(self.widget)
|
||||
self.widget = QWidget()
|
||||
self.layout = FlowLayout()
|
||||
|
|
|
@ -60,7 +60,7 @@ class ShopApiCore(QObject):
|
|||
self.manager.post(graphql_url, payload, lambda data: self._handle_search(data, handle_func))
|
||||
|
||||
def _handle_search(self, data, handle_func):
|
||||
handle_func(data)
|
||||
handle_func(data["data"]["Catalog"]["searchStore"]["elements"])
|
||||
|
||||
def browse_games(self, browse_model: BrowseModel, handle_func):
|
||||
if self.browse_active:
|
||||
|
|
|
@ -1,14 +1,15 @@
|
|||
import datetime
|
||||
import logging
|
||||
import random
|
||||
|
||||
from PyQt5.QtCore import Qt, pyqtSignal, QStringListModel
|
||||
from PyQt5.QtNetwork import QNetworkAccessManager
|
||||
from PyQt5.QtWidgets import QWidget, QCompleter, QGroupBox, QHBoxLayout, QScrollArea
|
||||
from PyQt5.QtCore import Qt, pyqtSignal
|
||||
from PyQt5.QtWidgets import QWidget, QCompleter, QGroupBox, QHBoxLayout, QScrollArea, QCheckBox, QVBoxLayout, QLabel
|
||||
|
||||
from custom_legendary.core import LegendaryCore
|
||||
from rare.components.tabs.shop import ShopApiCore
|
||||
from rare.components.tabs.shop.constants import search_query
|
||||
from rare.components.tabs.shop.constants import Constants
|
||||
from rare.components.tabs.shop.game_widgets import GameWidget, GameWidgetDiscount
|
||||
from rare.components.tabs.shop.shop_models import BrowseModel
|
||||
from rare.ui.components.tabs.store.store import Ui_ShopWidget
|
||||
from rare.utils.extra_widgets import WaitingSpinner, FlowLayout, ButtonLineEdit
|
||||
from rare.utils.utils import get_lang
|
||||
|
@ -31,26 +32,35 @@ class ShopWidget(QScrollArea, Ui_ShopWidget):
|
|||
self.setupUi(self)
|
||||
self.path = path
|
||||
self.core = core
|
||||
self.shop_api = shop_api
|
||||
self.manager = QNetworkAccessManager()
|
||||
self.free_games_widget = QWidget()
|
||||
self.free_games_widget.setLayout(FlowLayout())
|
||||
self.api_core = shop_api
|
||||
self.price = ""
|
||||
self.tags = []
|
||||
self.types = []
|
||||
self.locale = get_lang()
|
||||
self.update_games_allowed = True
|
||||
|
||||
self.free_games_now = QGroupBox(self.tr("Free Games"))
|
||||
self.free_games_now.setLayout(QHBoxLayout())
|
||||
self.free_games_widget.layout().addWidget(self.free_games_now)
|
||||
self.free_widget.layout().addWidget(self.free_games_now)
|
||||
self.coming_free_games = QGroupBox(self.tr("Free Games next week"))
|
||||
self.coming_free_games.setLayout(QHBoxLayout())
|
||||
self.free_games_widget.layout().addWidget(self.coming_free_games)
|
||||
self.free_games_stack.addWidget(WaitingSpinner())
|
||||
self.free_games_stack.addWidget(self.free_games_widget)
|
||||
self.free_game_group_box.layout().addWidget(self.coming_free_games)
|
||||
self.free_stack.addWidget(WaitingSpinner())
|
||||
self.free_stack.setCurrentIndex(1)
|
||||
|
||||
self.discount_widget.setLayout(FlowLayout())
|
||||
self.discount_stack.addWidget(WaitingSpinner())
|
||||
self.discount_stack.setCurrentIndex(1)
|
||||
|
||||
self.game_widget.setLayout(FlowLayout())
|
||||
self.game_stack.addWidget(WaitingSpinner())
|
||||
self.game_stack.setCurrentIndex(1)
|
||||
|
||||
self.completer = QCompleter()
|
||||
self.completer.setCaseSensitivity(Qt.CaseInsensitive)
|
||||
|
||||
self.data = []
|
||||
|
||||
self.search_bar = ButtonLineEdit("fa.search", placeholder_text=self.tr("Search Games"))
|
||||
self.scrollAreaWidgetContents.layout().insertWidget(0, self.search_bar)
|
||||
self.layout().insertWidget(0, self.search_bar)
|
||||
|
||||
# self.search_bar.textChanged.connect(self.search_games)
|
||||
|
||||
|
@ -58,46 +68,32 @@ class ShopWidget(QScrollArea, Ui_ShopWidget):
|
|||
self.search_bar.returnPressed.connect(self.show_search_results)
|
||||
self.search_bar.buttonClicked.connect(self.show_search_results)
|
||||
|
||||
self.init_filter()
|
||||
|
||||
# self.search_bar.textChanged.connect(self.load_completer)
|
||||
self.wishlist_gb.setLayout(FlowLayout())
|
||||
self.wishlist_gb.setVisible(False)
|
||||
self.locale = get_lang()
|
||||
|
||||
def load_completer(self, text):
|
||||
if text != "":
|
||||
|
||||
payload = {
|
||||
"query": search_query,
|
||||
"variables": {"category": "games/edition/base|bundles/games|editors|software/edition/base",
|
||||
"count": 20,
|
||||
"country": self.locale.upper(), "keywords": text, "locale": self.locale,
|
||||
"sortDir": "DESC",
|
||||
"allowCountries": self.locale.upper(),
|
||||
"start": 0, "tag": "", "withMapping": False, "withPrice": True}
|
||||
}
|
||||
self.search_request_manager.post("https://www.epicgames.com/graphql", payload)
|
||||
|
||||
def load(self):
|
||||
# load free games
|
||||
self.shop_api.get_free_games(self.add_free_games)
|
||||
self.api_core.get_free_games(self.add_free_games)
|
||||
# load wishlist
|
||||
self.shop_api.get_wishlist(self.add_wishlist_items)
|
||||
self.api_core.get_wishlist(self.add_wishlist_items)
|
||||
self.prepare_request()
|
||||
|
||||
def update_wishlist(self):
|
||||
self.shop_api.get_wishlist(self.add_wishlist_items)
|
||||
self.api_core.get_wishlist(self.add_wishlist_items)
|
||||
|
||||
def add_wishlist_items(self, wishlist):
|
||||
QWidget().setLayout(self.wishlist_gb.layout())
|
||||
QWidget().setLayout(self.discount_widget.layout())
|
||||
|
||||
self.wishlist_gb.setLayout(FlowLayout())
|
||||
self.discount_widget.setLayout(FlowLayout())
|
||||
discounts = 0
|
||||
for game in wishlist:
|
||||
if game["offer"]["price"]["totalPrice"]["discount"] > 0:
|
||||
w = GameWidgetDiscount(self.path, game["offer"])
|
||||
w.show_info.connect(self.show_game.emit)
|
||||
self.wishlist_gb.layout().addWidget(w)
|
||||
self.discount_widget.layout().addWidget(w)
|
||||
discounts += 1
|
||||
self.wishlist_gb.setVisible(discounts > 0)
|
||||
self.discounts_gb.setVisible(discounts > 0)
|
||||
|
||||
def add_free_games(self, free_games):
|
||||
date = datetime.datetime.now()
|
||||
|
@ -108,7 +104,7 @@ class ShopWidget(QScrollArea, Ui_ShopWidget):
|
|||
coming_free_games.append(game)
|
||||
continue
|
||||
try:
|
||||
# parse datetime
|
||||
# parse datetime to check if game is next week or now
|
||||
try:
|
||||
end_date = datetime.datetime.strptime(
|
||||
game["promotions"]["upcomingPromotionalOffers"][0]["promotionalOffers"][0]["endDate"],
|
||||
|
@ -131,6 +127,7 @@ class ShopWidget(QScrollArea, Ui_ShopWidget):
|
|||
'%Y-%m-%dT%H:%M:%S.%fZ')
|
||||
except Exception as e:
|
||||
print(e)
|
||||
logger.warning(str(e))
|
||||
continue
|
||||
|
||||
except TypeError:
|
||||
|
@ -140,30 +137,133 @@ class ShopWidget(QScrollArea, Ui_ShopWidget):
|
|||
free_games_now.append(game)
|
||||
elif start_date > date:
|
||||
coming_free_games.append(game)
|
||||
|
||||
# free games now
|
||||
for free_game in free_games_now:
|
||||
w = GameWidget(self.path, free_game)
|
||||
w = GameWidgetDiscount(self.path, free_game)
|
||||
w.show_info.connect(self.show_game.emit)
|
||||
self.free_games_now.layout().addWidget(w)
|
||||
self.free_game_widgets.append(w)
|
||||
|
||||
self.free_games_now.layout().addStretch(1)
|
||||
|
||||
# free games next week
|
||||
for free_game in coming_free_games:
|
||||
w = GameWidget(self.path, free_game)
|
||||
if free_game["title"] != "Mystery Game":
|
||||
w.show_info.connect(self.show_game.emit)
|
||||
self.coming_free_games.layout().addWidget(w)
|
||||
self.free_game_widgets.append(w)
|
||||
self.coming_free_games.layout().addStretch(1)
|
||||
# self.coming_free_games.setFixedWidth(int(40 + len(coming_free_games) * 300))
|
||||
self.free_games_stack.setCurrentIndex(1)
|
||||
|
||||
def set_completer(self, search_data):
|
||||
search_data = search_data["data"]["Catalog"]["searchStore"]["elements"]
|
||||
titles = [i.get("title") for i in search_data]
|
||||
model = QStringListModel()
|
||||
model.setStringList(titles)
|
||||
self.completer.setModel(model)
|
||||
self.free_stack.setCurrentIndex(0)
|
||||
|
||||
def show_search_results(self):
|
||||
self.show_info.emit(self.search_bar.text())
|
||||
|
||||
def init_filter(self):
|
||||
|
||||
self.none_price.toggled.connect(lambda: self.prepare_request("") if self.none_price.isChecked() else None)
|
||||
self.free_button.toggled.connect(lambda: self.prepare_request("free") if self.free_button.isChecked() else None)
|
||||
self.under10.toggled.connect(
|
||||
lambda: self.prepare_request("<price>[0, 1000)") if self.under10.isChecked() else None)
|
||||
self.under20.toggled.connect(
|
||||
lambda: self.prepare_request("<price>[0, 2000)") if self.under20.isChecked() else None)
|
||||
self.under30.toggled.connect(
|
||||
lambda: self.prepare_request("<price>[0, 3000)") if self.under30.isChecked() else None)
|
||||
self.above.toggled.connect(lambda: self.prepare_request("<price>[1499,]") if self.above.isChecked() else None)
|
||||
self.on_discount.toggled.connect(lambda: self.prepare_request("sale") if self.on_discount.isChecked() else None)
|
||||
|
||||
constants = Constants()
|
||||
|
||||
self.checkboxes = []
|
||||
|
||||
for groupbox, variables in [(self.genre_gb, constants.categories),
|
||||
(self.platform_gb, constants.platforms),
|
||||
(self.others_gb, constants.others),
|
||||
(self.type_gb, constants.types)]:
|
||||
|
||||
for text, tag in variables:
|
||||
checkbox = CheckBox(text, tag)
|
||||
checkbox.activated.connect(lambda x: self.prepare_request(added_tag=x))
|
||||
checkbox.deactivated.connect(lambda x: self.prepare_request(removed_tag=x))
|
||||
groupbox.layout().addWidget(checkbox)
|
||||
self.checkboxes.append(checkbox)
|
||||
self.reset_button.clicked.connect(self.reset_filters)
|
||||
|
||||
def reset_filters(self):
|
||||
self.update_games_allowed = False
|
||||
for cb in self.checkboxes:
|
||||
cb.setChecked(False)
|
||||
self.none_price.setChecked(True)
|
||||
|
||||
self.tags = []
|
||||
self.types = []
|
||||
self.update_games_allowed = True
|
||||
self.prepare_request("")
|
||||
|
||||
def prepare_request(self, price: str = "", added_tag: int = 0, removed_tag: int = 0,
|
||||
added_type: str = "", removed_type: str = ""):
|
||||
if not self.update_games_allowed:
|
||||
return
|
||||
|
||||
self.price = price
|
||||
if added_tag != 0:
|
||||
self.tags.append(added_tag)
|
||||
if removed_tag != 0 and removed_tag in self.tags:
|
||||
self.tags.remove(removed_tag)
|
||||
|
||||
if added_type:
|
||||
self.types.append(added_type)
|
||||
if removed_type and removed_type in self.types:
|
||||
self.types.remove(removed_type)
|
||||
if (self.types or self.price) or self.tags:
|
||||
self.free_game_group_box.setVisible(False)
|
||||
self.discounts_gb.setVisible(False)
|
||||
else:
|
||||
self.free_game_group_box.setVisible(True)
|
||||
if len(self.discounts_gb.layout().children()) > 0:
|
||||
self.discounts_gb.setVisible(True)
|
||||
|
||||
locale = get_lang()
|
||||
self.game_stack.setCurrentIndex(1)
|
||||
date = f"[,{datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%dT%X')}.{str(random.randint(0, 999)).zfill(3)}Z]"
|
||||
|
||||
browse_model = BrowseModel(locale=locale, date=date, count=20, price=self.price)
|
||||
browse_model.tag = "|".join(self.tags)
|
||||
|
||||
if self.types:
|
||||
browse_model.category = "|".join(self.types)
|
||||
|
||||
self.api_core.browse_games(browse_model, self.show_games)
|
||||
|
||||
def show_games(self, data):
|
||||
QWidget().setLayout(self.game_widget.layout())
|
||||
if data:
|
||||
self.game_widget.setLayout(FlowLayout())
|
||||
|
||||
for game in data:
|
||||
w = GameWidget(self.path, game, 275)
|
||||
self.game_widget.layout().addWidget(w)
|
||||
w.show_info.connect(self.show_game.emit)
|
||||
|
||||
else:
|
||||
self.game_widget.setLayout(QVBoxLayout())
|
||||
self.game_widget.layout().addWidget(
|
||||
QLabel(self.tr("Could not get games matching the filter")))
|
||||
self.game_widget.layout().addStretch(1)
|
||||
self.game_stack.setCurrentIndex(0)
|
||||
|
||||
|
||||
class CheckBox(QCheckBox):
|
||||
activated = pyqtSignal(str)
|
||||
deactivated = pyqtSignal(str)
|
||||
|
||||
def __init__(self, text, tag):
|
||||
super(CheckBox, self).__init__(text)
|
||||
self.tag = tag
|
||||
|
||||
self.toggled.connect(self.handle_toggle)
|
||||
|
||||
def handle_toggle(self):
|
||||
if self.isChecked():
|
||||
self.activated.emit(self.tag)
|
||||
else:
|
||||
self.deactivated.emit(self.tag)
|
||||
|
|
|
@ -14,93 +14,12 @@ from PyQt5 import QtCore, QtGui, QtWidgets
|
|||
class Ui_RareSettings(object):
|
||||
def setupUi(self, RareSettings):
|
||||
RareSettings.setObjectName("RareSettings")
|
||||
RareSettings.resize(694, 532)
|
||||
|
||||
RareSettings.resize(544, 532)
|
||||
self.rare_layout = QtWidgets.QGridLayout(RareSettings)
|
||||
self.rare_layout.setObjectName("rare_layout")
|
||||
self.settings_group = QtWidgets.QGroupBox(RareSettings)
|
||||
self.settings_group.setObjectName("settings_group")
|
||||
self.behavior_layout = QtWidgets.QGridLayout(self.settings_group)
|
||||
self.behavior_layout.setObjectName("behavior_layout")
|
||||
self.confirm_start = QtWidgets.QCheckBox(self.settings_group)
|
||||
self.confirm_start.setObjectName("confirm_start")
|
||||
self.behavior_layout.addWidget(self.confirm_start, 2, 0, 1, 1)
|
||||
self.notification = QtWidgets.QCheckBox(self.settings_group)
|
||||
self.notification.setObjectName("notification")
|
||||
self.behavior_layout.addWidget(self.notification, 4, 0, 1, 1)
|
||||
self.auto_update = QtWidgets.QCheckBox(self.settings_group)
|
||||
self.auto_update.setObjectName("auto_update")
|
||||
self.behavior_layout.addWidget(self.auto_update, 1, 0, 1, 1)
|
||||
|
||||
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.behavior_layout.addItem(spacerItem, 2, 1, 2, 1)
|
||||
self.auto_update = QtWidgets.QCheckBox(self.settings_group)
|
||||
self.auto_update.setObjectName("auto_update")
|
||||
self.behavior_layout.addWidget(self.auto_update, 1, 0, 1, 1)
|
||||
self.save_size = QtWidgets.QCheckBox(self.settings_group)
|
||||
self.save_size.setObjectName("save_size")
|
||||
self.behavior_layout.addWidget(self.save_size, 5, 0, 1, 1)
|
||||
self.auto_sync_cloud = QtWidgets.QCheckBox(self.settings_group)
|
||||
self.auto_sync_cloud.setObjectName("auto_sync_cloud")
|
||||
self.behavior_layout.addWidget(self.auto_sync_cloud, 3, 0, 1, 1)
|
||||
self.notification = QtWidgets.QCheckBox(self.settings_group)
|
||||
self.notification.setObjectName("notification")
|
||||
self.behavior_layout.addWidget(self.notification, 4, 0, 1, 1)
|
||||
self.sys_tray = QtWidgets.QCheckBox(self.settings_group)
|
||||
self.sys_tray.setObjectName("sys_tray")
|
||||
self.behavior_layout.addWidget(self.sys_tray, 0, 0, 1, 1)
|
||||
self.log_games = QtWidgets.QCheckBox(self.settings_group)
|
||||
self.log_games.setObjectName("log_games")
|
||||
self.behavior_layout.addWidget(self.log_games, 6, 0, 1, 1)
|
||||
self.confirm_start = QtWidgets.QCheckBox(self.settings_group)
|
||||
self.confirm_start.setObjectName("confirm_start")
|
||||
self.behavior_layout.addWidget(self.confirm_start, 2, 0, 1, 1)
|
||||
self.sys_tray = QtWidgets.QCheckBox(self.settings_group)
|
||||
self.sys_tray.setObjectName("sys_tray")
|
||||
self.behavior_layout.addWidget(self.sys_tray, 0, 0, 1, 1)
|
||||
self.image_cache = QtWidgets.QCheckBox(self.settings_group)
|
||||
self.image_cache.setObjectName("image_cache")
|
||||
self.behavior_layout.addWidget(self.image_cache, 6, 0, 1, 1)
|
||||
self.rare_layout.addWidget(self.settings_group, 2, 0, 1, 1, QtCore.Qt.AlignTop)
|
||||
self.interface_group = QtWidgets.QGroupBox(RareSettings)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.interface_group.sizePolicy().hasHeightForWidth())
|
||||
self.interface_group.setSizePolicy(sizePolicy)
|
||||
self.interface_group.setObjectName("interface_group")
|
||||
self.interface_layout = QtWidgets.QGridLayout(self.interface_group)
|
||||
self.interface_layout.setObjectName("interface_layout")
|
||||
self.style_label = QtWidgets.QLabel(self.interface_group)
|
||||
self.style_label.setObjectName("style_label")
|
||||
self.interface_layout.addWidget(self.style_label, 2, 0, 1, 1, QtCore.Qt.AlignRight)
|
||||
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.interface_layout.addItem(spacerItem1, 1, 2, 1, 1)
|
||||
self.lang_select = QtWidgets.QComboBox(self.interface_group)
|
||||
self.lang_select.setObjectName("lang_select")
|
||||
self.interface_layout.addWidget(self.lang_select, 0, 1, 1, 1)
|
||||
self.color_select = QtWidgets.QComboBox(self.interface_group)
|
||||
self.color_select.setObjectName("color_select")
|
||||
self.color_select.addItem("")
|
||||
self.interface_layout.addWidget(self.color_select, 1, 1, 1, 1)
|
||||
self.style_select = QtWidgets.QComboBox(self.interface_group)
|
||||
self.style_select.setObjectName("style_select")
|
||||
self.style_select.addItem("")
|
||||
self.interface_layout.addWidget(self.style_select, 2, 1, 1, 1)
|
||||
self.lang_label = QtWidgets.QLabel(self.interface_group)
|
||||
self.lang_label.setObjectName("lang_label")
|
||||
self.interface_layout.addWidget(self.lang_label, 0, 0, 1, 1, QtCore.Qt.AlignRight)
|
||||
self.color_label = QtWidgets.QLabel(self.interface_group)
|
||||
self.color_label.setObjectName("color_label")
|
||||
self.interface_layout.addWidget(self.color_label, 1, 0, 1, 1, QtCore.Qt.AlignRight)
|
||||
self.interface_info = QtWidgets.QLabel(self.interface_group)
|
||||
font = QtGui.QFont()
|
||||
font.setItalic(True)
|
||||
self.interface_info.setFont(font)
|
||||
self.interface_info.setWordWrap(True)
|
||||
self.interface_info.setObjectName("interface_info")
|
||||
self.interface_layout.addWidget(self.interface_info, 3, 0, 1, 3)
|
||||
self.rare_layout.addWidget(self.interface_group, 1, 0, 1, 1, QtCore.Qt.AlignTop)
|
||||
self.rpc_layout = QtWidgets.QVBoxLayout()
|
||||
self.rpc_layout.setObjectName("rpc_layout")
|
||||
self.rare_layout.addLayout(self.rpc_layout, 1, 1, 1, 1)
|
||||
self.groupBox = QtWidgets.QGroupBox(RareSettings)
|
||||
self.groupBox.setObjectName("groupBox")
|
||||
self.verticalLayout = QtWidgets.QVBoxLayout(self.groupBox)
|
||||
|
@ -112,11 +31,34 @@ class Ui_RareSettings(object):
|
|||
self.startmenu_link.setObjectName("startmenu_link")
|
||||
self.verticalLayout.addWidget(self.startmenu_link)
|
||||
self.rare_layout.addWidget(self.groupBox, 2, 1, 1, 1, QtCore.Qt.AlignTop)
|
||||
self.rpc_layout = QtWidgets.QVBoxLayout()
|
||||
self.rpc_layout.setObjectName("rpc_layout")
|
||||
self.rare_layout.addLayout(self.rpc_layout, 1, 1, 1, 1)
|
||||
spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.rare_layout.addItem(spacerItem2, 3, 0, 1, 2)
|
||||
self.settings_group = QtWidgets.QGroupBox(RareSettings)
|
||||
self.settings_group.setObjectName("settings_group")
|
||||
self.behavior_layout = QtWidgets.QGridLayout(self.settings_group)
|
||||
self.behavior_layout.setObjectName("behavior_layout")
|
||||
self.confirm_start = QtWidgets.QCheckBox(self.settings_group)
|
||||
self.confirm_start.setObjectName("confirm_start")
|
||||
self.behavior_layout.addWidget(self.confirm_start, 2, 0, 1, 1)
|
||||
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.behavior_layout.addItem(spacerItem, 2, 1, 2, 1)
|
||||
self.auto_sync_cloud = QtWidgets.QCheckBox(self.settings_group)
|
||||
self.auto_sync_cloud.setObjectName("auto_sync_cloud")
|
||||
self.behavior_layout.addWidget(self.auto_sync_cloud, 3, 0, 1, 1)
|
||||
self.sys_tray = QtWidgets.QCheckBox(self.settings_group)
|
||||
self.sys_tray.setObjectName("sys_tray")
|
||||
self.behavior_layout.addWidget(self.sys_tray, 0, 0, 1, 1)
|
||||
self.save_size = QtWidgets.QCheckBox(self.settings_group)
|
||||
self.save_size.setObjectName("save_size")
|
||||
self.behavior_layout.addWidget(self.save_size, 5, 0, 1, 1)
|
||||
self.notification = QtWidgets.QCheckBox(self.settings_group)
|
||||
self.notification.setObjectName("notification")
|
||||
self.behavior_layout.addWidget(self.notification, 4, 0, 1, 1)
|
||||
self.auto_update = QtWidgets.QCheckBox(self.settings_group)
|
||||
self.auto_update.setObjectName("auto_update")
|
||||
self.behavior_layout.addWidget(self.auto_update, 1, 0, 1, 1)
|
||||
self.log_games = QtWidgets.QCheckBox(self.settings_group)
|
||||
self.log_games.setObjectName("log_games")
|
||||
self.behavior_layout.addWidget(self.log_games, 6, 0, 1, 1)
|
||||
self.rare_layout.addWidget(self.settings_group, 2, 0, 1, 1, QtCore.Qt.AlignTop)
|
||||
self.log_dir_group = QtWidgets.QGroupBox(RareSettings)
|
||||
self.log_dir_group.setObjectName("log_dir_group")
|
||||
self.log_dir_layout = QtWidgets.QVBoxLayout(self.log_dir_group)
|
||||
|
@ -132,16 +74,50 @@ class Ui_RareSettings(object):
|
|||
self.log_dir_size_label.setWordWrap(True)
|
||||
self.log_dir_size_label.setObjectName("log_dir_size_label")
|
||||
self.log_dir_layout.addWidget(self.log_dir_size_label)
|
||||
self.rare_layout.addWidget(self.log_dir_group, 0, 1, 1, 1)
|
||||
self.rare_layout.addWidget(self.log_dir_group, 0, 1, 1, 1, QtCore.Qt.AlignTop)
|
||||
self.interface_group = QtWidgets.QGroupBox(RareSettings)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.interface_group.sizePolicy().hasHeightForWidth())
|
||||
self.interface_group.setSizePolicy(sizePolicy)
|
||||
self.interface_group.setObjectName("interface_group")
|
||||
self.interface_layout = QtWidgets.QGridLayout(self.interface_group)
|
||||
self.interface_layout.setObjectName("interface_layout")
|
||||
self.color_select = QtWidgets.QComboBox(self.interface_group)
|
||||
self.color_select.setObjectName("color_select")
|
||||
self.color_select.addItem("")
|
||||
self.interface_layout.addWidget(self.color_select, 1, 1, 1, 1)
|
||||
self.style_label = QtWidgets.QLabel(self.interface_group)
|
||||
self.style_label.setObjectName("style_label")
|
||||
self.interface_layout.addWidget(self.style_label, 2, 0, 1, 1, QtCore.Qt.AlignRight)
|
||||
self.style_select = QtWidgets.QComboBox(self.interface_group)
|
||||
self.style_select.setObjectName("style_select")
|
||||
self.style_select.addItem("")
|
||||
self.interface_layout.addWidget(self.style_select, 2, 1, 1, 1)
|
||||
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
|
||||
self.interface_layout.addItem(spacerItem1, 1, 2, 1, 1)
|
||||
self.interface_info = QtWidgets.QLabel(self.interface_group)
|
||||
font = QtGui.QFont()
|
||||
font.setItalic(True)
|
||||
self.interface_info.setFont(font)
|
||||
self.interface_info.setWordWrap(True)
|
||||
self.interface_info.setObjectName("interface_info")
|
||||
self.interface_layout.addWidget(self.interface_info, 3, 0, 1, 3)
|
||||
self.lang_label = QtWidgets.QLabel(self.interface_group)
|
||||
self.lang_label.setObjectName("lang_label")
|
||||
self.interface_layout.addWidget(self.lang_label, 0, 0, 1, 1, QtCore.Qt.AlignRight)
|
||||
self.lang_select = QtWidgets.QComboBox(self.interface_group)
|
||||
self.lang_select.setObjectName("lang_select")
|
||||
self.interface_layout.addWidget(self.lang_select, 0, 1, 1, 1)
|
||||
self.color_label = QtWidgets.QLabel(self.interface_group)
|
||||
self.color_label.setObjectName("color_label")
|
||||
self.interface_layout.addWidget(self.color_label, 1, 0, 1, 1, QtCore.Qt.AlignRight)
|
||||
self.rare_layout.addWidget(self.interface_group, 1, 0, 1, 1, QtCore.Qt.AlignTop)
|
||||
self.img_dir_group = QtWidgets.QGroupBox(RareSettings)
|
||||
self.img_dir_group.setObjectName("img_dir_group")
|
||||
self.img_dir_layout = QtWidgets.QVBoxLayout(self.img_dir_group)
|
||||
self.img_dir_layout.setObjectName("img_dir_layout")
|
||||
self.rare_layout.addWidget(self.img_dir_group, 0, 0, 1, 1)
|
||||
self.label = QtWidgets.QLabel(self.img_dir_group)
|
||||
self.label.setWordWrap(True)
|
||||
self.label.setObjectName("label")
|
||||
self.img_dir_layout.addWidget(self.label)
|
||||
self.rare_layout.addWidget(self.img_dir_group, 0, 0, 1, 1, QtCore.Qt.AlignTop)
|
||||
spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.rare_layout.addItem(spacerItem2, 3, 0, 1, 2)
|
||||
|
@ -152,40 +128,28 @@ class Ui_RareSettings(object):
|
|||
def retranslateUi(self, RareSettings):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
RareSettings.setWindowTitle(_translate("RareSettings", "RareSettings"))
|
||||
self.groupBox.setTitle(_translate("RareSettings", "Shortcuts"))
|
||||
self.desktop_link.setText(_translate("RareSettings", "Create Desktop link"))
|
||||
self.startmenu_link.setText(_translate("RareSettings", "Create start menu link"))
|
||||
self.settings_group.setTitle(_translate("RareSettings", "Behavior"))
|
||||
self.confirm_start.setText(_translate("RareSettings", "Confirm game launch"))
|
||||
self.auto_update.setText(_translate("RareSettings", "Update games on application startup"))
|
||||
self.save_size.setText(_translate("RareSettings", "Restore window size on application startup"))
|
||||
self.auto_sync_cloud.setText(_translate("RareSettings", "Automatically sync with cloud"))
|
||||
self.notification.setText(_translate("RareSettings", "Show notification on download completion"))
|
||||
self.sys_tray.setText(_translate("RareSettings", "Exit to System tray"))
|
||||
self.log_games.setText(_translate("RareSettings", "Show console for game debug"))
|
||||
self.save_size.setText(_translate("RareSettings", "Restore window size on application startup"))
|
||||
self.notification.setText(_translate("RareSettings", "Show notification on download completion"))
|
||||
self.auto_update.setText(_translate("RareSettings", "Update games on application startup"))
|
||||
self.save_size.setText(_translate("RareSettings", "Restore window size on application startup"))
|
||||
self.auto_sync_cloud.setText(_translate("RareSettings", "Automatically sync with cloud"))
|
||||
self.confirm_start.setText(_translate("RareSettings", "Confirm game launch"))
|
||||
self.sys_tray.setText(_translate("RareSettings", "Exit to System tray"))
|
||||
self.image_cache.setText(_translate("RareSettings", "Cache images in store"))
|
||||
self.log_games.setText(_translate("RareSettings", "Open console for game output"))
|
||||
self.log_dir_group.setTitle(_translate("RareSettings", "Logs"))
|
||||
self.log_dir_open_button.setText(_translate("RareSettings", "Open Log directory"))
|
||||
self.log_dir_clean_button.setText(_translate("RareSettings", "Clean Log directory"))
|
||||
self.interface_group.setTitle(_translate("RareSettings", "Interface"))
|
||||
self.style_label.setText(_translate("RareSettings", "Style Sheet"))
|
||||
self.color_select.setItemText(0, _translate("RareSettings", "None"))
|
||||
self.style_label.setText(_translate("RareSettings", "Style Sheet"))
|
||||
self.style_select.setItemText(0, _translate("RareSettings", "None"))
|
||||
self.interface_info.setText(_translate("RareSettings", "Restart Rare to apply."))
|
||||
self.lang_label.setText(_translate("RareSettings", "Language"))
|
||||
self.color_label.setText(_translate("RareSettings", "Color Scheme"))
|
||||
self.interface_info.setText(_translate("RareSettings", "Restart Rare to apply."))
|
||||
self.groupBox.setTitle(_translate("RareSettings", "Shortcuts"))
|
||||
self.desktop_link.setText(_translate("RareSettings", "Create Desktop link"))
|
||||
self.startmenu_link.setText(_translate("RareSettings", "Create start menu link"))
|
||||
self.log_dir_group.setTitle(_translate("RareSettings", "Logs"))
|
||||
self.log_dir_open_button.setText(_translate("RareSettings", "Open Log directory"))
|
||||
self.log_dir_clean_button.setText(_translate("RareSettings", "Clean Log directory"))
|
||||
self.img_dir_group.setTitle(_translate("RareSettings", "Image Cache Directory"))
|
||||
self.label.setText(_translate("RareSettings",
|
||||
"To change image directory, edit XDG_DATA_HOME variable. To change cache directory edit XDG_CACHE_HOME variable"))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
|
@ -2,16 +2,24 @@
|
|||
<ui version="4.0">
|
||||
<class>RareSettings</class>
|
||||
<widget class="QWidget" name="RareSettings">
|
||||
<property name="windowTitle">
|
||||
<string>RareSettings</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="rare_layout">
|
||||
<item row="1" column="1">
|
||||
<layout class="QVBoxLayout" name="rpc_layout"/>
|
||||
</item>
|
||||
<item row="2" column="1" alignment="Qt::AlignTop">
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="title">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>544</width>
|
||||
<height>532</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>RareSettings</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="rare_layout">
|
||||
<item row="1" column="1">
|
||||
<layout class="QVBoxLayout" name="rpc_layout"/>
|
||||
</item>
|
||||
<item row="2" column="1" alignment="Qt::AlignTop">
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<property name="title">
|
||||
<string>Shortcuts</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
|
@ -37,63 +45,70 @@
|
|||
<property name="title">
|
||||
<string>Behavior</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="behavior_layout">
|
||||
<item row="2" column="1" rowspan="2">
|
||||
<spacer name="settings_hspacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<widget class="QCheckBox" name="save_size">
|
||||
<property name="text">
|
||||
<string>Restore window size on application startup</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QCheckBox" name="notification">
|
||||
<property name="text">
|
||||
<string>Show notification on download completion</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QCheckBox" name="auto_sync_cloud">
|
||||
<property name="text">
|
||||
<string>Automatically sync with cloud</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QCheckBox" name="confirm_start">
|
||||
<property name="text">
|
||||
<string>Confirm game launch</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QCheckBox" name="auto_update">
|
||||
<property name="text">
|
||||
<string>Update games on application startup</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QCheckBox" name="sys_tray">
|
||||
<property name="text">
|
||||
<string>Exit to System tray</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
<layout class="QGridLayout" name="behavior_layout">
|
||||
<item row="2" column="0">
|
||||
<widget class="QCheckBox" name="confirm_start">
|
||||
<property name="text">
|
||||
<string>Confirm game launch</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1" rowspan="2">
|
||||
<spacer name="settings_hspacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QCheckBox" name="auto_sync_cloud">
|
||||
<property name="text">
|
||||
<string>Automatically sync with cloud</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QCheckBox" name="sys_tray">
|
||||
<property name="text">
|
||||
<string>Exit to System tray</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<widget class="QCheckBox" name="save_size">
|
||||
<property name="text">
|
||||
<string>Restore window size on application startup</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QCheckBox" name="notification">
|
||||
<property name="text">
|
||||
<string>Show notification on download completion</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QCheckBox" name="auto_update">
|
||||
<property name="text">
|
||||
<string>Update games on application startup</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="0">
|
||||
<widget class="QCheckBox" name="log_games">
|
||||
<property name="text">
|
||||
<string>Open console for game output</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1" alignment="Qt::AlignTop">
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
# run again. Do not edit this file unless you know what you are doing.
|
||||
|
||||
|
||||
from PyQt5 import QtCore, QtWidgets
|
||||
from PyQt5 import QtCore, QtGui, QtWidgets
|
||||
|
||||
|
||||
class Ui_shop_info(object):
|
||||
|
@ -28,11 +28,17 @@ class Ui_shop_info(object):
|
|||
self.verticalLayout_2 = QtWidgets.QVBoxLayout()
|
||||
self.verticalLayout_2.setObjectName("verticalLayout_2")
|
||||
self.title = QtWidgets.QLabel(shop_info)
|
||||
self.title.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse)
|
||||
font = QtGui.QFont()
|
||||
font.setPointSize(18)
|
||||
self.title.setFont(font)
|
||||
self.title.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse | QtCore.Qt.TextSelectableByMouse)
|
||||
self.title.setObjectName("title")
|
||||
self.verticalLayout_2.addWidget(self.title)
|
||||
self.dev = QtWidgets.QLabel(shop_info)
|
||||
self.dev.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse)
|
||||
font = QtGui.QFont()
|
||||
font.setPointSize(14)
|
||||
self.dev.setFont(font)
|
||||
self.dev.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse | QtCore.Qt.TextSelectableByMouse)
|
||||
self.dev.setObjectName("dev")
|
||||
self.verticalLayout_2.addWidget(self.dev)
|
||||
self.owned_label = QtWidgets.QLabel(shop_info)
|
||||
|
|
|
@ -34,23 +34,33 @@
|
|||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QLabel" name="title">
|
||||
<property name="text">
|
||||
<string>Error</string>
|
||||
</property>
|
||||
<property name="textInteractionFlags">
|
||||
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>18</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Error</string>
|
||||
</property>
|
||||
<property name="textInteractionFlags">
|
||||
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="dev">
|
||||
<property name="text">
|
||||
<string>TextLabel</string>
|
||||
</property>
|
||||
<property name="textInteractionFlags">
|
||||
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QLabel" name="dev">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>14</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>TextLabel</string>
|
||||
</property>
|
||||
<property name="textInteractionFlags">
|
||||
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="owned_label">
|
||||
|
@ -76,13 +86,13 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="tags">
|
||||
<property name="text">
|
||||
<string>TextLabel</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="tags">
|
||||
<property name="text">
|
||||
<string>TextLabel</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="open_store_button">
|
||||
<property name="text">
|
||||
|
|
|
@ -14,42 +14,150 @@ from PyQt5 import QtCore, QtWidgets
|
|||
class Ui_ShopWidget(object):
|
||||
def setupUi(self, ShopWidget):
|
||||
ShopWidget.setObjectName("ShopWidget")
|
||||
ShopWidget.resize(697, 362)
|
||||
self.verticalLayout = QtWidgets.QVBoxLayout(ShopWidget)
|
||||
self.verticalLayout.setObjectName("verticalLayout")
|
||||
ShopWidget.resize(850, 572)
|
||||
self.verticalLayout_7 = QtWidgets.QVBoxLayout(ShopWidget)
|
||||
self.verticalLayout_7.setObjectName("verticalLayout_7")
|
||||
self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
|
||||
self.horizontalLayout_2.setObjectName("horizontalLayout_2")
|
||||
self.scrollArea = QtWidgets.QScrollArea(ShopWidget)
|
||||
self.scrollArea.setWidgetResizable(True)
|
||||
self.scrollArea.setObjectName("scrollArea")
|
||||
self.scrollAreaWidgetContents = QtWidgets.QWidget()
|
||||
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 677, 342))
|
||||
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 828, 550))
|
||||
self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
|
||||
self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.scrollAreaWidgetContents)
|
||||
self.verticalLayout_3.setObjectName("verticalLayout_3")
|
||||
self.free_game_group_box = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
|
||||
self.horizontalLayout = QtWidgets.QHBoxLayout(self.scrollAreaWidgetContents)
|
||||
self.horizontalLayout.setObjectName("horizontalLayout")
|
||||
self.widget = QtWidgets.QWidget(self.scrollAreaWidgetContents)
|
||||
self.widget.setObjectName("widget")
|
||||
self.verticalLayout = QtWidgets.QVBoxLayout(self.widget)
|
||||
self.verticalLayout.setObjectName("verticalLayout")
|
||||
self.free_game_group_box = QtWidgets.QGroupBox(self.widget)
|
||||
self.free_game_group_box.setObjectName("free_game_group_box")
|
||||
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.free_game_group_box)
|
||||
self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.free_game_group_box)
|
||||
self.verticalLayout_3.setObjectName("verticalLayout_3")
|
||||
self.free_stack = QtWidgets.QStackedWidget(self.free_game_group_box)
|
||||
self.free_stack.setObjectName("free_stack")
|
||||
self.free_widget = QtWidgets.QWidget()
|
||||
self.free_widget.setObjectName("free_widget")
|
||||
self.verticalLayout_8 = QtWidgets.QVBoxLayout(self.free_widget)
|
||||
self.verticalLayout_8.setObjectName("verticalLayout_8")
|
||||
self.free_stack.addWidget(self.free_widget)
|
||||
self.verticalLayout_3.addWidget(self.free_stack)
|
||||
self.verticalLayout.addWidget(self.free_game_group_box)
|
||||
self.discounts_gb = QtWidgets.QGroupBox(self.widget)
|
||||
self.discounts_gb.setObjectName("discounts_gb")
|
||||
self.verticalLayout_6 = QtWidgets.QVBoxLayout(self.discounts_gb)
|
||||
self.verticalLayout_6.setObjectName("verticalLayout_6")
|
||||
self.discount_stack = QtWidgets.QStackedWidget(self.discounts_gb)
|
||||
self.discount_stack.setObjectName("discount_stack")
|
||||
self.discount_widget = QtWidgets.QWidget()
|
||||
self.discount_widget.setObjectName("discount_widget")
|
||||
self.discount_stack.addWidget(self.discount_widget)
|
||||
self.verticalLayout_6.addWidget(self.discount_stack)
|
||||
self.verticalLayout.addWidget(self.discounts_gb)
|
||||
self.filter_game_gb = QtWidgets.QGroupBox(self.widget)
|
||||
self.filter_game_gb.setObjectName("filter_game_gb")
|
||||
self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.filter_game_gb)
|
||||
self.verticalLayout_4.setObjectName("verticalLayout_4")
|
||||
self.game_stack = QtWidgets.QStackedWidget(self.filter_game_gb)
|
||||
self.game_stack.setObjectName("game_stack")
|
||||
self.game_widget = QtWidgets.QWidget()
|
||||
self.game_widget.setObjectName("game_widget")
|
||||
self.game_stack.addWidget(self.game_widget)
|
||||
self.verticalLayout_4.addWidget(self.game_stack)
|
||||
self.verticalLayout.addWidget(self.filter_game_gb)
|
||||
self.horizontalLayout.addWidget(self.widget)
|
||||
self.filter_gb = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.filter_gb.sizePolicy().hasHeightForWidth())
|
||||
self.filter_gb.setSizePolicy(sizePolicy)
|
||||
self.filter_gb.setMinimumSize(QtCore.QSize(150, 0))
|
||||
self.filter_gb.setMaximumSize(QtCore.QSize(16777215, 16777215))
|
||||
self.filter_gb.setObjectName("filter_gb")
|
||||
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.filter_gb)
|
||||
self.verticalLayout_2.setObjectName("verticalLayout_2")
|
||||
self.free_games_stack = QtWidgets.QStackedWidget(self.free_game_group_box)
|
||||
self.free_games_stack.setObjectName("free_games_stack")
|
||||
self.verticalLayout_2.addWidget(self.free_games_stack)
|
||||
self.verticalLayout_3.addWidget(self.free_game_group_box)
|
||||
self.wishlist_gb = QtWidgets.QGroupBox(self.scrollAreaWidgetContents)
|
||||
self.wishlist_gb.setObjectName("wishlist_gb")
|
||||
self.verticalLayout_3.addWidget(self.wishlist_gb)
|
||||
self.reset_button = QtWidgets.QPushButton(self.filter_gb)
|
||||
self.reset_button.setObjectName("reset_button")
|
||||
self.verticalLayout_2.addWidget(self.reset_button)
|
||||
self.price_gb = QtWidgets.QGroupBox(self.filter_gb)
|
||||
self.price_gb.setObjectName("price_gb")
|
||||
self.verticalLayout_9 = QtWidgets.QVBoxLayout(self.price_gb)
|
||||
self.verticalLayout_9.setObjectName("verticalLayout_9")
|
||||
self.none_price = QtWidgets.QRadioButton(self.price_gb)
|
||||
self.none_price.setChecked(True)
|
||||
self.none_price.setObjectName("none_price")
|
||||
self.verticalLayout_9.addWidget(self.none_price)
|
||||
self.free_button = QtWidgets.QRadioButton(self.price_gb)
|
||||
self.free_button.setObjectName("free_button")
|
||||
self.verticalLayout_9.addWidget(self.free_button)
|
||||
self.under10 = QtWidgets.QRadioButton(self.price_gb)
|
||||
self.under10.setObjectName("under10")
|
||||
self.verticalLayout_9.addWidget(self.under10)
|
||||
self.under20 = QtWidgets.QRadioButton(self.price_gb)
|
||||
self.under20.setObjectName("under20")
|
||||
self.verticalLayout_9.addWidget(self.under20)
|
||||
self.under30 = QtWidgets.QRadioButton(self.price_gb)
|
||||
self.under30.setObjectName("under30")
|
||||
self.verticalLayout_9.addWidget(self.under30)
|
||||
self.above = QtWidgets.QRadioButton(self.price_gb)
|
||||
self.above.setObjectName("above")
|
||||
self.verticalLayout_9.addWidget(self.above)
|
||||
self.on_discount = QtWidgets.QRadioButton(self.price_gb)
|
||||
self.on_discount.setObjectName("on_discount")
|
||||
self.verticalLayout_9.addWidget(self.on_discount)
|
||||
self.verticalLayout_2.addWidget(self.price_gb)
|
||||
self.platform_gb = QtWidgets.QGroupBox(self.filter_gb)
|
||||
self.platform_gb.setObjectName("platform_gb")
|
||||
self.verticalLayout_13 = QtWidgets.QVBoxLayout(self.platform_gb)
|
||||
self.verticalLayout_13.setObjectName("verticalLayout_13")
|
||||
self.verticalLayout_2.addWidget(self.platform_gb)
|
||||
self.genre_gb = QtWidgets.QGroupBox(self.filter_gb)
|
||||
self.genre_gb.setObjectName("genre_gb")
|
||||
self.verticalLayout_12 = QtWidgets.QVBoxLayout(self.genre_gb)
|
||||
self.verticalLayout_12.setObjectName("verticalLayout_12")
|
||||
self.verticalLayout_2.addWidget(self.genre_gb)
|
||||
self.type_gb = QtWidgets.QGroupBox(self.filter_gb)
|
||||
self.type_gb.setObjectName("type_gb")
|
||||
self.verticalLayout_11 = QtWidgets.QVBoxLayout(self.type_gb)
|
||||
self.verticalLayout_11.setObjectName("verticalLayout_11")
|
||||
self.verticalLayout_2.addWidget(self.type_gb)
|
||||
self.others_gb = QtWidgets.QGroupBox(self.filter_gb)
|
||||
self.others_gb.setObjectName("others_gb")
|
||||
self.verticalLayout_10 = QtWidgets.QVBoxLayout(self.others_gb)
|
||||
self.verticalLayout_10.setObjectName("verticalLayout_10")
|
||||
self.verticalLayout_2.addWidget(self.others_gb)
|
||||
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.verticalLayout_3.addItem(spacerItem)
|
||||
self.verticalLayout_2.addItem(spacerItem)
|
||||
self.horizontalLayout.addWidget(self.filter_gb)
|
||||
self.scrollArea.setWidget(self.scrollAreaWidgetContents)
|
||||
self.verticalLayout.addWidget(self.scrollArea)
|
||||
self.horizontalLayout_2.addWidget(self.scrollArea)
|
||||
self.verticalLayout_7.addLayout(self.horizontalLayout_2)
|
||||
|
||||
self.retranslateUi(ShopWidget)
|
||||
self.free_games_stack.setCurrentIndex(-1)
|
||||
QtCore.QMetaObject.connectSlotsByName(ShopWidget)
|
||||
|
||||
def retranslateUi(self, ShopWidget):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
ShopWidget.setWindowTitle(_translate("ShopWidget", "Form"))
|
||||
self.free_game_group_box.setTitle(_translate("ShopWidget", "Free Games"))
|
||||
self.wishlist_gb.setTitle(_translate("ShopWidget", "Discounts from your wishlist"))
|
||||
self.discounts_gb.setTitle(_translate("ShopWidget", "Discounts from your wishlist"))
|
||||
self.filter_game_gb.setTitle(_translate("ShopWidget", "Games"))
|
||||
self.filter_gb.setTitle(_translate("ShopWidget", "Filter"))
|
||||
self.reset_button.setText(_translate("ShopWidget", "Reset"))
|
||||
self.price_gb.setTitle(_translate("ShopWidget", "Price"))
|
||||
self.none_price.setText(_translate("ShopWidget", "None"))
|
||||
self.free_button.setText(_translate("ShopWidget", "Free"))
|
||||
self.under10.setText(_translate("ShopWidget", "Under 10"))
|
||||
self.under20.setText(_translate("ShopWidget", "Under 20"))
|
||||
self.under30.setText(_translate("ShopWidget", "Under 30"))
|
||||
self.above.setText(_translate("ShopWidget", "14.99 and above"))
|
||||
self.on_discount.setText(_translate("ShopWidget", "Discount"))
|
||||
self.platform_gb.setTitle(_translate("ShopWidget", "Platform"))
|
||||
self.genre_gb.setTitle(_translate("ShopWidget", "Genre"))
|
||||
self.type_gb.setTitle(_translate("ShopWidget", "Type"))
|
||||
self.others_gb.setTitle(_translate("ShopWidget", "Other Tags"))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
|
@ -3,73 +3,232 @@
|
|||
<class>ShopWidget</class>
|
||||
<widget class="QWidget" name="ShopWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>697</width>
|
||||
<height>362</height>
|
||||
</rect>
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>850</width>
|
||||
<height>572</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QScrollArea" name="scrollArea">
|
||||
<property name="widgetResizable">
|
||||
<bool>true</bool>
|
||||
<property name="windowTitle">
|
||||
<string>Form</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="scrollAreaWidgetContents">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>677</width>
|
||||
<height>342</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="free_game_group_box">
|
||||
<property name="title">
|
||||
<string>Free Games</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QStackedWidget" name="free_games_stack">
|
||||
<property name="currentIndex">
|
||||
<number>-1</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="wishlist_gb">
|
||||
<property name="title">
|
||||
<string>Discounts from your wishlist</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="spacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_7">
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<item>
|
||||
<widget class="QScrollArea" name="scrollArea">
|
||||
<property name="widgetResizable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<widget class="QWidget" name="scrollAreaWidgetContents">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>828</width>
|
||||
<height>550</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QWidget" name="widget" native="true">
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="free_game_group_box">
|
||||
<property name="title">
|
||||
<string>Free Games</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||
<item>
|
||||
<widget class="QStackedWidget" name="free_stack">
|
||||
<widget class="QWidget" name="free_widget">
|
||||
<layout class="QVBoxLayout"
|
||||
name="verticalLayout_8"/>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="discounts_gb">
|
||||
<property name="title">
|
||||
<string>Discounts from your wishlist</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_6">
|
||||
<item>
|
||||
<widget class="QStackedWidget" name="discount_stack">
|
||||
<widget class="QWidget" name="discount_widget"/>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="filter_game_gb">
|
||||
<property name="title">
|
||||
<string>Games</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||
<item>
|
||||
<widget class="QStackedWidget" name="game_stack">
|
||||
<widget class="QWidget" name="game_widget"/>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="filter_gb">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="minimumSize">
|
||||
<size>
|
||||
<width>150</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Filter</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QPushButton" name="reset_button">
|
||||
<property name="text">
|
||||
<string>Reset</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="price_gb">
|
||||
<property name="title">
|
||||
<string>Price</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_9">
|
||||
<item>
|
||||
<widget class="QRadioButton" name="none_price">
|
||||
<property name="text">
|
||||
<string>None</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="free_button">
|
||||
<property name="text">
|
||||
<string>Free</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="under10">
|
||||
<property name="text">
|
||||
<string>Under 10</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="under20">
|
||||
<property name="text">
|
||||
<string>Under 20</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="under30">
|
||||
<property name="text">
|
||||
<string>Under 30</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="above">
|
||||
<property name="text">
|
||||
<string>14.99 and above</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="on_discount">
|
||||
<property name="text">
|
||||
<string>Discount</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="platform_gb">
|
||||
<property name="title">
|
||||
<string>Platform</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_13"/>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="genre_gb">
|
||||
<property name="title">
|
||||
<string>Genre</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_12"/>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="type_gb">
|
||||
<property name="title">
|
||||
<string>Type</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_11"/>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="others_gb">
|
||||
<property name="title">
|
||||
<string>Other Tags</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_10"/>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
|
|
Loading…
Reference in a new issue