From b02483eb80015b436d1c99ee0f9b3da70358a691 Mon Sep 17 00:00:00 2001 From: loathingKernel <142770+loathingKernel@users.noreply.github.com> Date: Tue, 24 Jan 2023 18:16:23 +0200 Subject: [PATCH] GameInfo: Refactor the move game stack to re-use the existing widgets instead of adding them again to the layout. Move game should still switch to RareGame, similar to the way it works for verifing. Also add non-functional "Import Game" button --- .../tabs/games/game_info/game_info.py | 49 ++---- .../tabs/games/game_info/move_game.py | 20 +-- .../tabs/games/game_info/game_info.py | 147 ++++++++++-------- .../tabs/games/game_info/game_info.ui | 124 ++++++++++++--- 4 files changed, 211 insertions(+), 129 deletions(-) diff --git a/rare/components/tabs/games/game_info/game_info.py b/rare/components/tabs/games/game_info/game_info.py index 0d865bcb..2b3e741b 100644 --- a/rare/components/tabs/games/game_info/game_info.py +++ b/rare/components/tabs/games/game_info/game_info.py @@ -7,14 +7,12 @@ from typing import Optional, Union from PyQt5.QtCore import ( Qt, - pyqtSignal, QThreadPool, pyqtSlot, ) from PyQt5.QtWidgets import ( QHBoxLayout, QMenu, - QProgressBar, QPushButton, QWidget, QMessageBox, @@ -43,9 +41,6 @@ logger = getLogger("GameInfo") class GameInfo(QWidget): - # verification_finished = pyqtSignal(InstalledGame) - # uninstalled = pyqtSignal(str) - def __init__(self, game_utils, parent=None): super(GameInfo, self).__init__(parent=parent) self.ui = Ui_GameInfo() @@ -58,8 +53,6 @@ class GameInfo(QWidget): self.game_utils = game_utils self.rgame: Optional[RareGame] = None - # self.game: Optional[Game] = None - # self.igame: Optional[InstalledGame] = None self.image = ImageWidget(self) self.image.setFixedSize(ImageSize.Display) @@ -94,19 +87,11 @@ class GameInfo(QWidget): self.ui.move_button.setMenu(QMenu()) self.ui.move_button.menu().addAction(self.move_action) - self.progress_of_moving = QProgressBar() self.existing_game_dir = False self.is_moving = False self.game_moving = None self.dest_path_with_suffix = None - self.widget_container = QWidget() - box_layout = QHBoxLayout() - box_layout.setContentsMargins(0, 0, 0, 0) - box_layout.addWidget(self.ui.move_button) - self.widget_container.setLayout(box_layout) - index = self.ui.move_stack.addWidget(self.widget_container) - self.ui.move_stack.setCurrentIndex(index) self.move_game_pop_up.browse_done.connect(self.show_menu_after_browse) self.move_game_pop_up.move_clicked.connect(self.ui.move_button.menu().close) self.move_game_pop_up.move_clicked.connect(self.move_game) @@ -195,7 +180,7 @@ class GameInfo(QWidget): self.verify_game(self.rgame) def verify_game(self, rgame: RareGame): - self.ui.verify_widget.setCurrentIndex(1) + self.ui.verify_stack.setCurrentWidget(self.ui.verify_progress_page) verify_worker = VerifyWorker(self.core, self.args, rgame) verify_worker.signals.progress.connect(self.__on_verify_progress) verify_worker.signals.result.connect(self.__on_verify_result) @@ -207,7 +192,7 @@ class GameInfo(QWidget): def verify_cleanup(self, rgame: RareGame): rgame.active_worker = None - self.ui.verify_widget.setCurrentIndex(0) + self.ui.verify_stack.setCurrentWidget(self.ui.verify_button_page) self.ui.move_button.setEnabled(True) self.ui.verify_button.setEnabled(True) @@ -235,7 +220,6 @@ class GameInfo(QWidget): self.tr("{} has been verified successfully. " "No missing or corrupt files found").format(rgame.title), ) - # self.verification_finished.emit(rgame.igame) else: ans = QMessageBox.question( self, @@ -283,8 +267,7 @@ class GameInfo(QWidget): else: return - self.ui.move_stack.addWidget(self.progress_of_moving) - self.ui.move_stack.setCurrentWidget(self.progress_of_moving) + self.ui.move_stack.setCurrentWidget(self.ui.move_progress) self.game_moving = self.rgame.app_name self.is_moving = True @@ -299,8 +282,8 @@ class GameInfo(QWidget): shutil.move(self.rgame.igame.install_path, dest_path) self.set_new_game(self.dest_path_with_suffix) - def update_progressbar(self, progress_int): - self.progress_of_moving.setValue(progress_int) + def __on_move_progress(self, progress_int): + self.ui.move_progress.setValue(progress_int) def start_copy_diff_drive(self): copy_worker = CopyGameInstallation( @@ -310,13 +293,13 @@ class GameInfo(QWidget): igame=self.rgame.igame, ) - copy_worker.signals.progress.connect(self.update_progressbar) + copy_worker.signals.progress.connect(self.__on_move_progress) copy_worker.signals.finished.connect(self.set_new_game) copy_worker.signals.no_space_left.connect(self.warn_no_space_left) QThreadPool.globalInstance().start(copy_worker) def move_helper_clean_up(self): - self.ui.move_stack.setCurrentWidget(self.ui.move_button) + self.ui.move_stack.setCurrentWidget(self.ui.move_button_page) self.move_game_pop_up.refresh_indicator() self.is_moving = False self.game_moving = None @@ -364,11 +347,11 @@ class GameInfo(QWidget): self.rgame.signals.game.uninstalled.connect(self.update_game) if (worker := self.rgame.active_worker) is not None: if isinstance(worker, VerifyWorker): - self.ui.verify_widget.setCurrentIndex(1) + self.ui.verify_stack.setCurrentWidget(self.ui.verify_progress_page) self.ui.verify_progress.setValue(self.rgame.progress) worker.signals.progress.connect(self.__on_verify_progress) else: - self.ui.verify_widget.setCurrentIndex(0) + self.ui.verify_stack.setCurrentWidget(self.ui.verify_button_page) self.title.setTitle(self.rgame.app_title) self.image.setPixmap(rgame.pixmap) @@ -394,20 +377,20 @@ class GameInfo(QWidget): self.ui.verify_button.setEnabled(bool(self.rgame.igame)) self.ui.repair_button.setEnabled(bool(self.rgame.igame)) - if not self.rgame.igame: - self.ui.game_actions_stack.setCurrentIndex(1) + if not self.rgame.is_installed or self.rgame.is_origin: + self.ui.game_actions_stack.setCurrentWidget(self.ui.uninstalled_page) if self.rgame.is_origin: self.ui.version.setText("N/A") self.ui.version.setEnabled(False) self.ui.install_button.setText(self.tr("Link to Origin/Launch")) else: - self.ui.install_button.setText(self.tr("Install")) + self.ui.install_button.setText(self.tr("Install Game")) else: if not self.args.offline: self.ui.repair_button.setDisabled( not os.path.exists(os.path.join(self.core.lgd.get_tmp_path(), f"{self.rgame.app_name}.repair")) ) - self.ui.game_actions_stack.setCurrentIndex(0) + self.ui.game_actions_stack.setCurrentWidget(self.ui.installed_page) grade_visible = not self.rgame.is_unreal and platform.system() != "Windows" self.ui.grade.setVisible(grade_visible) @@ -422,11 +405,9 @@ class GameInfo(QWidget): # Otherwhise, we show the move tool button. if self.rgame.igame is not None: if self.game_moving == self.rgame.app_name: - index = self.ui.move_stack.addWidget(self.progress_of_moving) - self.ui.move_stack.setCurrentIndex(index) + self.ui.move_stack.setCurrentWidget(self.ui.move_progress_page) else: - index = self.ui.move_stack.addWidget(self.ui.move_button) - self.ui.move_stack.setCurrentIndex(index) + self.ui.move_stack.setCurrentWidget(self.ui.move_button_page) # If a game is verifying or moving, disable both verify and moving buttons. if rgame.active_worker is not None: diff --git a/rare/components/tabs/games/game_info/move_game.py b/rare/components/tabs/games/game_info/move_game.py index 666502c9..2645d2bb 100644 --- a/rare/components/tabs/games/game_info/move_game.py +++ b/rare/components/tabs/games/game_info/move_game.py @@ -21,22 +21,21 @@ class MoveGamePopUp(QWidget): def __init__(self, parent=None): super(MoveGamePopUp, self).__init__(parent=parent) - layout: QVBoxLayout = QVBoxLayout() - self.install_path = str() self.core = LegendaryCoreSingleton() - self.move_path_edit = PathEdit(str(), QFileDialog.Directory, edit_func=self.edit_func_move_game) + self.install_path = "" + self.move_path_edit = PathEdit("", QFileDialog.Directory, edit_func=self.edit_func_move_game) self.move_path_edit.path_select.clicked.connect(self.emit_browse_done_signal) - self.move_game = QPushButton(self.tr("Move")) - self.move_game.setMaximumWidth(50) - self.move_game.clicked.connect(self.emit_move_game_signal) + self.move_button = QPushButton(self.tr("Move")) + self.move_button.setFixedSize(self.move_path_edit.path_select.sizeHint()) + self.move_button.clicked.connect(self.emit_move_game_signal) self.warn_overwriting = QLabel() middle_layout = QHBoxLayout() middle_layout.setAlignment(Qt.AlignRight) middle_layout.addWidget(self.warn_overwriting, stretch=1) - middle_layout.addWidget(self.move_game) + middle_layout.addWidget(self.move_button) bottom_layout = QVBoxLayout() self.aval_space_label = QLabel() @@ -44,6 +43,7 @@ class MoveGamePopUp(QWidget): bottom_layout.addWidget(self.aval_space_label) bottom_layout.addWidget(self.req_space_label) + layout: QVBoxLayout = QVBoxLayout() layout.addWidget(self.move_path_edit) layout.addLayout(middle_layout) layout.addLayout(bottom_layout) @@ -67,11 +67,11 @@ class MoveGamePopUp(QWidget): return os.stat(dir1).st_dev != os.stat(dir2).st_dev def edit_func_move_game(self, dir_selected): - self.move_game.setEnabled(True) + self.move_button.setEnabled(True) self.warn_overwriting.setHidden(True) def helper_func(reason: str) -> Tuple[bool, str, str]: - self.move_game.setEnabled(False) + self.move_button.setEnabled(False) return False, dir_selected, self.tr(reason) if not self.install_path or not dir_selected: @@ -124,7 +124,7 @@ class MoveGamePopUp(QWidget): return helper_func("Not enough space available on drive.") # Fallback - self.move_game.setEnabled(True) + self.move_button.setEnabled(True) return True, dir_selected, str() def update_game(self, app_name): diff --git a/rare/ui/components/tabs/games/game_info/game_info.py b/rare/ui/components/tabs/games/game_info/game_info.py index 941a2c78..6b21b9aa 100644 --- a/rare/ui/components/tabs/games/game_info/game_info.py +++ b/rare/ui/components/tabs/games/game_info/game_info.py @@ -2,7 +2,7 @@ # Form implementation generated from reading ui file 'rare/ui/components/tabs/games/game_info/game_info.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,20 +14,20 @@ from PyQt5 import QtCore, QtGui, QtWidgets class Ui_GameInfo(object): def setupUi(self, GameInfo): GameInfo.setObjectName("GameInfo") - GameInfo.resize(791, 583) + GameInfo.resize(533, 441) self.layout_game_info = QtWidgets.QHBoxLayout(GameInfo) self.layout_game_info.setObjectName("layout_game_info") - self.layout_game_info_form = QtWidgets.QGridLayout() - self.layout_game_info_form.setContentsMargins(6, 6, 6, 6) - self.layout_game_info_form.setSpacing(12) - self.layout_game_info_form.setObjectName("layout_game_info_form") - spacerItem = QtWidgets.QSpacerItem(0, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) - self.layout_game_info_form.addItem(spacerItem, 8, 1, 1, 1) + self.game_info_layout = QtWidgets.QGridLayout() + self.game_info_layout.setContentsMargins(6, 6, 6, 6) + self.game_info_layout.setSpacing(12) + self.game_info_layout.setObjectName("game_info_layout") + spacerItem = QtWidgets.QSpacerItem(20, 0, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.game_info_layout.addItem(spacerItem, 8, 1, 1, 1) self.dev = QtWidgets.QLabel(GameInfo) self.dev.setText("error") self.dev.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse) self.dev.setObjectName("dev") - self.layout_game_info_form.addWidget(self.dev, 0, 1, 1, 1) + self.game_info_layout.addWidget(self.dev, 0, 1, 1, 1) self.lbl_dev = QtWidgets.QLabel(GameInfo) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) @@ -39,18 +39,18 @@ class Ui_GameInfo(object): font.setWeight(75) self.lbl_dev.setFont(font) self.lbl_dev.setObjectName("lbl_dev") - self.layout_game_info_form.addWidget(self.lbl_dev, 0, 0, 1, 1, QtCore.Qt.AlignRight) + self.game_info_layout.addWidget(self.lbl_dev, 0, 0, 1, 1, QtCore.Qt.AlignRight) self.app_name = QtWidgets.QLabel(GameInfo) self.app_name.setText("error") self.app_name.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse) self.app_name.setObjectName("app_name") - self.layout_game_info_form.addWidget(self.app_name, 1, 1, 1, 1) + self.game_info_layout.addWidget(self.app_name, 1, 1, 1, 1) self.install_path = QtWidgets.QLabel(GameInfo) self.install_path.setText("error") self.install_path.setWordWrap(True) self.install_path.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse) self.install_path.setObjectName("install_path") - self.layout_game_info_form.addWidget(self.install_path, 5, 1, 1, 1) + self.game_info_layout.addWidget(self.install_path, 5, 1, 1, 1) self.lbl_platform = QtWidgets.QLabel(GameInfo) font = QtGui.QFont() font.setBold(True) @@ -58,12 +58,12 @@ class Ui_GameInfo(object): self.lbl_platform.setFont(font) self.lbl_platform.setAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.lbl_platform.setObjectName("lbl_platform") - self.layout_game_info_form.addWidget(self.lbl_platform, 6, 0, 1, 1) + self.game_info_layout.addWidget(self.lbl_platform, 6, 0, 1, 1) self.version = QtWidgets.QLabel(GameInfo) self.version.setText("error") self.version.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse) self.version.setObjectName("version") - self.layout_game_info_form.addWidget(self.version, 2, 1, 1, 1) + self.game_info_layout.addWidget(self.version, 2, 1, 1, 1) self.lbl_install_path = QtWidgets.QLabel(GameInfo) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) @@ -75,7 +75,7 @@ class Ui_GameInfo(object): font.setWeight(75) self.lbl_install_path.setFont(font) self.lbl_install_path.setObjectName("lbl_install_path") - self.layout_game_info_form.addWidget(self.lbl_install_path, 5, 0, 1, 1, QtCore.Qt.AlignRight) + self.game_info_layout.addWidget(self.lbl_install_path, 5, 0, 1, 1, QtCore.Qt.AlignRight) self.lbl_install_size = QtWidgets.QLabel(GameInfo) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) @@ -87,69 +87,80 @@ class Ui_GameInfo(object): font.setWeight(75) self.lbl_install_size.setFont(font) self.lbl_install_size.setObjectName("lbl_install_size") - self.layout_game_info_form.addWidget(self.lbl_install_size, 4, 0, 1, 1, QtCore.Qt.AlignRight) - spacerItem1 = QtWidgets.QSpacerItem(20, 0, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) - self.layout_game_info_form.addItem(spacerItem1, 8, 0, 1, 1) + self.game_info_layout.addWidget(self.lbl_install_size, 4, 0, 1, 1, QtCore.Qt.AlignRight) + spacerItem1 = QtWidgets.QSpacerItem(0, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.game_info_layout.addItem(spacerItem1, 8, 0, 1, 1) self.platform = QtWidgets.QLabel(GameInfo) self.platform.setText("error") self.platform.setObjectName("platform") - self.layout_game_info_form.addWidget(self.platform, 6, 1, 1, 1) + self.game_info_layout.addWidget(self.platform, 6, 1, 1, 1) self.game_actions_stack = QtWidgets.QStackedWidget(GameInfo) self.game_actions_stack.setMinimumSize(QtCore.QSize(250, 0)) + self.game_actions_stack.setMaximumSize(QtCore.QSize(250, 16777215)) self.game_actions_stack.setObjectName("game_actions_stack") self.installed_page = QtWidgets.QWidget() self.installed_page.setObjectName("installed_page") self.installed_layout = QtWidgets.QVBoxLayout(self.installed_page) self.installed_layout.setContentsMargins(0, 0, 0, 0) self.installed_layout.setObjectName("installed_layout") - self.verify_widget = QtWidgets.QStackedWidget(self.installed_page) - self.verify_widget.setObjectName("verify_widget") - self.page_verify_button = QtWidgets.QWidget() - self.page_verify_button.setObjectName("page_verify_button") - self.layout_verify_button = QtWidgets.QVBoxLayout(self.page_verify_button) - self.layout_verify_button.setContentsMargins(0, 0, 0, 0) - self.layout_verify_button.setSpacing(0) - self.layout_verify_button.setObjectName("layout_verify_button") - self.verify_button = QtWidgets.QPushButton(self.page_verify_button) + self.verify_stack = QtWidgets.QStackedWidget(self.installed_page) + self.verify_stack.setObjectName("verify_stack") + self.verify_button_page = QtWidgets.QWidget() + self.verify_button_page.setObjectName("verify_button_page") + self.verify_page_layout = QtWidgets.QHBoxLayout(self.verify_button_page) + self.verify_page_layout.setContentsMargins(0, 0, 0, 0) + self.verify_page_layout.setSpacing(0) + self.verify_page_layout.setObjectName("verify_page_layout") + self.verify_button = QtWidgets.QPushButton(self.verify_button_page) self.verify_button.setObjectName("verify_button") - self.layout_verify_button.addWidget(self.verify_button) - self.verify_widget.addWidget(self.page_verify_button) - self.page_verify_progress = QtWidgets.QWidget() - self.page_verify_progress.setObjectName("page_verify_progress") - self.layout_verify_progress = QtWidgets.QVBoxLayout(self.page_verify_progress) - self.layout_verify_progress.setContentsMargins(0, 0, 0, 0) - self.layout_verify_progress.setSpacing(0) - self.layout_verify_progress.setObjectName("layout_verify_progress") - self.verify_progress = QtWidgets.QProgressBar(self.page_verify_progress) + self.verify_page_layout.addWidget(self.verify_button) + self.verify_stack.addWidget(self.verify_button_page) + self.verify_progress_page = QtWidgets.QWidget() + self.verify_progress_page.setObjectName("verify_progress_page") + self.verify_progress_layout = QtWidgets.QHBoxLayout(self.verify_progress_page) + self.verify_progress_layout.setContentsMargins(0, 0, 0, 0) + self.verify_progress_layout.setSpacing(0) + self.verify_progress_layout.setObjectName("verify_progress_layout") + self.verify_progress = QtWidgets.QProgressBar(self.verify_progress_page) self.verify_progress.setProperty("value", 24) self.verify_progress.setObjectName("verify_progress") - self.layout_verify_progress.addWidget(self.verify_progress) - self.verify_widget.addWidget(self.page_verify_progress) - self.installed_layout.addWidget(self.verify_widget) + self.verify_progress_layout.addWidget(self.verify_progress) + self.verify_stack.addWidget(self.verify_progress_page) + self.installed_layout.addWidget(self.verify_stack) self.repair_button = QtWidgets.QPushButton(self.installed_page) self.repair_button.setObjectName("repair_button") self.installed_layout.addWidget(self.repair_button) self.move_stack = QtWidgets.QStackedWidget(self.installed_page) - self.move_stack.setMinimumSize(QtCore.QSize(0, 20)) self.move_stack.setObjectName("move_stack") - self.page = QtWidgets.QWidget() - self.page.setObjectName("page") - self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.page) - self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0) - self.horizontalLayout_2.setObjectName("horizontalLayout_2") - self.move_button = QtWidgets.QToolButton(self.page) + self.move_button_page = QtWidgets.QWidget() + self.move_button_page.setObjectName("move_button_page") + self.move_button_layout = QtWidgets.QHBoxLayout(self.move_button_page) + self.move_button_layout.setContentsMargins(0, 0, 0, 0) + self.move_button_layout.setSpacing(0) + self.move_button_layout.setObjectName("move_button_layout") + self.move_button = QtWidgets.QToolButton(self.move_button_page) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.move_button.sizePolicy().hasHeightForWidth()) self.move_button.setSizePolicy(sizePolicy) self.move_button.setPopupMode(QtWidgets.QToolButton.InstantPopup) + self.move_button.setToolButtonStyle(QtCore.Qt.ToolButtonTextOnly) + self.move_button.setArrowType(QtCore.Qt.DownArrow) self.move_button.setObjectName("move_button") - self.horizontalLayout_2.addWidget(self.move_button) - self.move_stack.addWidget(self.page) - self.page_2 = QtWidgets.QWidget() - self.page_2.setObjectName("page_2") - self.move_stack.addWidget(self.page_2) + self.move_button_layout.addWidget(self.move_button) + self.move_stack.addWidget(self.move_button_page) + self.move_progress_page = QtWidgets.QWidget() + self.move_progress_page.setObjectName("move_progress_page") + self.move_progress_layout = QtWidgets.QHBoxLayout(self.move_progress_page) + self.move_progress_layout.setContentsMargins(0, 0, 0, 0) + self.move_progress_layout.setSpacing(0) + self.move_progress_layout.setObjectName("move_progress_layout") + self.move_progress = QtWidgets.QProgressBar(self.move_progress_page) + self.move_progress.setProperty("value", 24) + self.move_progress.setObjectName("move_progress") + self.move_progress_layout.addWidget(self.move_progress) + self.move_stack.addWidget(self.move_progress_page) self.installed_layout.addWidget(self.move_stack) self.uninstall_button = QtWidgets.QPushButton(self.installed_page) self.uninstall_button.setStyleSheet("") @@ -159,18 +170,28 @@ class Ui_GameInfo(object): self.uninstalled_page = QtWidgets.QWidget() self.uninstalled_page.setObjectName("uninstalled_page") self.uninstalled_layout = QtWidgets.QVBoxLayout(self.uninstalled_page) + self.uninstalled_layout.setContentsMargins(0, 0, 0, 0) self.uninstalled_layout.setObjectName("uninstalled_layout") + spacerItem2 = QtWidgets.QSpacerItem(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.uninstalled_layout.addItem(spacerItem2) self.install_button = QtWidgets.QPushButton(self.uninstalled_page) self.install_button.setStyleSheet("") self.install_button.setObjectName("install_button") self.uninstalled_layout.addWidget(self.install_button) + self.import_button = QtWidgets.QPushButton(self.uninstalled_page) + self.import_button.setObjectName("import_button") + self.uninstalled_layout.addWidget(self.import_button) + spacerItem3 = QtWidgets.QSpacerItem(0, 0, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.uninstalled_layout.addItem(spacerItem3) + self.uninstalled_layout.setStretch(0, 1) + self.uninstalled_layout.setStretch(3, 1) self.game_actions_stack.addWidget(self.uninstalled_page) - self.layout_game_info_form.addWidget(self.game_actions_stack, 7, 1, 1, 1, QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop) + self.game_info_layout.addWidget(self.game_actions_stack, 7, 1, 1, 1) self.install_size = QtWidgets.QLabel(GameInfo) self.install_size.setText("error") self.install_size.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse) self.install_size.setObjectName("install_size") - self.layout_game_info_form.addWidget(self.install_size, 4, 1, 1, 1) + self.game_info_layout.addWidget(self.install_size, 4, 1, 1, 1) self.lbl_version = QtWidgets.QLabel(GameInfo) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) @@ -182,7 +203,7 @@ class Ui_GameInfo(object): font.setWeight(75) self.lbl_version.setFont(font) self.lbl_version.setObjectName("lbl_version") - self.layout_game_info_form.addWidget(self.lbl_version, 2, 0, 1, 1, QtCore.Qt.AlignRight) + self.game_info_layout.addWidget(self.lbl_version, 2, 0, 1, 1, QtCore.Qt.AlignRight) self.lbl_game_actions = QtWidgets.QLabel(GameInfo) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) @@ -194,14 +215,14 @@ class Ui_GameInfo(object): font.setWeight(75) self.lbl_game_actions.setFont(font) self.lbl_game_actions.setObjectName("lbl_game_actions") - self.layout_game_info_form.addWidget(self.lbl_game_actions, 7, 0, 1, 1, QtCore.Qt.AlignRight) + self.game_info_layout.addWidget(self.lbl_game_actions, 7, 0, 1, 1, QtCore.Qt.AlignRight) self.lbl_grade = QtWidgets.QLabel(GameInfo) font = QtGui.QFont() font.setBold(True) font.setWeight(75) self.lbl_grade.setFont(font) self.lbl_grade.setObjectName("lbl_grade") - self.layout_game_info_form.addWidget(self.lbl_grade, 3, 0, 1, 1, QtCore.Qt.AlignRight) + self.game_info_layout.addWidget(self.lbl_grade, 3, 0, 1, 1, QtCore.Qt.AlignRight) self.lbl_app_name = QtWidgets.QLabel(GameInfo) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) @@ -213,17 +234,20 @@ class Ui_GameInfo(object): font.setWeight(75) self.lbl_app_name.setFont(font) self.lbl_app_name.setObjectName("lbl_app_name") - self.layout_game_info_form.addWidget(self.lbl_app_name, 1, 0, 1, 1, QtCore.Qt.AlignRight) + self.game_info_layout.addWidget(self.lbl_app_name, 1, 0, 1, 1, QtCore.Qt.AlignRight) self.grade = QtWidgets.QLabel(GameInfo) self.grade.setText("error") self.grade.setTextInteractionFlags(QtCore.Qt.LinksAccessibleByMouse|QtCore.Qt.TextSelectableByMouse) self.grade.setObjectName("grade") - self.layout_game_info_form.addWidget(self.grade, 3, 1, 1, 1) - self.layout_game_info.addLayout(self.layout_game_info_form) + self.game_info_layout.addWidget(self.grade, 3, 1, 1, 1) + self.game_info_layout.setColumnStretch(1, 1) + self.game_info_layout.setRowStretch(8, 1) + self.layout_game_info.addLayout(self.game_info_layout) self.retranslateUi(GameInfo) self.game_actions_stack.setCurrentIndex(0) - self.verify_widget.setCurrentIndex(0) + self.verify_stack.setCurrentIndex(0) + self.move_stack.setCurrentIndex(0) def retranslateUi(self, GameInfo): _translate = QtCore.QCoreApplication.translate @@ -237,6 +261,7 @@ class Ui_GameInfo(object): self.move_button.setText(_translate("GameInfo", "Move Installation")) self.uninstall_button.setText(_translate("GameInfo", "Uninstall Game")) self.install_button.setText(_translate("GameInfo", "Install Game")) + self.import_button.setText(_translate("GameInfo", "Import Game")) self.lbl_version.setText(_translate("GameInfo", "Version")) self.lbl_game_actions.setText(_translate("GameInfo", "Actions")) self.lbl_grade.setText(_translate("GameInfo", "ProtonDB Grade")) diff --git a/rare/ui/components/tabs/games/game_info/game_info.ui b/rare/ui/components/tabs/games/game_info/game_info.ui index 20a891ac..f2792b93 100644 --- a/rare/ui/components/tabs/games/game_info/game_info.ui +++ b/rare/ui/components/tabs/games/game_info/game_info.ui @@ -6,8 +6,8 @@ 0 0 - 791 - 583 + 533 + 441 @@ -15,7 +15,7 @@ - + 6 @@ -32,14 +32,14 @@ 12 - + Qt::Horizontal - 0 - 20 + 20 + 0 @@ -161,14 +161,14 @@ - + Qt::Vertical - 20 - 0 + 0 + 20 @@ -180,7 +180,7 @@ - + @@ -188,6 +188,12 @@ 0 + + + 250 + 16777215 + + 0 @@ -206,12 +212,12 @@ 0 - + 0 - - + + 0 @@ -236,8 +242,8 @@ - - + + 0 @@ -273,14 +279,14 @@ - - - 0 - 20 - + + 0 - - + + + + 0 + 0 @@ -307,11 +313,42 @@ QToolButton::InstantPopup + + Qt::ToolButtonTextOnly + + + Qt::DownArrow + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 24 + - @@ -327,7 +364,26 @@ - + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::Vertical + + + @@ -338,6 +394,26 @@ + + + + Import Game + + + + + + + Qt::Vertical + + + + 0 + 0 + + + +