GameDlc: Re-write the form to use a QToolBox instead of two separate QGroupBoxes.
By using a QToolBox, we can better utilize the available space for long lists of DLCs. `GameDlcWidget` is now responsible for handling installing and uninstalling the DLC based on RareGame's functionality. Since `GameUtils` is not used for uninstalling any more, remove it the arguments of `GameInfoTabs` completely.
This commit is contained in:
parent
84694a68a8
commit
304ad0388e
|
@ -57,7 +57,7 @@ class GamesTab(QStackedWidget):
|
|||
self.head_bar.goto_eos_ubisoft.connect(self.show_eos_ubisoft)
|
||||
self.games.layout().addWidget(self.head_bar)
|
||||
|
||||
self.game_info_tabs = GameInfoTabs(self.game_utils, self)
|
||||
self.game_info_tabs = GameInfoTabs(self)
|
||||
self.game_info_tabs.back_clicked.connect(lambda: self.setCurrentWidget(self.games))
|
||||
self.addWidget(self.game_info_tabs)
|
||||
|
||||
|
@ -152,8 +152,8 @@ class GamesTab(QStackedWidget):
|
|||
|
||||
@pyqtSlot(RareGame)
|
||||
def show_game_info(self, rgame):
|
||||
self.game_info_tabs.update_game(rgame)
|
||||
self.setCurrentWidget(self.game_info_tabs)
|
||||
self.game_info_tabs.update_game(rgame)
|
||||
|
||||
@pyqtSlot()
|
||||
def update_count_games_label(self):
|
||||
|
|
|
@ -6,7 +6,6 @@ from PyQt5.QtWidgets import QTreeView
|
|||
|
||||
from rare.models.game import RareGame
|
||||
from rare.shared import LegendaryCoreSingleton, GlobalSignalsSingleton, ArgumentsSingleton
|
||||
from rare.shared.game_utils import GameUtils
|
||||
from rare.utils.extra_widgets import SideTabWidget
|
||||
from rare.utils.json_formatter import QJsonModel
|
||||
from .game_dlc import GameDlc
|
||||
|
@ -15,20 +14,20 @@ from .game_settings import GameSettings
|
|||
|
||||
|
||||
class GameInfoTabs(SideTabWidget):
|
||||
def __init__(self, game_utils: GameUtils, parent=None):
|
||||
def __init__(self, parent=None):
|
||||
super(GameInfoTabs, self).__init__(show_back=True, parent=parent)
|
||||
self.core = LegendaryCoreSingleton()
|
||||
self.signals = GlobalSignalsSingleton()
|
||||
self.args = ArgumentsSingleton()
|
||||
|
||||
self.info = GameInfo(game_utils, self)
|
||||
self.addTab(self.info, self.tr("Information"))
|
||||
self.info_tab = GameInfo(self)
|
||||
self.addTab(self.info_tab, self.tr("Information"))
|
||||
|
||||
self.settings = GameSettings(self)
|
||||
self.addTab(self.settings, self.tr("Settings"))
|
||||
self.settings_tab = GameSettings(self)
|
||||
self.addTab(self.settings_tab, self.tr("Settings"))
|
||||
|
||||
self.dlc = GameDlc(game_utils, self)
|
||||
self.addTab(self.dlc, self.tr("Downloadable Content"))
|
||||
self.dlc_tab = GameDlc(self)
|
||||
self.addTab(self.dlc_tab, self.tr("Downloadable Content"))
|
||||
|
||||
# FIXME: Hiding didn't work, so don't add these tabs in normal mode. Fix this properly later
|
||||
if self.args.debug:
|
||||
|
@ -37,21 +36,23 @@ class GameInfoTabs(SideTabWidget):
|
|||
self.igame_meta_view = GameMetadataView(self)
|
||||
self.addTab(self.igame_meta_view, self.tr("InstalledGame Metadata"))
|
||||
|
||||
self.tabBar().setCurrentIndex(1)
|
||||
# self.setCurrentWidget(self.info_tab)
|
||||
self.setCurrentIndex(1)
|
||||
|
||||
def update_game(self, rgame: RareGame):
|
||||
self.info.update_game(rgame)
|
||||
self.info_tab.update_game(rgame)
|
||||
|
||||
self.settings.load_settings(rgame)
|
||||
self.settings.setEnabled(rgame.is_installed)
|
||||
self.settings_tab.load_settings(rgame)
|
||||
self.settings_tab.setEnabled(rgame.is_installed)
|
||||
|
||||
self.dlc.update_dlcs(rgame)
|
||||
self.dlc.setEnabled(bool(rgame.owned_dlcs))
|
||||
self.dlc_tab.update_dlcs(rgame)
|
||||
self.dlc_tab.setEnabled(bool(rgame.owned_dlcs))
|
||||
|
||||
if self.args.debug:
|
||||
self.game_meta_view.update_game(rgame, rgame.game)
|
||||
self.igame_meta_view.update_game(rgame, rgame.igame)
|
||||
|
||||
# self.setCurrentWidget(self.info_tab)
|
||||
self.setCurrentIndex(1)
|
||||
|
||||
def keyPressEvent(self, e: QKeyEvent):
|
||||
|
|
|
@ -1,22 +1,79 @@
|
|||
from typing import Optional
|
||||
from typing import Optional, List
|
||||
|
||||
from PyQt5.QtCore import pyqtSignal, pyqtSlot
|
||||
from PyQt5.QtWidgets import QFrame, QWidget, QMessageBox
|
||||
from PyQt5.QtCore import Qt, pyqtSlot, pyqtSignal
|
||||
from PyQt5.QtWidgets import QFrame, QMessageBox, QToolBox
|
||||
|
||||
from rare.models.game import RareGame
|
||||
from rare.models.install import InstallOptionsModel
|
||||
from rare.shared import LegendaryCoreSingleton, GlobalSignalsSingleton
|
||||
from rare.shared.game_utils import GameUtils
|
||||
from rare.shared.image_manager import ImageSize
|
||||
from rare.ui.components.tabs.games.game_info.game_dlc import Ui_GameDlc
|
||||
from rare.ui.components.tabs.games.game_info.game_dlc_widget import Ui_GameDlcWidget
|
||||
from rare.widgets.image_widget import ImageWidget
|
||||
from rare.utils.misc import widget_object_name
|
||||
|
||||
|
||||
class GameDlc(QWidget):
|
||||
install_dlc = pyqtSignal(str, bool)
|
||||
class GameDlcWidget(QFrame):
|
||||
def __init__(self, rgame: RareGame, rdlc: RareGame, parent=None):
|
||||
super(GameDlcWidget, self).__init__(parent=parent)
|
||||
self.ui = Ui_GameDlcWidget()
|
||||
self.ui.setupUi(self)
|
||||
self.setObjectName(widget_object_name(self, rdlc.app_name))
|
||||
self.rgame = rgame
|
||||
self.rdlc = rdlc
|
||||
|
||||
def __init__(self, game_utils: GameUtils, parent=None):
|
||||
self.image = ImageWidget(self)
|
||||
self.image.setFixedSize(ImageSize.Icon)
|
||||
self.ui.dlc_layout.insertWidget(0, self.image)
|
||||
|
||||
self.ui.dlc_name.setText(rdlc.app_title)
|
||||
self.ui.version.setText(rdlc.version)
|
||||
self.ui.app_name.setText(rdlc.app_name)
|
||||
|
||||
self.image.setPixmap(rdlc.pixmap)
|
||||
|
||||
|
||||
class InstalledGameDlcWidget(GameDlcWidget):
|
||||
uninstalled = pyqtSignal(RareGame)
|
||||
|
||||
def __init__(self, rgame: RareGame, rdlc: RareGame, parent=None):
|
||||
super(InstalledGameDlcWidget, self).__init__(rgame=rgame, rdlc=rdlc, parent=parent)
|
||||
# lk: set object names for CSS properties
|
||||
self.ui.action_button.setObjectName("UninstallButton")
|
||||
self.ui.action_button.clicked.connect(self.uninstall_dlc)
|
||||
self.ui.action_button.setText(self.tr("Uninstall DLC"))
|
||||
# lk: don't reference `self.rdlc` here because the object has been deleted
|
||||
rdlc.signals.game.uninstalled.connect(lambda: self.uninstalled.emit(rdlc))
|
||||
|
||||
def uninstall_dlc(self):
|
||||
self.rdlc.uninstall()
|
||||
|
||||
|
||||
class AvailableGameDlcWidget(GameDlcWidget):
|
||||
installed = pyqtSignal(RareGame)
|
||||
|
||||
def __init__(self, rgame: RareGame, rdlc: RareGame, parent=None):
|
||||
super(AvailableGameDlcWidget, self).__init__(rgame=rgame, rdlc=rdlc, parent=parent)
|
||||
# lk: set object names for CSS properties
|
||||
self.ui.action_button.setObjectName("InstallButton")
|
||||
self.ui.action_button.clicked.connect(self.install_dlc)
|
||||
self.ui.action_button.setText(self.tr("Install DLC"))
|
||||
# lk: don't reference `self.rdlc` here because the object has been deleted
|
||||
rdlc.signals.game.installed.connect(lambda: self.installed.emit(rdlc))
|
||||
|
||||
def install_dlc(self):
|
||||
if not self.rgame.is_installed:
|
||||
QMessageBox.warning(
|
||||
self,
|
||||
self.tr("Error"),
|
||||
self.tr("Base Game is not installed. Please install {} first").format(self.rgame.app_title),
|
||||
)
|
||||
return
|
||||
self.rdlc.install()
|
||||
|
||||
|
||||
class GameDlc(QToolBox):
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super(GameDlc, self).__init__(parent=parent)
|
||||
self.ui = Ui_GameDlc()
|
||||
self.ui.setupUi(self)
|
||||
|
@ -24,100 +81,89 @@ class GameDlc(QWidget):
|
|||
self.signals = GlobalSignalsSingleton()
|
||||
|
||||
self.rgame: Optional[RareGame] = None
|
||||
self.game_utils = game_utils
|
||||
|
||||
self.ui.available_dlc_scroll.setFrameStyle(QFrame.NoFrame)
|
||||
self.ui.installed_dlc_scroll.setFrameStyle(QFrame.NoFrame)
|
||||
def list_installed(self) -> List[InstalledGameDlcWidget]:
|
||||
return self.ui.installed_dlc_container.findChildren(InstalledGameDlcWidget, options=Qt.FindDirectChildrenOnly)
|
||||
|
||||
self.installed_dlc_widgets = list()
|
||||
self.available_dlc_widgets = list()
|
||||
def list_available(self) -> List[AvailableGameDlcWidget]:
|
||||
return self.ui.available_dlc_container.findChildren(AvailableGameDlcWidget, options=Qt.FindDirectChildrenOnly)
|
||||
|
||||
def get_installed(self, app_name: str) -> Optional[InstalledGameDlcWidget]:
|
||||
return self.ui.installed_dlc_container.findChild(
|
||||
InstalledGameDlcWidget,
|
||||
name=widget_object_name(InstalledGameDlcWidget, app_name),
|
||||
options = Qt.FindDirectChildrenOnly
|
||||
)
|
||||
|
||||
def get_available(self, app_name: str) -> Optional[AvailableGameDlcWidget]:
|
||||
return self.ui.available_dlc_container.findChild(
|
||||
AvailableGameDlcWidget,
|
||||
name=widget_object_name(AvailableGameDlcWidget, app_name),
|
||||
options=Qt.FindDirectChildrenOnly
|
||||
)
|
||||
|
||||
def update_installed_page(self):
|
||||
have_installed = bool(self.list_installed())
|
||||
self.ui.installed_dlc_label.setVisible(not have_installed)
|
||||
self.ui.installed_dlc_container.setVisible(have_installed)
|
||||
if not have_installed:
|
||||
self.setCurrentWidget(self.ui.available_dlc_page)
|
||||
|
||||
def update_available_page(self):
|
||||
have_available = bool(self.list_available())
|
||||
self.ui.available_dlc_label.setVisible(not have_available)
|
||||
self.ui.available_dlc_container.setVisible(have_available)
|
||||
if not have_available:
|
||||
self.setCurrentWidget(self.ui.installed_dlc_page)
|
||||
|
||||
def append_installed(self, rdlc: RareGame):
|
||||
self.ui.installed_dlc_label.setVisible(False)
|
||||
self.ui.installed_dlc_container.setVisible(True)
|
||||
a_widget: AvailableGameDlcWidget = self.get_available(rdlc.app_name)
|
||||
if a_widget is not None:
|
||||
self.ui.available_dlc_container.layout().removeWidget(a_widget)
|
||||
a_widget.deleteLater()
|
||||
i_widget: InstalledGameDlcWidget = InstalledGameDlcWidget(
|
||||
self.rgame, rdlc, self.ui.installed_dlc_container
|
||||
)
|
||||
i_widget.destroyed.connect(self.update_installed_page)
|
||||
i_widget.uninstalled.connect(self.append_available)
|
||||
self.ui.installed_dlc_container.layout().addWidget(i_widget)
|
||||
|
||||
|
||||
def append_available(self, rdlc: RareGame):
|
||||
self.ui.available_dlc_label.setVisible(False)
|
||||
self.ui.available_dlc_container.setVisible(True)
|
||||
i_widget: InstalledGameDlcWidget = self.get_installed(rdlc.app_name)
|
||||
if i_widget is not None:
|
||||
self.ui.available_dlc_container.layout().removeWidget(i_widget)
|
||||
i_widget.deleteLater()
|
||||
a_widget: AvailableGameDlcWidget = AvailableGameDlcWidget(
|
||||
self.rgame, rdlc, self.ui.available_dlc_container
|
||||
)
|
||||
a_widget.destroyed.connect(self.update_available_page)
|
||||
a_widget.installed.connect(self.append_installed)
|
||||
self.ui.available_dlc_container.layout().addWidget(a_widget)
|
||||
|
||||
def update_dlcs(self, rgame: RareGame):
|
||||
self.rgame = rgame
|
||||
self.title.setTitle(self.rgame.app_title)
|
||||
|
||||
if self.installed_dlc_widgets:
|
||||
for dlc_widget in self.installed_dlc_widgets:
|
||||
dlc_widget.uninstall.disconnect()
|
||||
dlc_widget.deleteLater()
|
||||
self.installed_dlc_widgets.clear()
|
||||
if self.available_dlc_widgets:
|
||||
for dlc_widget in self.available_dlc_widgets:
|
||||
dlc_widget.install.disconnect()
|
||||
dlc_widget.deleteLater()
|
||||
self.available_dlc_widgets.clear()
|
||||
for i_widget in self.list_installed():
|
||||
self.ui.installed_dlc_container.layout().removeWidget(i_widget)
|
||||
i_widget.deleteLater()
|
||||
|
||||
for a_widget in self.list_available():
|
||||
self.ui.available_dlc_container.layout().removeWidget(a_widget)
|
||||
a_widget.deleteLater()
|
||||
|
||||
for dlc in sorted(self.rgame.owned_dlcs, key=lambda x: x.app_title):
|
||||
if dlc.is_installed:
|
||||
dlc_widget = GameDlcWidget(dlc, True)
|
||||
self.ui.installed_dlc_contents_layout.addWidget(dlc_widget)
|
||||
dlc_widget.uninstall.connect(self.uninstall)
|
||||
self.installed_dlc_widgets.append(dlc_widget)
|
||||
|
||||
self.append_installed(rdlc=dlc)
|
||||
else:
|
||||
dlc_widget = GameDlcWidget(dlc, False)
|
||||
self.ui.available_dlc_contents_layout.addWidget(dlc_widget)
|
||||
dlc_widget.install.connect(self.install)
|
||||
self.available_dlc_widgets.append(dlc_widget)
|
||||
self.append_available(rdlc=dlc)
|
||||
|
||||
self.ui.installed_dlc_label.setVisible(not self.installed_dlc_widgets)
|
||||
self.ui.installed_dlc_scroll.setVisible(bool(self.installed_dlc_widgets))
|
||||
|
||||
self.ui.available_dlc_label.setVisible(not self.available_dlc_widgets)
|
||||
self.ui.available_dlc_scroll.setVisible(bool(self.available_dlc_widgets))
|
||||
|
||||
@pyqtSlot(RareGame)
|
||||
def uninstall(self, rgame: RareGame):
|
||||
if self.game_utils.uninstall_game(rgame.app_name):
|
||||
self.update_dlcs(self.rgame)
|
||||
|
||||
def install(self, app_name):
|
||||
if not self.core.is_installed(self.rgame.app_name):
|
||||
QMessageBox.warning(
|
||||
self,
|
||||
"Error",
|
||||
self.tr("Base Game is not installed. Please install {} first").format(self.rgame.app_title),
|
||||
)
|
||||
return
|
||||
|
||||
self.signals.game.install.emit(InstallOptionsModel(app_name=app_name, update=True))
|
||||
|
||||
|
||||
class GameDlcWidget(QFrame):
|
||||
install = pyqtSignal(RareGame)
|
||||
uninstall = pyqtSignal(RareGame)
|
||||
|
||||
def __init__(self, dlc: RareGame, installed: bool, parent=None):
|
||||
super(GameDlcWidget, self).__init__(parent=parent)
|
||||
self.ui = Ui_GameDlcWidget()
|
||||
self.ui.setupUi(self)
|
||||
self.dlc = dlc
|
||||
|
||||
self.image = ImageWidget(self)
|
||||
self.image.setFixedSize(ImageSize.Smaller)
|
||||
self.ui.dlc_layout.insertWidget(0, self.image)
|
||||
|
||||
self.ui.dlc_name.setText(dlc.app_title)
|
||||
self.ui.version.setText(dlc.version)
|
||||
self.ui.app_name.setText(dlc.app_name)
|
||||
|
||||
self.image.setPixmap(dlc.pixmap)
|
||||
|
||||
if installed:
|
||||
self.ui.action_button.setProperty("uninstall", 1)
|
||||
self.ui.action_button.clicked.connect(self.uninstall_dlc)
|
||||
self.ui.action_button.setText(self.tr("Uninstall DLC"))
|
||||
else:
|
||||
self.ui.action_button.setProperty("install", 1)
|
||||
self.ui.action_button.clicked.connect(self.install_game)
|
||||
self.ui.action_button.setText(self.tr("Install DLC"))
|
||||
|
||||
def uninstall_dlc(self):
|
||||
self.ui.action_button.setDisabled(True)
|
||||
self.ui.action_button.setText(self.tr("Uninstalling"))
|
||||
self.uninstall.emit(self.dlc)
|
||||
|
||||
def install_game(self):
|
||||
self.ui.action_button.setDisabled(True)
|
||||
self.ui.action_button.setText(self.tr("Installing"))
|
||||
self.install.emit(self.dlc)
|
||||
if not self.list_available():
|
||||
self.setCurrentWidget(self.ui.installed_dlc_page)
|
||||
if not self.list_installed():
|
||||
self.setCurrentWidget(self.ui.available_dlc_page)
|
||||
|
|
|
@ -38,16 +38,19 @@ logger = getLogger("GameInfo")
|
|||
|
||||
|
||||
class GameInfo(QWidget):
|
||||
def __init__(self, game_utils, parent=None):
|
||||
def __init__(self, parent=None):
|
||||
super(GameInfo, self).__init__(parent=parent)
|
||||
self.ui = Ui_GameInfo()
|
||||
self.ui.setupUi(self)
|
||||
# lk: set object names for CSS properties
|
||||
self.ui.install_button.setObjectName("InstallButton")
|
||||
self.ui.uninstall_button.setObjectName("UninstallButton")
|
||||
|
||||
self.rcore = RareCore.instance()
|
||||
self.core = LegendaryCoreSingleton()
|
||||
self.signals = GlobalSignalsSingleton()
|
||||
self.args = ArgumentsSingleton()
|
||||
self.image_manager = ImageManagerSingleton()
|
||||
self.game_utils = game_utils
|
||||
|
||||
self.rgame: Optional[RareGame] = None
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
# Form implementation generated from reading ui file 'rare/ui/components/tabs/games/game_info/game_dlc.ui'
|
||||
#
|
||||
# Created by: PyQt5 UI code generator 5.15.6
|
||||
# Created by: PyQt5 UI code generator 5.15.7
|
||||
#
|
||||
# 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.
|
||||
|
@ -14,96 +14,60 @@ from PyQt5 import QtCore, QtGui, QtWidgets
|
|||
class Ui_GameDlc(object):
|
||||
def setupUi(self, GameDlc):
|
||||
GameDlc.setObjectName("GameDlc")
|
||||
GameDlc.resize(287, 354)
|
||||
self.game_dlc_layout = QtWidgets.QVBoxLayout(GameDlc)
|
||||
self.game_dlc_layout.setObjectName("game_dlc_layout")
|
||||
self.installed_dlc_group = QtWidgets.QGroupBox(GameDlc)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.installed_dlc_group.sizePolicy().hasHeightForWidth())
|
||||
self.installed_dlc_group.setSizePolicy(sizePolicy)
|
||||
self.installed_dlc_group.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
|
||||
self.installed_dlc_group.setObjectName("installed_dlc_group")
|
||||
self.installed_dlc_group_layout = QtWidgets.QVBoxLayout(self.installed_dlc_group)
|
||||
self.installed_dlc_group_layout.setObjectName("installed_dlc_group_layout")
|
||||
self.installed_dlc_label = QtWidgets.QLabel(self.installed_dlc_group)
|
||||
GameDlc.resize(271, 139)
|
||||
GameDlc.setWindowTitle("GameDlc")
|
||||
GameDlc.setFrameShape(QtWidgets.QFrame.StyledPanel)
|
||||
GameDlc.setFrameShadow(QtWidgets.QFrame.Sunken)
|
||||
GameDlc.setLineWidth(0)
|
||||
self.installed_dlc_page = QtWidgets.QWidget()
|
||||
self.installed_dlc_page.setGeometry(QtCore.QRect(0, 0, 267, 79))
|
||||
self.installed_dlc_page.setObjectName("installed_dlc_page")
|
||||
self.installed_dlc_page_layout = QtWidgets.QVBoxLayout(self.installed_dlc_page)
|
||||
self.installed_dlc_page_layout.setContentsMargins(0, 0, 0, 0)
|
||||
self.installed_dlc_page_layout.setObjectName("installed_dlc_page_layout")
|
||||
self.installed_dlc_label = QtWidgets.QLabel(self.installed_dlc_page)
|
||||
self.installed_dlc_label.setObjectName("installed_dlc_label")
|
||||
self.installed_dlc_group_layout.addWidget(self.installed_dlc_label)
|
||||
self.installed_dlc_scroll = QtWidgets.QScrollArea(self.installed_dlc_group)
|
||||
self.installed_dlc_scroll.setFocusPolicy(QtCore.Qt.WheelFocus)
|
||||
self.installed_dlc_scroll.setFrameShape(QtWidgets.QFrame.StyledPanel)
|
||||
self.installed_dlc_scroll.setFrameShadow(QtWidgets.QFrame.Sunken)
|
||||
self.installed_dlc_scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
|
||||
self.installed_dlc_scroll.setWidgetResizable(True)
|
||||
self.installed_dlc_scroll.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
|
||||
self.installed_dlc_scroll.setObjectName("installed_dlc_scroll")
|
||||
self.installed_dlc_contents = QtWidgets.QWidget()
|
||||
self.installed_dlc_contents.setGeometry(QtCore.QRect(0, 0, 255, 16))
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.installed_dlc_contents.sizePolicy().hasHeightForWidth())
|
||||
self.installed_dlc_contents.setSizePolicy(sizePolicy)
|
||||
self.installed_dlc_contents.setObjectName("installed_dlc_contents")
|
||||
self.installed_dlc_contents_layout = QtWidgets.QVBoxLayout(self.installed_dlc_contents)
|
||||
self.installed_dlc_contents_layout.setContentsMargins(0, 0, 9, 0)
|
||||
self.installed_dlc_contents_layout.setObjectName("installed_dlc_contents_layout")
|
||||
self.installed_dlc_scroll.setWidget(self.installed_dlc_contents)
|
||||
self.installed_dlc_group_layout.addWidget(self.installed_dlc_scroll)
|
||||
self.game_dlc_layout.addWidget(self.installed_dlc_group)
|
||||
self.available_dlc_group = QtWidgets.QGroupBox(GameDlc)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.available_dlc_group.sizePolicy().hasHeightForWidth())
|
||||
self.available_dlc_group.setSizePolicy(sizePolicy)
|
||||
self.available_dlc_group.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
|
||||
self.available_dlc_group.setObjectName("available_dlc_group")
|
||||
self.available_dlc_group_layout = QtWidgets.QVBoxLayout(self.available_dlc_group)
|
||||
self.available_dlc_group_layout.setObjectName("available_dlc_group_layout")
|
||||
self.available_dlc_label = QtWidgets.QLabel(self.available_dlc_group)
|
||||
self.installed_dlc_page_layout.addWidget(self.installed_dlc_label, 0, QtCore.Qt.AlignTop)
|
||||
self.installed_dlc_container = QtWidgets.QWidget(self.installed_dlc_page)
|
||||
self.installed_dlc_container.setObjectName("installed_dlc_container")
|
||||
self.installed_dlc_container_layout = QtWidgets.QVBoxLayout(self.installed_dlc_container)
|
||||
self.installed_dlc_container_layout.setContentsMargins(0, 0, 3, 0)
|
||||
self.installed_dlc_container_layout.setObjectName("installed_dlc_container_layout")
|
||||
self.installed_dlc_page_layout.addWidget(self.installed_dlc_container, 0, QtCore.Qt.AlignTop)
|
||||
self.installed_dlc_page_layout.setStretch(1, 1)
|
||||
GameDlc.addItem(self.installed_dlc_page, "")
|
||||
self.available_dlc_page = QtWidgets.QWidget()
|
||||
self.available_dlc_page.setGeometry(QtCore.QRect(0, 0, 267, 79))
|
||||
self.available_dlc_page.setObjectName("available_dlc_page")
|
||||
self.available_dlc_page_layou = QtWidgets.QVBoxLayout(self.available_dlc_page)
|
||||
self.available_dlc_page_layou.setContentsMargins(0, 0, 0, 0)
|
||||
self.available_dlc_page_layou.setObjectName("available_dlc_page_layou")
|
||||
self.available_dlc_label = QtWidgets.QLabel(self.available_dlc_page)
|
||||
self.available_dlc_label.setObjectName("available_dlc_label")
|
||||
self.available_dlc_group_layout.addWidget(self.available_dlc_label)
|
||||
self.available_dlc_scroll = QtWidgets.QScrollArea(self.available_dlc_group)
|
||||
self.available_dlc_scroll.setFrameShape(QtWidgets.QFrame.StyledPanel)
|
||||
self.available_dlc_scroll.setFrameShadow(QtWidgets.QFrame.Sunken)
|
||||
self.available_dlc_scroll.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
|
||||
self.available_dlc_scroll.setWidgetResizable(True)
|
||||
self.available_dlc_scroll.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
|
||||
self.available_dlc_scroll.setObjectName("available_dlc_scroll")
|
||||
self.available_dlc_contents = QtWidgets.QWidget()
|
||||
self.available_dlc_contents.setGeometry(QtCore.QRect(0, 0, 255, 16))
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
sizePolicy.setHeightForWidth(self.available_dlc_contents.sizePolicy().hasHeightForWidth())
|
||||
self.available_dlc_contents.setSizePolicy(sizePolicy)
|
||||
self.available_dlc_contents.setObjectName("available_dlc_contents")
|
||||
self.available_dlc_contents_layout = QtWidgets.QVBoxLayout(self.available_dlc_contents)
|
||||
self.available_dlc_contents_layout.setContentsMargins(0, 0, 9, 0)
|
||||
self.available_dlc_contents_layout.setObjectName("available_dlc_contents_layout")
|
||||
self.available_dlc_scroll.setWidget(self.available_dlc_contents)
|
||||
self.available_dlc_group_layout.addWidget(self.available_dlc_scroll)
|
||||
self.game_dlc_layout.addWidget(self.available_dlc_group)
|
||||
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
|
||||
self.game_dlc_layout.addItem(spacerItem)
|
||||
self.available_dlc_page_layou.addWidget(self.available_dlc_label, 0, QtCore.Qt.AlignTop)
|
||||
self.available_dlc_container = QtWidgets.QWidget(self.available_dlc_page)
|
||||
self.available_dlc_container.setObjectName("available_dlc_container")
|
||||
self.available_dlc_container_layout = QtWidgets.QVBoxLayout(self.available_dlc_container)
|
||||
self.available_dlc_container_layout.setContentsMargins(0, 0, 3, 0)
|
||||
self.available_dlc_container_layout.setObjectName("available_dlc_container_layout")
|
||||
self.available_dlc_page_layou.addWidget(self.available_dlc_container, 0, QtCore.Qt.AlignTop)
|
||||
self.available_dlc_page_layou.setStretch(1, 1)
|
||||
GameDlc.addItem(self.available_dlc_page, "")
|
||||
|
||||
self.retranslateUi(GameDlc)
|
||||
|
||||
def retranslateUi(self, GameDlc):
|
||||
_translate = QtCore.QCoreApplication.translate
|
||||
GameDlc.setWindowTitle(_translate("GameDlc", "GameDlc"))
|
||||
self.installed_dlc_group.setTitle(_translate("GameDlc", "Installed DLCs"))
|
||||
self.installed_dlc_label.setText(_translate("GameDlc", "No Downloadable Content has been installed."))
|
||||
self.available_dlc_group.setTitle(_translate("GameDlc", "Available DLCs"))
|
||||
GameDlc.setItemText(GameDlc.indexOf(self.installed_dlc_page), _translate("GameDlc", "Installed DLCs"))
|
||||
self.available_dlc_label.setText(_translate("GameDlc", "No Downloadable Content is available"))
|
||||
GameDlc.setItemText(GameDlc.indexOf(self.available_dlc_page), _translate("GameDlc", "Available DLCs"))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import sys
|
||||
app = QtWidgets.QApplication(sys.argv)
|
||||
GameDlc = QtWidgets.QWidget()
|
||||
GameDlc = QtWidgets.QToolBox()
|
||||
ui = Ui_GameDlc()
|
||||
ui.setupUi(GameDlc)
|
||||
GameDlc.show()
|
||||
|
|
|
@ -1,184 +1,131 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>GameDlc</class>
|
||||
<widget class="QWidget" name="GameDlc">
|
||||
<widget class="QToolBox" name="GameDlc">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>287</width>
|
||||
<height>354</height>
|
||||
<width>271</width>
|
||||
<height>139</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>GameDlc</string>
|
||||
<string notr="true">GameDlc</string>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="game_dlc_layout">
|
||||
<item>
|
||||
<widget class="QGroupBox" name="installed_dlc_group">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Installed DLCs</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="installed_dlc_group_layout">
|
||||
<item>
|
||||
<widget class="QLabel" name="installed_dlc_label">
|
||||
<property name="text">
|
||||
<string>No Downloadable Content has been installed.</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QScrollArea" name="installed_dlc_scroll">
|
||||
<property name="focusPolicy">
|
||||
<enum>Qt::WheelFocus</enum>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Sunken</enum>
|
||||
</property>
|
||||
<property name="horizontalScrollBarPolicy">
|
||||
<enum>Qt::ScrollBarAlwaysOff</enum>
|
||||
</property>
|
||||
<property name="widgetResizable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
|
||||
</property>
|
||||
<widget class="QWidget" name="installed_dlc_contents">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>255</width>
|
||||
<height>16</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="installed_dlc_contents_layout">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>9</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="available_dlc_group">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="title">
|
||||
<string>Available DLCs</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="available_dlc_group_layout">
|
||||
<item>
|
||||
<widget class="QLabel" name="available_dlc_label">
|
||||
<property name="text">
|
||||
<string>No Downloadable Content is available</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QScrollArea" name="available_dlc_scroll">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Sunken</enum>
|
||||
</property>
|
||||
<property name="horizontalScrollBarPolicy">
|
||||
<enum>Qt::ScrollBarAlwaysOff</enum>
|
||||
</property>
|
||||
<property name="widgetResizable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
|
||||
</property>
|
||||
<widget class="QWidget" name="available_dlc_contents">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>255</width>
|
||||
<height>16</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="available_dlc_contents_layout">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>9</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="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>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Sunken</enum>
|
||||
</property>
|
||||
<property name="lineWidth">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="installed_dlc_page">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>267</width>
|
||||
<height>79</height>
|
||||
</rect>
|
||||
</property>
|
||||
<attribute name="label">
|
||||
<string>Installed DLCs</string>
|
||||
</attribute>
|
||||
<layout class="QVBoxLayout" name="installed_dlc_page_layout" stretch="0,1">
|
||||
<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 alignment="Qt::AlignTop">
|
||||
<widget class="QLabel" name="installed_dlc_label">
|
||||
<property name="text">
|
||||
<string>No Downloadable Content has been installed.</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item alignment="Qt::AlignTop">
|
||||
<widget class="QWidget" name="installed_dlc_container" native="true">
|
||||
<layout class="QVBoxLayout" name="installed_dlc_container_layout">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="available_dlc_page">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>267</width>
|
||||
<height>79</height>
|
||||
</rect>
|
||||
</property>
|
||||
<attribute name="label">
|
||||
<string>Available DLCs</string>
|
||||
</attribute>
|
||||
<layout class="QVBoxLayout" name="available_dlc_page_layou" stretch="0,1">
|
||||
<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 alignment="Qt::AlignTop">
|
||||
<widget class="QLabel" name="available_dlc_label">
|
||||
<property name="text">
|
||||
<string>No Downloadable Content is available</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item alignment="Qt::AlignTop">
|
||||
<widget class="QWidget" name="available_dlc_container" native="true">
|
||||
<layout class="QVBoxLayout" name="available_dlc_container_layout">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>3</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
# Form implementation generated from reading ui file 'rare/ui/components/tabs/games/game_info/game_dlc_widget.ui'
|
||||
#
|
||||
# Created by: PyQt5 UI code generator 5.15.6
|
||||
# Created by: PyQt5 UI code generator 5.15.7
|
||||
#
|
||||
# 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.
|
||||
|
@ -14,7 +14,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
|
|||
class Ui_GameDlcWidget(object):
|
||||
def setupUi(self, GameDlcWidget):
|
||||
GameDlcWidget.setObjectName("GameDlcWidget")
|
||||
GameDlcWidget.resize(517, 70)
|
||||
GameDlcWidget.resize(454, 58)
|
||||
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
|
||||
sizePolicy.setHorizontalStretch(0)
|
||||
sizePolicy.setVerticalStretch(0)
|
||||
|
@ -24,6 +24,7 @@ class Ui_GameDlcWidget(object):
|
|||
GameDlcWidget.setFrameShape(QtWidgets.QFrame.StyledPanel)
|
||||
GameDlcWidget.setFrameShadow(QtWidgets.QFrame.Plain)
|
||||
self.dlc_layout = QtWidgets.QHBoxLayout(GameDlcWidget)
|
||||
self.dlc_layout.setContentsMargins(0, 0, 0, 0)
|
||||
self.dlc_layout.setObjectName("dlc_layout")
|
||||
self.dlc_info = QtWidgets.QWidget(GameDlcWidget)
|
||||
self.dlc_info.setObjectName("dlc_info")
|
||||
|
@ -98,7 +99,7 @@ class Ui_GameDlcWidget(object):
|
|||
self.action_button.setStyleSheet("")
|
||||
self.action_button.setText("Action")
|
||||
self.action_button.setObjectName("action_button")
|
||||
self.dlc_layout.addWidget(self.action_button, 0, QtCore.Qt.AlignTop)
|
||||
self.dlc_layout.addWidget(self.action_button, 0, QtCore.Qt.AlignBottom)
|
||||
self.dlc_layout.setStretch(1, 1)
|
||||
|
||||
self.retranslateUi(GameDlcWidget)
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>517</width>
|
||||
<height>70</height>
|
||||
<width>454</width>
|
||||
<height>58</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
|
@ -26,6 +26,18 @@
|
|||
<enum>QFrame::Plain</enum>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="dlc_layout" stretch="0,1,0">
|
||||
<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="QWidget" name="dlc_info" native="true">
|
||||
<layout class="QFormLayout" name="dlc_info_layout">
|
||||
|
@ -165,7 +177,7 @@
|
|||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item alignment="Qt::AlignTop">
|
||||
<item alignment="Qt::AlignBottom">
|
||||
<widget class="QPushButton" name="action_button">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
|
|
Loading…
Reference in a new issue