1
0
Fork 0
mirror of synced 2024-05-24 06:19:55 +12:00

ShopGameInfo: Design it to me similar to GameInfo

This commit is contained in:
loathingKernel 2023-03-31 01:09:40 +03:00
parent 247b2c947a
commit 7246078df3
No known key found for this signature in database
GPG key ID: CE0C72D0B53821FD
5 changed files with 484 additions and 281 deletions

View file

@ -17,7 +17,7 @@ class StoreTab(SideTabWidget):
self.init = False self.init = False
self.core = core self.core = core
self.rcore = RareCore.instance() # self.rcore = RareCore.instance()
self.api_core = ShopApiCore( self.api_core = ShopApiCore(
self.core.egs.session.headers["Authorization"], self.core.egs.session.headers["Authorization"],
self.core.language_code, self.core.language_code,
@ -35,7 +35,8 @@ class StoreTab(SideTabWidget):
# self.search.back_button.clicked.connect(lambda: self.setCurrentIndex(self.shop_index)) # self.search.back_button.clicked.connect(lambda: self.setCurrentIndex(self.shop_index))
self.info = ShopGameInfo( 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, self.api_core,
parent=self parent=self
) )

View file

@ -13,7 +13,7 @@ from PyQt5.QtWidgets import (
from rare.components.tabs.store.shop_models import ShopGame from rare.components.tabs.store.shop_models import ShopGame
from rare.shared import LegendaryCoreSingleton from rare.shared import LegendaryCoreSingleton
from rare.shared.image_manager import ImageSize 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.utils.misc import icon
from rare.widgets.side_tab import SideTabWidget, SideTabContents from rare.widgets.side_tab import SideTabWidget, SideTabContents
from rare.widgets.elide_label import ElideLabel from rare.widgets.elide_label import ElideLabel
@ -22,30 +22,31 @@ from .image_widget import ShopImageWidget
logger = logging.getLogger("ShopInfo") logger = logging.getLogger("ShopInfo")
class ShopGameInfo(QWidget, Ui_ShopGameInfo, SideTabContents): class ShopGameInfo(QWidget, SideTabContents):
# TODO Design # TODO Design
def __init__(self, installed_titles: list, api_core, parent=None): def __init__(self, installed_titles: list, api_core, parent=None):
super(ShopGameInfo, self).__init__(parent=parent) super(ShopGameInfo, self).__init__(parent=parent)
self.setupUi(self) self.ui = Ui_ShopInfo()
self.core = LegendaryCoreSingleton() self.ui.setupUi(self)
# self.core = LegendaryCoreSingleton()
self.api_core = api_core self.api_core = api_core
self.installed = installed_titles 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 = ShopImageWidget(self)
self.image.setFixedSize(ImageSize.Normal) 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.game: ShopGame = None
self.data: dict = {} 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.in_wishlist = False
self.wishlist = [] 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_tabs.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
self.requirements_layout.addWidget(self.requirements_tabs) self.ui.requirements_layout.addWidget(self.requirements_tabs)
self.setDisabled(True) self.setDisabled(True)
@ -55,15 +56,15 @@ class ShopGameInfo(QWidget, Ui_ShopGameInfo, SideTabContents):
self.wishlist = [i["offer"]["title"] for i in data] self.wishlist = [i["offer"]["title"] for i in data]
if self.title_str in self.wishlist: if self.title_str in self.wishlist:
self.in_wishlist = True self.in_wishlist = True
self.wishlist_button.setVisible(True) self.ui.wishlist_button.setVisible(True)
self.wishlist_button.setText(self.tr("Remove from Wishlist")) self.ui.wishlist_button.setText(self.tr("Remove from Wishlist"))
else: else:
self.in_wishlist = False self.in_wishlist = False
self.wishlist_button.setVisible(False) self.ui.wishlist_button.setVisible(False)
def update_game(self, data: dict): def update_game(self, data: dict):
self.set_title.emit(data["title"]) self.set_title.emit(data["title"])
self.title.setText(data["title"]) self.ui.title.setText(data["title"])
self.title_str = data["title"] self.title_str = data["title"]
self.id_str = data["id"] self.id_str = data["id"]
self.api_core.get_wishlist(self.handle_wishlist_update) self.api_core.get_wishlist(self.handle_wishlist_update)
@ -86,14 +87,14 @@ class ShopGameInfo(QWidget, Ui_ShopGameInfo, SideTabContents):
self.slug = slug self.slug = slug
if data["namespace"] in self.installed: if data["namespace"] in self.installed:
self.open_store_button.setText(self.tr("Show Game on Epic Page")) self.ui.open_store_button.setText(self.tr("Show Game on Epic Page"))
self.owned_label.setVisible(True) self.ui.owned_label.setVisible(True)
else: else:
self.open_store_button.setText(self.tr("Buy Game in Epic Games Store")) self.ui.open_store_button.setText(self.tr("Buy Game in Epic Games Store"))
self.owned_label.setVisible(False) self.ui.owned_label.setVisible(False)
self.price.setText(self.tr("Loading")) self.ui.price.setText(self.tr("Loading"))
self.wishlist_button.setVisible(False) self.ui.wishlist_button.setVisible(False)
# self.title.setText(self.tr("Loading")) # self.title.setText(self.tr("Loading"))
# self.image.setPixmap(QPixmap()) # self.image.setPixmap(QPixmap())
self.data = data self.data = data
@ -118,9 +119,9 @@ class ShopGameInfo(QWidget, Ui_ShopGameInfo, SideTabContents):
self.api_core.remove_from_wishlist( self.api_core.remove_from_wishlist(
self.game.namespace, self.game.namespace,
self.game.offer_id, self.game.offer_id,
lambda success: self.wishlist_button.setVisible(False) lambda success: self.ui.wishlist_button.setVisible(False)
if success if success
else self.wishlist_button.setText("Something goes wrong"), else self.ui.wishlist_button.setText("Something goes wrong"),
) )
def data_received(self, game): def data_received(self, game):
@ -148,23 +149,23 @@ class ShopGameInfo(QWidget, Ui_ShopGameInfo, SideTabContents):
return return
# self.title.setText(self.game.title) # 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: if self.game.price == "0" or self.game.price == 0:
self.price.setText(self.tr("Free")) self.ui.price.setText(self.tr("Free"))
else: else:
self.price.setText(self.game.price) self.ui.price.setText(self.game.price)
if self.game.price != self.game.discount_price: if self.game.price != self.game.discount_price:
font = QFont() font = QFont()
font.setStrikeOut(True) font.setStrikeOut(True)
self.price.setFont(font) self.ui.price.setFont(font)
self.discount_price.setText( self.ui.discount_price.setText(
self.game.discount_price self.game.discount_price
if self.game.discount_price != "0" if self.game.discount_price != "0"
else self.tr("Free") else self.tr("Free")
) )
self.discount_price.setVisible(True) self.ui.discount_price.setVisible(True)
else: else:
self.discount_price.setVisible(False) self.ui.discount_price.setVisible(False)
bold_font = QFont() bold_font = QFont()
bold_font.setBold(True) bold_font.setBold(True)
@ -211,16 +212,16 @@ class ShopGameInfo(QWidget, Ui_ShopGameInfo, SideTabContents):
# self.image_stack.setCurrentIndex(0) # self.image_stack.setCurrentIndex(0)
try: try:
if isinstance(self.game.developer, list): if isinstance(self.game.developer, list):
self.dev.setText(", ".join(self.game.developer)) self.ui.dev.setText(", ".join(self.game.developer))
else: else:
self.dev.setText(self.game.developer) self.ui.dev.setText(self.game.developer)
except KeyError: except KeyError:
pass pass
self.tags.setText(", ".join(self.game.tags)) self.ui.tags.setText(", ".join(self.game.tags))
# clear Layout # clear Layout
for b in self.social_group.findChildren(SocialButton, options=Qt.FindDirectChildrenOnly): for b in self.ui.social_group.findChildren(SocialButton, options=Qt.FindDirectChildrenOnly):
self.social_layout.removeWidget(b) self.ui.social_layout.removeWidget(b)
b.deleteLater() b.deleteLater()
link_count = 0 link_count = 0
@ -235,11 +236,11 @@ class ShopGameInfo(QWidget, Ui_ShopGameInfo, SideTabContents):
logger.error(str(e)) logger.error(str(e))
continue continue
button = SocialButton(icn, url, parent=self.social_group) button = SocialButton(icn, url, parent=self.ui.social_group)
self.social_layout.addWidget(button) self.ui.social_layout.addWidget(button)
link_count += 1 link_count += 1
self.social_group.setEnabled(bool(link_count)) self.ui.social_group.setEnabled(bool(link_count))
self.setEnabled(True) self.setEnabled(True)
@ -249,6 +250,7 @@ class ShopGameInfo(QWidget, Ui_ShopGameInfo, SideTabContents):
self.wishlist.append(game["offer"]["title"]) self.wishlist.append(game["offer"]["title"])
def button_clicked(self): def button_clicked(self):
return
QDesktopServices.openUrl(QUrl(f"https://www.epicgames.com/store/{self.core.language_code}/p/{self.slug}")) QDesktopServices.openUrl(QUrl(f"https://www.epicgames.com/store/{self.core.language_code}/p/{self.slug}"))

View file

@ -2,93 +2,64 @@ import logging
from PyQt5 import QtGui from PyQt5 import QtGui
from PyQt5.QtCore import pyqtSignal, Qt from PyQt5.QtCore import pyqtSignal, Qt
from PyQt5.QtGui import QFont from PyQt5.QtGui import QFont, QMouseEvent
from PyQt5.QtNetwork import QNetworkAccessManager from PyQt5.QtWidgets import QWidget
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel, QHBoxLayout, QSizePolicy
from rare.components.tabs.store.shop_models import ImageUrlModel from rare.components.tabs.store.shop_models import ImageUrlModel
from rare.shared.image_manager import ImageSize from rare.shared.image_manager import ImageSize
from rare.ui.components.tabs.store.wishlist_widget import Ui_WishlistWidget from rare.ui.components.tabs.store.wishlist_widget import Ui_WishlistWidget
from rare.utils.extra_widgets import ImageLabel from rare.utils.extra_widgets import ImageLabel
from rare.utils.misc import qta_icon from rare.utils.misc import qta_icon
from rare.widgets.elide_label import ElideLabel
from .image_widget import ShopImageWidget from .image_widget import ShopImageWidget
logger = logging.getLogger("GameWidgets") logger = logging.getLogger("GameWidgets")
class GameWidget(QWidget): class GameWidget(ShopImageWidget):
show_info = pyqtSignal(dict) show_info = pyqtSignal(dict)
def __init__(self, path, json_info=None): def __init__(self, path, json_info=None, parent=None):
super(GameWidget, self).__init__() super(GameWidget, self).__init__(parent=parent)
self.manager = QNetworkAccessManager() self.setFixedSize(ImageSize.Wide)
self.ui.setupUi(self)
self.path = path self.path = path
self.json_info = json_info
if json_info: if json_info:
self.init_ui(json_info) self.init_ui(json_info)
def init_ui(self, 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: if not json_info:
self.layout.addWidget(QLabel("An error occurred")) self.ui.title_label.setText(self.tr("An error occurred"))
self.setLayout(self.layout)
return return
self.title_label = ElideLabel(json_info.get("title"), parent=self) self.ui.title_label.setText(json_info.get("title"))
self.title_label.setWordWrap(False)
mini_layout.addWidget(self.title_label)
# mini_layout.addStretch(1)
price = json_info["price"]["totalPrice"]["fmtPrice"]["originalPrice"] price = json_info["price"]["totalPrice"]["fmtPrice"]["originalPrice"]
discount_price = json_info["price"]["totalPrice"]["fmtPrice"]["discountPrice"] 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: if price != discount_price:
font = QFont() font = self.ui.price_label.font()
font.setStrikeOut(True) font.setStrikeOut(True)
price_label.setFont(font) self.ui.price_label.setFont(font)
free_label = QLabel(discount_price if discount_price != "0" else self.tr("Free")) self.ui.discount_label.setText(f'{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)
else: else:
if price == "0": self.ui.discount_label.setVisible(False)
price_label.setText(self.tr("Free"))
price_label.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
price_label.setAlignment(Qt.AlignRight)
mini_layout.addWidget(price_label)
for c in r'<>?":|\/*': for c in r'<>?":|\/*':
json_info["title"] = json_info["title"].replace(c, "") 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"]: for img in json_info["keyImages"]:
if img["type"] in [ if img["type"] in ["DieselStoreFrontWide", "OfferImageWide", "VaultClosed", "ProductLogo",]:
"DieselStoreFrontWide", if img["type"] == "VaultClosed" and json_info["title"] != "Mystery Game":
"OfferImageWide",
"VaultClosed",
"ProductLogo",
]:
if img["type"] == "VaultClosed" and self.title != "Mystery Game":
continue continue
self.image.fetchPixmap(img["url"], json_info["id"], json_info["title"]) self.fetchPixmap(img["url"], json_info["id"], json_info["title"])
break break
else: else:
logger.info(", ".join([img["type"] for img in json_info["keyImages"]])) logger.info(", ".join([img["type"] for img in json_info["keyImages"]]))
self.setLayout(self.layout) def mousePressEvent(self, a0: QMouseEvent) -> None:
if a0.button() == Qt.LeftButton:
def mousePressEvent(self, a0: QtGui.QMouseEvent) -> None: a0.accept()
self.show_info.emit(self.json_info) self.show_info.emit(self.json_info)
class WishlistWidget(QWidget, Ui_WishlistWidget): class WishlistWidget(QWidget, Ui_WishlistWidget):

View file

@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'rare/ui/components/tabs/store/shop_game_info.ui' # 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 # 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. # run again. Do not edit this file unless you know what you are doing.
@ -11,105 +11,178 @@
from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_ShopGameInfo(object): class Ui_ShopInfo(object):
def setupUi(self, ShopGameInfo): def setupUi(self, ShopInfo):
ShopGameInfo.setObjectName("ShopGameInfo") ShopInfo.setObjectName("ShopInfo")
ShopGameInfo.resize(702, 468) ShopInfo.resize(434, 250)
ShopGameInfo.setWindowTitle("ShopGameInfo") ShopInfo.setWindowTitle("ShopGameInfo")
self.shop_game_info_layout = QtWidgets.QVBoxLayout(ShopGameInfo) self.main_layout = QtWidgets.QHBoxLayout(ShopInfo)
self.shop_game_info_layout.setObjectName("shop_game_info_layout") self.main_layout.setObjectName("main_layout")
self.image_info_layout = QtWidgets.QHBoxLayout() self.left_layout = QtWidgets.QVBoxLayout()
self.image_info_layout.setObjectName("image_info_layout") self.left_layout.setObjectName("left_layout")
self.info_layout = QtWidgets.QGridLayout() 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") self.info_layout.setObjectName("info_layout")
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.title_label = QtWidgets.QLabel(ShopInfo)
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)
font = QtGui.QFont() font = QtGui.QFont()
font.setPointSize(18) font.setBold(True)
self.title.setFont(font) 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.setText("title")
self.title.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse) self.title.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse)
self.title.setObjectName("title") self.title.setObjectName("title")
self.info_layout.addWidget(self.title, 0, 0, 1, 2) self.info_layout.setWidget(0, QtWidgets.QFormLayout.FieldRole, self.title)
self.button_layout = QtWidgets.QVBoxLayout() self.developer_label = QtWidgets.QLabel(ShopInfo)
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)
font = QtGui.QFont() font = QtGui.QFont()
font.setPointSize(14) font.setBold(True)
self.dev.setFont(font) 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.setText("dev")
self.dev.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse) self.dev.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse)
self.dev.setObjectName("dev") self.dev.setObjectName("dev")
self.info_layout.addWidget(self.dev, 1, 0, 1, 2) self.info_layout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.dev)
self.owned_label = QtWidgets.QLabel(ShopGameInfo) 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.owned_label.setObjectName("owned_label")
self.info_layout.addWidget(self.owned_label, 2, 0, 1, 2) self.info_layout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.owned_label)
self.price = QtWidgets.QLabel(ShopGameInfo) 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.setText("price")
self.price.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse) self.price.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse)
self.price.setObjectName("price") self.price.setObjectName("price")
self.info_layout.addWidget(self.price, 3, 0, 1, 2) self.horizontalLayout.addWidget(self.price)
self.social_group = QtWidgets.QGroupBox(ShopGameInfo) self.discount_price = QtWidgets.QLabel(self.price_widget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) self.discount_price.setText("discount")
sizePolicy.setHorizontalStretch(0) self.discount_price.setObjectName("discount_price")
sizePolicy.setVerticalStretch(0) self.horizontalLayout.addWidget(self.discount_price)
sizePolicy.setHeightForWidth(self.social_group.sizePolicy().hasHeightForWidth()) self.info_layout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.price_widget)
self.social_group.setSizePolicy(sizePolicy) 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_group.setObjectName("social_group")
self.social_layout = QtWidgets.QHBoxLayout(self.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.social_layout.setObjectName("social_layout")
self.info_layout.addWidget(self.social_group, 7, 0, 1, 2) self.info_layout.setWidget(5, QtWidgets.QFormLayout.FieldRole, self.social_group)
self.image_info_layout.addLayout(self.info_layout) self.actions_label = QtWidgets.QLabel(ShopInfo)
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) font = QtGui.QFont()
self.image_info_layout.addItem(spacerItem1) font.setBold(True)
self.shop_game_info_layout.addLayout(self.image_info_layout) font.setWeight(75)
self.requirements_group = QtWidgets.QGroupBox(ShopGameInfo) 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 = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0) sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(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()) sizePolicy.setHeightForWidth(self.requirements_group.sizePolicy().hasHeightForWidth())
self.requirements_group.setSizePolicy(sizePolicy) 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_group.setObjectName("requirements_group")
self.requirements_layout = QtWidgets.QHBoxLayout(self.requirements_group) self.requirements_layout = QtWidgets.QHBoxLayout(self.requirements_group)
self.requirements_layout.setContentsMargins(0, 0, 0, 0) self.requirements_layout.setContentsMargins(0, 0, 0, 0)
self.requirements_layout.setObjectName("requirements_layout") self.requirements_layout.setObjectName("requirements_layout")
self.shop_game_info_layout.addWidget(self.requirements_group) self.right_layout.addWidget(self.requirements_group)
spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.main_layout.addLayout(self.right_layout)
self.shop_game_info_layout.addItem(spacerItem2) self.main_layout.setStretch(1, 1)
self.retranslateUi(ShopGameInfo) self.retranslateUi(ShopInfo)
def retranslateUi(self, ShopGameInfo): def retranslateUi(self, ShopInfo):
_translate = QtCore.QCoreApplication.translate _translate = QtCore.QCoreApplication.translate
self.open_store_button.setText(_translate("ShopGameInfo", "Buy in Epic Games Store")) self.title_label.setText(_translate("ShopInfo", "Title"))
self.wishlist_button.setText(_translate("ShopGameInfo", "Add to wishlist")) self.developer_label.setText(_translate("ShopInfo", "Developer"))
self.owned_label.setText(_translate("ShopGameInfo", "You already own this game")) self.status_label.setText(_translate("ShopInfo", "Status"))
self.social_group.setTitle(_translate("ShopGameInfo", "Links")) self.owned_label.setText(_translate("ShopInfo", "You already own this game"))
self.requirements_group.setTitle(_translate("ShopGameInfo", "System requirements")) 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__": if __name__ == "__main__":
import sys import sys
app = QtWidgets.QApplication(sys.argv) app = QtWidgets.QApplication(sys.argv)
ShopGameInfo = QtWidgets.QWidget() ShopInfo = QtWidgets.QWidget()
ui = Ui_ShopGameInfo() ui = Ui_ShopInfo()
ui.setupUi(ShopGameInfo) ui.setupUi(ShopInfo)
ShopGameInfo.show() ShopInfo.show()
sys.exit(app.exec_()) sys.exit(app.exec_())

