From 7246078df31c43a72de9dfd1077fb48d37242aa2 Mon Sep 17 00:00:00 2001 From: loathingKernel <142770+loathingKernel@users.noreply.github.com> Date: Fri, 31 Mar 2023 01:09:40 +0300 Subject: [PATCH] ShopGameInfo: Design it to me similar to GameInfo --- rare/components/tabs/store/__init__.py | 5 +- rare/components/tabs/store/game_info.py | 74 ++-- rare/components/tabs/store/game_widgets.py | 73 +--- .../components/tabs/store/shop_game_info.py | 211 ++++++--- .../components/tabs/store/shop_game_info.ui | 402 ++++++++++++------ 5 files changed, 484 insertions(+), 281 deletions(-) diff --git a/rare/components/tabs/store/__init__.py b/rare/components/tabs/store/__init__.py index c72e88d9..3941be00 100644 --- a/rare/components/tabs/store/__init__.py +++ b/rare/components/tabs/store/__init__.py @@ -17,7 +17,7 @@ class StoreTab(SideTabWidget): self.init = False self.core = core - self.rcore = RareCore.instance() + # self.rcore = RareCore.instance() self.api_core = ShopApiCore( self.core.egs.session.headers["Authorization"], self.core.language_code, @@ -35,7 +35,8 @@ class StoreTab(SideTabWidget): # self.search.back_button.clicked.connect(lambda: self.setCurrentIndex(self.shop_index)) self.info = ShopGameInfo( - [i.asset_infos["Windows"].namespace for i in self.rcore.game_list if bool(i.asset_infos)], + # [i.asset_infos["Windows"].namespace for i in self.rcore.game_list if bool(i.asset_infos)], + [], self.api_core, parent=self ) diff --git a/rare/components/tabs/store/game_info.py b/rare/components/tabs/store/game_info.py index 7b478766..b42dccdc 100644 --- a/rare/components/tabs/store/game_info.py +++ b/rare/components/tabs/store/game_info.py @@ -13,7 +13,7 @@ from PyQt5.QtWidgets import ( from rare.components.tabs.store.shop_models import ShopGame from rare.shared import LegendaryCoreSingleton from rare.shared.image_manager import ImageSize -from rare.ui.components.tabs.store.shop_game_info import Ui_ShopGameInfo +from rare.ui.components.tabs.store.shop_game_info import Ui_ShopInfo from rare.utils.misc import icon from rare.widgets.side_tab import SideTabWidget, SideTabContents from rare.widgets.elide_label import ElideLabel @@ -22,30 +22,31 @@ from .image_widget import ShopImageWidget logger = logging.getLogger("ShopInfo") -class ShopGameInfo(QWidget, Ui_ShopGameInfo, SideTabContents): +class ShopGameInfo(QWidget, SideTabContents): # TODO Design def __init__(self, installed_titles: list, api_core, parent=None): super(ShopGameInfo, self).__init__(parent=parent) - self.setupUi(self) - self.core = LegendaryCoreSingleton() + self.ui = Ui_ShopInfo() + self.ui.setupUi(self) + # self.core = LegendaryCoreSingleton() self.api_core = api_core self.installed = installed_titles - self.open_store_button.clicked.connect(self.button_clicked) + self.ui.open_store_button.clicked.connect(self.button_clicked) self.image = ShopImageWidget(self) self.image.setFixedSize(ImageSize.Normal) - self.image_info_layout.insertWidget(0, self.image) + self.ui.left_layout.insertWidget(0, self.image, alignment=Qt.AlignTop) self.game: ShopGame = None self.data: dict = {} - self.wishlist_button.clicked.connect(self.add_to_wishlist) + self.ui.wishlist_button.clicked.connect(self.add_to_wishlist) self.in_wishlist = False self.wishlist = [] - self.requirements_tabs: SideTabWidget = SideTabWidget(parent=self.requirements_group) + self.requirements_tabs: SideTabWidget = SideTabWidget(parent=self.ui.requirements_group) self.requirements_tabs.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) - self.requirements_layout.addWidget(self.requirements_tabs) + self.ui.requirements_layout.addWidget(self.requirements_tabs) self.setDisabled(True) @@ -55,15 +56,15 @@ class ShopGameInfo(QWidget, Ui_ShopGameInfo, SideTabContents): self.wishlist = [i["offer"]["title"] for i in data] if self.title_str in self.wishlist: self.in_wishlist = True - self.wishlist_button.setVisible(True) - self.wishlist_button.setText(self.tr("Remove from Wishlist")) + self.ui.wishlist_button.setVisible(True) + self.ui.wishlist_button.setText(self.tr("Remove from Wishlist")) else: self.in_wishlist = False - self.wishlist_button.setVisible(False) + self.ui.wishlist_button.setVisible(False) def update_game(self, data: dict): self.set_title.emit(data["title"]) - self.title.setText(data["title"]) + self.ui.title.setText(data["title"]) self.title_str = data["title"] self.id_str = data["id"] self.api_core.get_wishlist(self.handle_wishlist_update) @@ -86,14 +87,14 @@ class ShopGameInfo(QWidget, Ui_ShopGameInfo, SideTabContents): self.slug = slug if data["namespace"] in self.installed: - self.open_store_button.setText(self.tr("Show Game on Epic Page")) - self.owned_label.setVisible(True) + self.ui.open_store_button.setText(self.tr("Show Game on Epic Page")) + self.ui.owned_label.setVisible(True) else: - self.open_store_button.setText(self.tr("Buy Game in Epic Games Store")) - self.owned_label.setVisible(False) + self.ui.open_store_button.setText(self.tr("Buy Game in Epic Games Store")) + self.ui.owned_label.setVisible(False) - self.price.setText(self.tr("Loading")) - self.wishlist_button.setVisible(False) + self.ui.price.setText(self.tr("Loading")) + self.ui.wishlist_button.setVisible(False) # self.title.setText(self.tr("Loading")) # self.image.setPixmap(QPixmap()) self.data = data @@ -118,9 +119,9 @@ class ShopGameInfo(QWidget, Ui_ShopGameInfo, SideTabContents): self.api_core.remove_from_wishlist( self.game.namespace, self.game.offer_id, - lambda success: self.wishlist_button.setVisible(False) + lambda success: self.ui.wishlist_button.setVisible(False) if success - else self.wishlist_button.setText("Something goes wrong"), + else self.ui.wishlist_button.setText("Something goes wrong"), ) def data_received(self, game): @@ -148,23 +149,23 @@ class ShopGameInfo(QWidget, Ui_ShopGameInfo, SideTabContents): return # self.title.setText(self.game.title) - self.price.setFont(QFont()) + self.ui.price.setFont(QFont()) if self.game.price == "0" or self.game.price == 0: - self.price.setText(self.tr("Free")) + self.ui.price.setText(self.tr("Free")) else: - self.price.setText(self.game.price) + self.ui.price.setText(self.game.price) if self.game.price != self.game.discount_price: font = QFont() font.setStrikeOut(True) - self.price.setFont(font) - self.discount_price.setText( + self.ui.price.setFont(font) + self.ui.discount_price.setText( self.game.discount_price if self.game.discount_price != "0" else self.tr("Free") ) - self.discount_price.setVisible(True) + self.ui.discount_price.setVisible(True) else: - self.discount_price.setVisible(False) + self.ui.discount_price.setVisible(False) bold_font = QFont() bold_font.setBold(True) @@ -211,16 +212,16 @@ class ShopGameInfo(QWidget, Ui_ShopGameInfo, SideTabContents): # self.image_stack.setCurrentIndex(0) try: if isinstance(self.game.developer, list): - self.dev.setText(", ".join(self.game.developer)) + self.ui.dev.setText(", ".join(self.game.developer)) else: - self.dev.setText(self.game.developer) + self.ui.dev.setText(self.game.developer) except KeyError: pass - self.tags.setText(", ".join(self.game.tags)) + self.ui.tags.setText(", ".join(self.game.tags)) # clear Layout - for b in self.social_group.findChildren(SocialButton, options=Qt.FindDirectChildrenOnly): - self.social_layout.removeWidget(b) + for b in self.ui.social_group.findChildren(SocialButton, options=Qt.FindDirectChildrenOnly): + self.ui.social_layout.removeWidget(b) b.deleteLater() link_count = 0 @@ -235,11 +236,11 @@ class ShopGameInfo(QWidget, Ui_ShopGameInfo, SideTabContents): logger.error(str(e)) continue - button = SocialButton(icn, url, parent=self.social_group) - self.social_layout.addWidget(button) + button = SocialButton(icn, url, parent=self.ui.social_group) + self.ui.social_layout.addWidget(button) link_count += 1 - self.social_group.setEnabled(bool(link_count)) + self.ui.social_group.setEnabled(bool(link_count)) self.setEnabled(True) @@ -249,6 +250,7 @@ class ShopGameInfo(QWidget, Ui_ShopGameInfo, SideTabContents): self.wishlist.append(game["offer"]["title"]) def button_clicked(self): + return QDesktopServices.openUrl(QUrl(f"https://www.epicgames.com/store/{self.core.language_code}/p/{self.slug}")) diff --git a/rare/components/tabs/store/game_widgets.py b/rare/components/tabs/store/game_widgets.py index e5c164d4..85e16c72 100644 --- a/rare/components/tabs/store/game_widgets.py +++ b/rare/components/tabs/store/game_widgets.py @@ -2,93 +2,64 @@ import logging from PyQt5 import QtGui from PyQt5.QtCore import pyqtSignal, Qt -from PyQt5.QtGui import QFont -from PyQt5.QtNetwork import QNetworkAccessManager -from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QHBoxLayout, QSizePolicy +from PyQt5.QtGui import QFont, QMouseEvent +from PyQt5.QtWidgets import QWidget from rare.components.tabs.store.shop_models import ImageUrlModel from rare.shared.image_manager import ImageSize from rare.ui.components.tabs.store.wishlist_widget import Ui_WishlistWidget from rare.utils.extra_widgets import ImageLabel from rare.utils.misc import qta_icon -from rare.widgets.elide_label import ElideLabel from .image_widget import ShopImageWidget logger = logging.getLogger("GameWidgets") -class GameWidget(QWidget): +class GameWidget(ShopImageWidget): show_info = pyqtSignal(dict) - def __init__(self, path, json_info=None): - super(GameWidget, self).__init__() - self.manager = QNetworkAccessManager() + def __init__(self, path, json_info=None, parent=None): + super(GameWidget, self).__init__(parent=parent) + self.setFixedSize(ImageSize.Wide) + self.ui.setupUi(self) self.path = path + self.json_info = json_info if json_info: self.init_ui(json_info) def init_ui(self, json_info): - self.layout = QVBoxLayout() - self.layout.setSizeConstraint(QVBoxLayout.SetFixedSize) - self.image = ShopImageWidget(self) - self.image.setFixedSize(ImageSize.Wide) - self.layout.addWidget(self.image) - mini_layout = QHBoxLayout() - self.layout.addLayout(mini_layout) - if not json_info: - self.layout.addWidget(QLabel("An error occurred")) - self.setLayout(self.layout) + self.ui.title_label.setText(self.tr("An error occurred")) return - self.title_label = ElideLabel(json_info.get("title"), parent=self) - self.title_label.setWordWrap(False) - mini_layout.addWidget(self.title_label) - # mini_layout.addStretch(1) - + self.ui.title_label.setText(json_info.get("title")) price = json_info["price"]["totalPrice"]["fmtPrice"]["originalPrice"] discount_price = json_info["price"]["totalPrice"]["fmtPrice"]["discountPrice"] - price_label = QLabel(price) + self.ui.price_label.setText(f'{price if price != "0" else self.tr("Free")}') if price != discount_price: - font = QFont() + font = self.ui.price_label.font() font.setStrikeOut(True) - price_label.setFont(font) - free_label = QLabel(discount_price if discount_price != "0" else self.tr("Free")) - free_label.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) - free_label.setAlignment(Qt.AlignRight) - mini_layout.addWidget(free_label) + self.ui.price_label.setFont(font) + self.ui.discount_label.setText(f'{discount_price if discount_price != "0" else self.tr("Free")}') else: - if price == "0": - price_label.setText(self.tr("Free")) - price_label.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed) - price_label.setAlignment(Qt.AlignRight) - mini_layout.addWidget(price_label) + self.ui.discount_label.setVisible(False) for c in r'<>?":|\/*': json_info["title"] = json_info["title"].replace(c, "") - self.json_info = json_info - self.slug = json_info["productSlug"] - - self.title = json_info["title"] for img in json_info["keyImages"]: - if img["type"] in [ - "DieselStoreFrontWide", - "OfferImageWide", - "VaultClosed", - "ProductLogo", - ]: - if img["type"] == "VaultClosed" and self.title != "Mystery Game": + if img["type"] in ["DieselStoreFrontWide", "OfferImageWide", "VaultClosed", "ProductLogo",]: + if img["type"] == "VaultClosed" and json_info["title"] != "Mystery Game": continue - self.image.fetchPixmap(img["url"], json_info["id"], json_info["title"]) + self.fetchPixmap(img["url"], json_info["id"], json_info["title"]) break else: logger.info(", ".join([img["type"] for img in json_info["keyImages"]])) - self.setLayout(self.layout) - - def mousePressEvent(self, a0: QtGui.QMouseEvent) -> None: - self.show_info.emit(self.json_info) + def mousePressEvent(self, a0: QMouseEvent) -> None: + if a0.button() == Qt.LeftButton: + a0.accept() + self.show_info.emit(self.json_info) class WishlistWidget(QWidget, Ui_WishlistWidget): diff --git a/rare/ui/components/tabs/store/shop_game_info.py b/rare/ui/components/tabs/store/shop_game_info.py index 710a5b69..839506e1 100644 --- a/rare/ui/components/tabs/store/shop_game_info.py +++ b/rare/ui/components/tabs/store/shop_game_info.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'rare/ui/components/tabs/store/shop_game_info.ui' # -# Created by: PyQt5 UI code generator 5.15.7 +# Created by: PyQt5 UI code generator 5.15.9 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. @@ -11,105 +11,178 @@ from PyQt5 import QtCore, QtGui, QtWidgets -class Ui_ShopGameInfo(object): - def setupUi(self, ShopGameInfo): - ShopGameInfo.setObjectName("ShopGameInfo") - ShopGameInfo.resize(702, 468) - ShopGameInfo.setWindowTitle("ShopGameInfo") - self.shop_game_info_layout = QtWidgets.QVBoxLayout(ShopGameInfo) - self.shop_game_info_layout.setObjectName("shop_game_info_layout") - self.image_info_layout = QtWidgets.QHBoxLayout() - self.image_info_layout.setObjectName("image_info_layout") - self.info_layout = QtWidgets.QGridLayout() +class Ui_ShopInfo(object): + def setupUi(self, ShopInfo): + ShopInfo.setObjectName("ShopInfo") + ShopInfo.resize(434, 250) + ShopInfo.setWindowTitle("ShopGameInfo") + self.main_layout = QtWidgets.QHBoxLayout(ShopInfo) + self.main_layout.setObjectName("main_layout") + self.left_layout = QtWidgets.QVBoxLayout() + self.left_layout.setObjectName("left_layout") + self.main_layout.addLayout(self.left_layout) + self.right_layout = QtWidgets.QVBoxLayout() + self.right_layout.setObjectName("right_layout") + self.info_layout = QtWidgets.QFormLayout() + self.info_layout.setLabelAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.info_layout.setContentsMargins(6, 6, 6, 6) + self.info_layout.setSpacing(12) self.info_layout.setObjectName("info_layout") - spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) - self.info_layout.addItem(spacerItem, 6, 1, 1, 1) - self.tags = QtWidgets.QLabel(ShopGameInfo) - self.tags.setText("tags") - self.tags.setObjectName("tags") - self.info_layout.addWidget(self.tags, 5, 0, 1, 2) - self.discount_price = QtWidgets.QLabel(ShopGameInfo) - self.discount_price.setText("discount") - self.discount_price.setObjectName("discount_price") - self.info_layout.addWidget(self.discount_price, 4, 0, 1, 2) - self.title = QtWidgets.QLabel(ShopGameInfo) + self.title_label = QtWidgets.QLabel(ShopInfo) font = QtGui.QFont() - font.setPointSize(18) - self.title.setFont(font) + font.setBold(True) + font.setWeight(75) + self.title_label.setFont(font) + self.title_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.title_label.setObjectName("title_label") + self.info_layout.setWidget(0, QtWidgets.QFormLayout.LabelRole, self.title_label) + self.title = QtWidgets.QLabel(ShopInfo) self.title.setText("title") self.title.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse) self.title.setObjectName("title") - self.info_layout.addWidget(self.title, 0, 0, 1, 2) - self.button_layout = QtWidgets.QVBoxLayout() - self.button_layout.setSizeConstraint(QtWidgets.QLayout.SetFixedSize) - self.button_layout.setObjectName("button_layout") - self.open_store_button = QtWidgets.QPushButton(ShopGameInfo) - self.open_store_button.setObjectName("open_store_button") - self.button_layout.addWidget(self.open_store_button) - self.wishlist_button = QtWidgets.QPushButton(ShopGameInfo) - self.wishlist_button.setObjectName("wishlist_button") - self.button_layout.addWidget(self.wishlist_button) - self.info_layout.addLayout(self.button_layout, 6, 0, 1, 1) - self.dev = QtWidgets.QLabel(ShopGameInfo) + self.info_layout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.title) + self.developer_label = QtWidgets.QLabel(ShopInfo) font = QtGui.QFont() - font.setPointSize(14) - self.dev.setFont(font) + font.setBold(True) + font.setWeight(75) + self.developer_label.setFont(font) + self.developer_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.developer_label.setObjectName("developer_label") + self.info_layout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.developer_label) + self.dev = QtWidgets.QLabel(ShopInfo) self.dev.setText("dev") self.dev.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse) self.dev.setObjectName("dev") - self.info_layout.addWidget(self.dev, 1, 0, 1, 2) - self.owned_label = QtWidgets.QLabel(ShopGameInfo) + self.info_layout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.dev) + self.status_label = QtWidgets.QLabel(ShopInfo) + font = QtGui.QFont() + font.setBold(True) + font.setWeight(75) + self.status_label.setFont(font) + self.status_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.status_label.setObjectName("status_label") + self.info_layout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.status_label) + self.owned_label = QtWidgets.QLabel(ShopInfo) self.owned_label.setObjectName("owned_label") - self.info_layout.addWidget(self.owned_label, 2, 0, 1, 2) - self.price = QtWidgets.QLabel(ShopGameInfo) + self.info_layout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.owned_label) + self.price_label = QtWidgets.QLabel(ShopInfo) + font = QtGui.QFont() + font.setBold(True) + font.setWeight(75) + self.price_label.setFont(font) + self.price_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.price_label.setObjectName("price_label") + self.info_layout.setWidget(3, QtWidgets.QFormLayout.LabelRole, self.price_label) + self.price_widget = QtWidgets.QWidget(ShopInfo) + self.price_widget.setObjectName("price_widget") + self.horizontalLayout = QtWidgets.QHBoxLayout(self.price_widget) + self.horizontalLayout.setSizeConstraint(QtWidgets.QLayout.SetFixedSize) + self.horizontalLayout.setContentsMargins(0, 0, 0, 0) + self.horizontalLayout.setObjectName("horizontalLayout") + self.price = QtWidgets.QLabel(self.price_widget) self.price.setText("price") self.price.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse) self.price.setObjectName("price") - self.info_layout.addWidget(self.price, 3, 0, 1, 2) - self.social_group = QtWidgets.QGroupBox(ShopGameInfo) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.social_group.sizePolicy().hasHeightForWidth()) - self.social_group.setSizePolicy(sizePolicy) + self.horizontalLayout.addWidget(self.price) + self.discount_price = QtWidgets.QLabel(self.price_widget) + self.discount_price.setText("discount") + self.discount_price.setObjectName("discount_price") + self.horizontalLayout.addWidget(self.discount_price) + self.info_layout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.price_widget) + self.tags_label = QtWidgets.QLabel(ShopInfo) + font = QtGui.QFont() + font.setBold(True) + font.setWeight(75) + self.tags_label.setFont(font) + self.tags_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.tags_label.setObjectName("tags_label") + self.info_layout.setWidget(4, QtWidgets.QFormLayout.LabelRole, self.tags_label) + self.tags = QtWidgets.QLabel(ShopInfo) + self.tags.setText("tags") + self.tags.setObjectName("tags") + self.info_layout.setWidget(4, QtWidgets.QFormLayout.FieldRole, self.tags) + self.links_label = QtWidgets.QLabel(ShopInfo) + font = QtGui.QFont() + font.setBold(True) + font.setWeight(75) + self.links_label.setFont(font) + self.links_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.links_label.setObjectName("links_label") + self.info_layout.setWidget(5, QtWidgets.QFormLayout.LabelRole, self.links_label) + self.social_group = QtWidgets.QWidget(ShopInfo) + self.social_group.setMinimumSize(QtCore.QSize(250, 0)) self.social_group.setObjectName("social_group") self.social_layout = QtWidgets.QHBoxLayout(self.social_group) + self.social_layout.setSizeConstraint(QtWidgets.QLayout.SetFixedSize) + self.social_layout.setContentsMargins(0, 0, 0, 0) self.social_layout.setObjectName("social_layout") - self.info_layout.addWidget(self.social_group, 7, 0, 1, 2) - self.image_info_layout.addLayout(self.info_layout) - spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) - self.image_info_layout.addItem(spacerItem1) - self.shop_game_info_layout.addLayout(self.image_info_layout) - self.requirements_group = QtWidgets.QGroupBox(ShopGameInfo) + self.info_layout.setWidget(5, QtWidgets.QFormLayout.FieldRole, self.social_group) + self.actions_label = QtWidgets.QLabel(ShopInfo) + font = QtGui.QFont() + font.setBold(True) + font.setWeight(75) + self.actions_label.setFont(font) + self.actions_label.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) + self.actions_label.setObjectName("actions_label") + self.info_layout.setWidget(6, QtWidgets.QFormLayout.LabelRole, self.actions_label) + self.buttons_widget = QtWidgets.QWidget(ShopInfo) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.buttons_widget.sizePolicy().hasHeightForWidth()) + self.buttons_widget.setSizePolicy(sizePolicy) + self.buttons_widget.setMinimumSize(QtCore.QSize(250, 0)) + self.buttons_widget.setMaximumSize(QtCore.QSize(250, 16777215)) + self.buttons_widget.setObjectName("buttons_widget") + self.button_layout = QtWidgets.QVBoxLayout(self.buttons_widget) + self.button_layout.setSizeConstraint(QtWidgets.QLayout.SetFixedSize) + self.button_layout.setContentsMargins(0, 0, 0, 0) + self.button_layout.setObjectName("button_layout") + self.open_store_button = QtWidgets.QPushButton(self.buttons_widget) + self.open_store_button.setObjectName("open_store_button") + self.button_layout.addWidget(self.open_store_button) + self.wishlist_button = QtWidgets.QPushButton(self.buttons_widget) + self.wishlist_button.setObjectName("wishlist_button") + self.button_layout.addWidget(self.wishlist_button) + self.info_layout.setWidget(6, QtWidgets.QFormLayout.FieldRole, self.buttons_widget) + self.right_layout.addLayout(self.info_layout) + self.requirements_group = QtWidgets.QFrame(ShopInfo) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.requirements_group.sizePolicy().hasHeightForWidth()) self.requirements_group.setSizePolicy(sizePolicy) + self.requirements_group.setFrameShape(QtWidgets.QFrame.StyledPanel) + self.requirements_group.setFrameShadow(QtWidgets.QFrame.Sunken) self.requirements_group.setObjectName("requirements_group") self.requirements_layout = QtWidgets.QHBoxLayout(self.requirements_group) self.requirements_layout.setContentsMargins(0, 0, 0, 0) self.requirements_layout.setObjectName("requirements_layout") - self.shop_game_info_layout.addWidget(self.requirements_group) - spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) - self.shop_game_info_layout.addItem(spacerItem2) + self.right_layout.addWidget(self.requirements_group) + self.main_layout.addLayout(self.right_layout) + self.main_layout.setStretch(1, 1) - self.retranslateUi(ShopGameInfo) + self.retranslateUi(ShopInfo) - def retranslateUi(self, ShopGameInfo): + def retranslateUi(self, ShopInfo): _translate = QtCore.QCoreApplication.translate - self.open_store_button.setText(_translate("ShopGameInfo", "Buy in Epic Games Store")) - self.wishlist_button.setText(_translate("ShopGameInfo", "Add to wishlist")) - self.owned_label.setText(_translate("ShopGameInfo", "You already own this game")) - self.social_group.setTitle(_translate("ShopGameInfo", "Links")) - self.requirements_group.setTitle(_translate("ShopGameInfo", "System requirements")) + self.title_label.setText(_translate("ShopInfo", "Title")) + self.developer_label.setText(_translate("ShopInfo", "Developer")) + self.status_label.setText(_translate("ShopInfo", "Status")) + self.owned_label.setText(_translate("ShopInfo", "You already own this game")) + self.price_label.setText(_translate("ShopInfo", "Price")) + self.tags_label.setText(_translate("ShopInfo", "Tags")) + self.links_label.setText(_translate("ShopInfo", "Links")) + self.actions_label.setText(_translate("ShopInfo", "Actions")) + self.open_store_button.setText(_translate("ShopInfo", "Buy in Epic Games Store")) + self.wishlist_button.setText(_translate("ShopInfo", "Add to wishlist")) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) - ShopGameInfo = QtWidgets.QWidget() - ui = Ui_ShopGameInfo() - ui.setupUi(ShopGameInfo) - ShopGameInfo.show() + ShopInfo = QtWidgets.QWidget() + ui = Ui_ShopInfo() + ui.setupUi(ShopInfo) + ShopInfo.show() sys.exit(app.exec_()) diff --git a/rare/ui/components/tabs/store/shop_game_info.ui b/rare/ui/components/tabs/store/shop_game_info.ui index 5c2223c6..382dcf92 100644 --- a/rare/ui/components/tabs/store/shop_game_info.ui +++ b/rare/ui/components/tabs/store/shop_game_info.ui @@ -1,57 +1,65 @@ - ShopGameInfo - + ShopInfo + 0 0 - 702 - 468 + 434 + 250 ShopGameInfo - + - + + + + - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - tags - - - - - - - discount - - - - - + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 12 + + + 12 + + + 6 + + + 6 + + + 6 + + + 6 + + + - 18 + 75 + true + + Title + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + title @@ -60,34 +68,24 @@ - - - - QLayout::SetFixedSize - - - - - Buy in Epic Games Store - - - - - - - Add to wishlist - - - - - - - + + - 14 + 75 + true + + Developer + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + dev @@ -96,94 +94,252 @@ - + + + + + 75 + true + + + + Status + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + You already own this game - - - - price + + + + + 75 + true + - - Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + + Price + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - + + + + + QLayout::SetFixedSize + + + 0 + + + 0 + + + 0 + + + 0 + + + + + price + + + Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse + + + + + + + discount + + + + + + + + + + + 75 + true + + + + Tags + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + tags + + + + + + + + 75 + true + + + + Links + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 250 + 0 + + + + + QLayout::SetFixedSize + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + 75 + true + + + + Actions + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + - + 0 0 - - Links + + + 250 + 0 + - + + + 250 + 16777215 + + + + + QLayout::SetFixedSize + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Buy in Epic Games Store + + + + + + + Add to wishlist + + + + - - - Qt::Horizontal + + + + 0 + 0 + - - - 40 - 20 - + + QFrame::StyledPanel - + + QFrame::Sunken + + + + 0 + + + 0 + + + 0 + + + 0 + + + - - - - - 0 - 0 - - - - System requirements - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - -