1
0
Fork 0
mirror of synced 2024-05-04 20:52:58 +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.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
)

View file

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

View file

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

View file

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

View file

@ -1,57 +1,65 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ShopGameInfo</class>
<widget class="QWidget" name="ShopGameInfo">
<class>ShopInfo</class>
<widget class="QWidget" name="ShopInfo">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>702</width>
<height>468</height>
<width>434</width>
<height>250</height>
</rect>
</property>
<property name="windowTitle">
<string notr="true">ShopGameInfo</string>
</property>
<layout class="QVBoxLayout" name="shop_game_info_layout">
<layout class="QHBoxLayout" name="main_layout" stretch="0,1">
<item>
<layout class="QHBoxLayout" name="image_info_layout">
<layout class="QVBoxLayout" name="left_layout"/>
</item>
<item>
<layout class="QVBoxLayout" name="right_layout">
<item>
<layout class="QGridLayout" name="info_layout">
<item row="6" column="1">
<spacer name="horizontalSpacer">
<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" colspan="2">
<widget class="QLabel" name="tags">
<property name="text">
<string notr="true">tags</string>
</property>
</widget>
</item>
<item row="4" column="0" colspan="2">
<widget class="QLabel" name="discount_price">
<property name="text">
<string notr="true">discount</string>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="title">
<layout class="QFormLayout" name="info_layout">
<property name="labelAlignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
<property name="horizontalSpacing">
<number>12</number>
</property>
<property name="verticalSpacing">
<number>12</number>
</property>
<property name="leftMargin">
<number>6</number>
</property>
<property name="topMargin">
<number>6</number>
</property>
<property name="rightMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>6</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="title_label">
<property name="font">
<font>
<pointsize>18</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</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">
<string notr="true">title</string>
</property>
@ -60,34 +68,24 @@
</property>
</widget>
</item>
<item row="6" column="0">
<layout class="QVBoxLayout" name="button_layout">
<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">
<item row="1" column="0">
<widget class="QLabel" name="developer_label">
<property name="font">
<font>
<pointsize>14</pointsize>
<weight>75</weight>
<bold>true</bold>
</font>
</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">
<string notr="true">dev</string>
</property>
@ -96,94 +94,252 @@
</property>
</widget>
</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">
<property name="text">
<string>You already own this game</string>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QLabel" name="price">
<property name="text">
<string notr="true">price</string>
<item row="3" column="0">
<widget class="QLabel" name="price_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="textInteractionFlags">
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set>
<property name="text">
<string>Price</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
<item row="7" column="0" colspan="2">
<widget class="QGroupBox" name="social_group">
<item row="3" column="1">
<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">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>Links</string>
<property name="minimumSize">
<size>
<width>250</width>
<height>0</height>
</size>
</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>
</item>
</layout>
</item>
<item>
<spacer name="image_info_hspacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<widget class="QFrame" name="requirements_group">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</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>
</layout>
</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>
</widget>
<resources/>