View file

@ -1,57 +1,65 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"> <ui version="4.0">
<class>ShopGameInfo</class> <class>ShopInfo</class>
<widget class="QWidget" name="ShopGameInfo"> <widget class="QWidget" name="ShopInfo">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>702</width> <width>434</width>
<height>468</height> <height>250</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
<string notr="true">ShopGameInfo</string> <string notr="true">ShopGameInfo</string>
</property> </property>
<layout class="QVBoxLayout" name="shop_game_info_layout"> <layout class="QHBoxLayout" name="main_layout" stretch="0,1">
<item> <item>
<layout class="QHBoxLayout" name="image_info_layout"> <layout class="QVBoxLayout" name="left_layout"/>
</item>
<item>
<layout class="QVBoxLayout" name="right_layout">
<item> <item>
<layout class="QGridLayout" name="info_layout"> <layout class="QFormLayout" name="info_layout">
<item row="6" column="1"> <property name="labelAlignment">
<spacer name="horizontalSpacer"> <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
<property name="orientation"> </property>
<enum>Qt::Horizontal</enum> <property name="horizontalSpacing">
</property> <number>12</number>
<property name="sizeHint" stdset="0"> </property>
<size> <property name="verticalSpacing">
<width>40</width> <number>12</number>
<height>20</height> </property>
</size> <property name="leftMargin">
</property> <number>6</number>
</spacer> </property>
</item> <property name="topMargin">
<item row="5" column="0" colspan="2"> <number>6</number>
<widget class="QLabel" name="tags"> </property>
<property name="text"> <property name="rightMargin">
<string notr="true">tags</string> <number>6</number>
</property> </property>
</widget> <property name="bottomMargin">
</item> <number>6</number>
<item row="4" column="0" colspan="2"> </property>
<widget class="QLabel" name="discount_price"> <item row="0" column="0">
<property name="text"> <widget class="QLabel" name="title_label">
<string notr="true">discount</string>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="title">
<property name="font"> <property name="font">
<font> <font>
<pointsize>18</pointsize> <weight>75</weight>
<bold>true</bold>
</font> </font>
</property> </property>
<property name="text">
<string>Title</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="title">
<property name="text"> <property name="text">
<string notr="true">title</string> <string notr="true">title</string>
</property> </property>
@ -60,34 +68,24 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="6" column="0"> <item row="1" column="0">
<layout class="QVBoxLayout" name="button_layout"> <widget class="QLabel" name="developer_label">
<property name="sizeConstraint">
<enum>QLayout::SetFixedSize</enum>
</property>
<item>
<widget class="QPushButton" name="open_store_button">
<property name="text">
<string>Buy in Epic Games Store</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="wishlist_button">
<property name="text">
<string>Add to wishlist</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="0" colspan="2">
<widget class="QLabel" name="dev">
<property name="font"> <property name="font">
<font> <font>
<pointsize>14</pointsize> <weight>75</weight>
<bold>true</bold>
</font> </font>
</property> </property>
<property name="text">
<string>Developer</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="dev">
<property name="text"> <property name="text">
<string notr="true">dev</string> <string notr="true">dev</string>
</property> </property>
@ -96,94 +94,252 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="0" colspan="2"> <item row="2" column="0">
<widget class="QLabel" name="status_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Status</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="owned_label"> <widget class="QLabel" name="owned_label">
<property name="text"> <property name="text">
<string>You already own this game</string> <string>You already own this game</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="0" colspan="2"> <item row="3" column="0">
<widget class="QLabel" name="price"> <widget class="QLabel" name="price_label">
<property name="text"> <property name="font">
<string notr="true">price</string> <font>
<weight>75</weight>
<bold>true</bold>
</font>
</property> </property>
<property name="textInteractionFlags"> <property name="text">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set> <string>Price</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property> </property>
</widget> </widget>
</item> </item>
<item row="7" column="0" colspan="2"> <item row="3" column="1">
<widget class="QGroupBox" name="social_group"> <widget class="QWidget" name="price_widget" native="true">
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="sizeConstraint">
<enum>QLayout::SetFixedSize</enum>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="price">
<property name="text">
<string notr="true">price</string>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="discount_price">
<property name="text">
<string notr="true">discount</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="tags_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Tags</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLabel" name="tags">
<property name="text">
<string notr="true">tags</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="links_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Links</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QWidget" name="social_group" native="true">
<property name="minimumSize">
<size>
<width>250</width>
<height>0</height>
</size>
</property>
<layout class="QHBoxLayout" name="social_layout">
<property name="sizeConstraint">
<enum>QLayout::SetFixedSize</enum>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
</layout>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="actions_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Actions</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QWidget" name="buttons_widget" native="true">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="title"> <property name="minimumSize">
<string>Links</string> <size>
<width>250</width>
<height>0</height>
</size>
</property> </property>
<layout class="QHBoxLayout" name="social_layout"/> <property name="maximumSize">
<size>
<width>250</width>
<height>16777215</height>
</size>
</property>
<layout class="QVBoxLayout" name="button_layout">
<property name="sizeConstraint">
<enum>QLayout::SetFixedSize</enum>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QPushButton" name="open_store_button">
<property name="text">
<string>Buy in Epic Games Store</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="wishlist_button">
<property name="text">
<string>Add to wishlist</string>
</property>
</widget>
</item>
</layout>
</widget> </widget>
</item> </item>
</layout> </layout>
</item> </item>
<item> <item>
<spacer name="image_info_hspacer"> <widget class="QFrame" name="requirements_group">
<property name="orientation"> <property name="sizePolicy">
<enum>Qt::Horizontal</enum> <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property> </property>
<property name="sizeHint" stdset="0"> <property name="frameShape">
<size> <enum>QFrame::StyledPanel</enum>
<width>40</width>
<height>20</height>
</size>
</property> </property>
</spacer> <property name="frameShadow">
<enum>QFrame::Sunken</enum>
</property>
<layout class="QHBoxLayout" name="requirements_layout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
</layout>
</widget>
</item> </item>
</layout> </layout>
</item> </item>
<item>
<widget class="QGroupBox" name="requirements_group">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>System requirements</string>
</property>
<layout class="QHBoxLayout" name="requirements_layout">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
</layout>
</widget>
</item>
<item>
<spacer name="shop_game_info_vspacer">
<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> </layout>
</widget> </widget>
<resources/> <resources/>