From a2bf8f644dcbae60a275c0a090d0ecda949e6f6c Mon Sep 17 00:00:00 2001 From: loathingKernel <142770+loathingKernel@users.noreply.github.com> Date: Wed, 10 Dec 2025 16:53:42 +0200 Subject: [PATCH 1/6] RareGame: default to keeping the config or the overlay registry keys on non-windows --- rare/models/game.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/rare/models/game.py b/rare/models/game.py index 2ebe86d64..549d78476 100644 --- a/rare/models/game.py +++ b/rare/models/game.py @@ -583,7 +583,11 @@ def repair(self, repair_and_update) -> bool: def uninstall(self) -> bool: if not self.is_idle: return False - self.signals.game.uninstall.emit(UninstallOptionsModel(app_name=self.app_name, keep_config=self.sdl_name is not None)) + self.signals.game.uninstall.emit( + UninstallOptionsModel( + app_name=self.app_name, + keep_config=self.sdl_name is not None or platform.system() not in {"Windows"}, + )) return True def launch( @@ -760,5 +764,9 @@ def install(self) -> bool: def uninstall(self) -> bool: if not self.is_idle or not self.is_installed: return False - self.signals.game.uninstall.emit(UninstallOptionsModel(app_name=self.app_name)) + self.signals.game.uninstall.emit( + UninstallOptionsModel( + app_name=self.app_name, + keep_overlay_keys=platform.system() not in {"Windows"}, + )) return True From 8cfdc6bbd33912397bf803e47a79ee62c57a372f Mon Sep 17 00:00:00 2001 From: loathingKernel <142770+loathingKernel@users.noreply.github.com> Date: Wed, 10 Dec 2025 18:59:04 +0200 Subject: [PATCH 2/6] github: update issue template --- .github/ISSUE_TEMPLATE/bug_report.md | 24 ++++++++++++++--------- .github/ISSUE_TEMPLATE/feature_request.md | 12 ++++++++---- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index bf6078952..bbecaa1b5 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -8,41 +8,47 @@ assignees: '' --- **Describe the bug** - + -**To Reproduce** - +**Steps to Reproduce** + 1. Go to '...' 2. Click on '....' 3. Scroll down to '....' 4. See error **Expected behavior** - + **Screenshots** - + **System information** - + - Operating system: [e.g. Manjaro/Windows 10] - Version: [e.g. 1.6.2] - Installation method: [e.g. pip/msi/AppImage] - Python version: (if installed through `pip` or your package manager) **Additional context** - + **Error message** - + | OS | Path | |---------|----------------------------------------------------------| | Windows | `C:\Users\\AppData\Local\Rare\Rare\cache\logs` | diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index fec3c8c7a..829134c56 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -8,17 +8,21 @@ assignees: '' --- **Is your feature request related to a problem? Please describe.** - + **Describe the solution you'd like** - + **Describe alternatives you've considered** - + **Additional context** - + From 3602e6df90051d8a3e059a96edd5579319911e72 Mon Sep 17 00:00:00 2001 From: loathingKernel <142770+loathingKernel@users.noreply.github.com> Date: Thu, 11 Dec 2025 21:11:04 +0200 Subject: [PATCH 3/6] IndicatorEdit: set layout constraints --- rare/widgets/indicator_edit.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/rare/widgets/indicator_edit.py b/rare/widgets/indicator_edit.py index d7b14897a..e5eb998fa 100644 --- a/rare/widgets/indicator_edit.py +++ b/rare/widgets/indicator_edit.py @@ -143,6 +143,9 @@ def __init__( layout = QHBoxLayout(self) layout.setObjectName(f"{self.objectName()}Layout") layout.setContentsMargins(0, 0, 0, 0) + layout.setSizeConstraints( + QHBoxLayout.SizeConstraint.SetDefaultConstraint, QHBoxLayout.SizeConstraint.SetFixedSize + ) # Add line_edit self.line_edit = QLineEdit(self) self.line_edit.setObjectName(f"{type(self).__name__}Edit") From 5b3f814f15069b817b81928a07a8d4d9378c8497 Mon Sep 17 00:00:00 2001 From: loathingKernel <142770+loathingKernel@users.noreply.github.com> Date: Thu, 11 Dec 2025 21:27:51 +0200 Subject: [PATCH 4/6] LgndrCore: add overrides for auth_code, auth_ex_token and auth_import methods to raise an exception when logging an error --- rare/lgndr/core.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/rare/lgndr/core.py b/rare/lgndr/core.py index f17b8f2ec..efa61b3cb 100644 --- a/rare/lgndr/core.py +++ b/rare/lgndr/core.py @@ -58,6 +58,39 @@ def default_platform(self) -> str: usr_platform = self.lgd.config.get("Legendary", "default_platform", fallback=os_default) return usr_platform if usr_platform in ("Windows", "Win32", "Mac") else os_default + def auth_code(self, code) -> bool: + handler = LgndrLogHandler(logging.ERROR) + self.log.addHandler(handler) + try: + ret = super().auth_code(code) + except LgndrException as ret: + raise ret + finally: + self.log.removeHandler(handler) + return ret + + def auth_ex_token(self, code) -> bool: + handler = LgndrLogHandler(logging.ERROR) + self.log.addHandler(handler) + try: + ret = super().auth_ex_token(code) + except LgndrException as ret: + raise ret + finally: + self.log.removeHandler(handler) + return ret + + def auth_import(self) -> bool: + handler = LgndrLogHandler(logging.ERROR) + self.log.addHandler(handler) + try: + ret = super().auth_import() + except LgndrException as ret: + raise ret + finally: + self.log.removeHandler(handler) + return ret + def update_check_enabled(self): return True From 060d7c4ab9c8de0e586328e60162094d1d2836ac Mon Sep 17 00:00:00 2001 From: loathingKernel <142770+loathingKernel@users.noreply.github.com> Date: Thu, 11 Dec 2025 21:28:26 +0200 Subject: [PATCH 5/6] chore: update some monospace font code --- rare/commands/launcher/console_dialog.py | 2 +- rare/components/dialogs/move.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/rare/commands/launcher/console_dialog.py b/rare/commands/launcher/console_dialog.py index 4e2e098c3..5d1e33852 100644 --- a/rare/commands/launcher/console_dialog.py +++ b/rare/commands/launcher/console_dialog.py @@ -165,7 +165,7 @@ class ConsoleEdit(QPlainTextEdit): def __init__(self, parent=None): super(ConsoleEdit, self).__init__(parent=parent) self.setReadOnly(True) - font = QFont("Monospace") + font = self.font() font.setStyleHint(QFont.StyleHint.Monospace) self.setFont(font) diff --git a/rare/components/dialogs/move.py b/rare/components/dialogs/move.py index f8ad7f52a..c4797abd7 100644 --- a/rare/components/dialogs/move.py +++ b/rare/components/dialogs/move.py @@ -2,7 +2,7 @@ from typing import Optional, Tuple, Union from PySide6.QtCore import QSignalBlocker, QThreadPool, Signal, Slot -from PySide6.QtGui import QShowEvent, Qt +from PySide6.QtGui import QFont, QShowEvent, Qt from PySide6.QtWidgets import QFileDialog, QFormLayout, QLabel, QWidget from rare.models.game import RareGame @@ -62,7 +62,7 @@ def __init__(self, rcore: RareCore, rgame: RareGame, parent=None): self.full_path_info = ElideLabel(parent=self) font = self.font() - font.setItalic(True) + font.setStyleHint(QFont.StyleHint.Monospace) self.full_path_info.setFont(font) self.ui.main_layout.setWidget( self.ui.main_layout.getWidgetPosition(self.ui.full_path_label)[0], From e4ea0cc1307df202f484bd8561a1afcdb20f7884 Mon Sep 17 00:00:00 2001 From: loathingKernel <142770+loathingKernel@users.noreply.github.com> Date: Thu, 11 Dec 2025 21:29:46 +0200 Subject: [PATCH 6/6] LoginDialog: update to handle exceptions when errors are logged Also update the forms to fix the dialog being stretched when the EGL manifest path was too long --- rare/components/dialogs/login/__init__.py | 55 ++--- .../components/dialogs/login/browser_login.py | 41 ++-- rare/components/dialogs/login/import_login.py | 22 +- .../components/dialogs/login/browser_login.py | 65 +++--- .../components/dialogs/login/browser_login.ui | 191 +++++++++--------- .../components/dialogs/login/import_login.py | 90 +++------ .../components/dialogs/login/import_login.ui | 170 +++++++--------- .../components/dialogs/login/landing_page.py | 52 ++--- .../components/dialogs/login/landing_page.ui | 148 ++++++++------ .../components/dialogs/login/login_dialog.py | 22 +- .../components/dialogs/login/login_dialog.ui | 36 +++- 11 files changed, 444 insertions(+), 448 deletions(-) diff --git a/rare/components/dialogs/login/__init__.py b/rare/components/dialogs/login/__init__.py index 80baf902c..c5db7c3ef 100644 --- a/rare/components/dialogs/login/__init__.py +++ b/rare/components/dialogs/login/__init__.py @@ -45,40 +45,44 @@ def __init__(self, args: Namespace, core: LegendaryCore, parent=None): self.core = core self.login_stack = SlidingStackedWidget(parent=self) - self.login_stack.setMinimumWidth(480) - self.ui.login_stack_layout.addWidget(self.login_stack) + self.ui.main_layout.insertWidget(3, self.login_stack, stretch=1) self.landing_page = LandingPage(self.login_stack) - self.login_stack.insertWidget(0, self.landing_page) + self.landing_index = self.login_stack.insertWidget(0, self.landing_page) self.browser_page = BrowserLogin(self.core, self.login_stack) - self.login_stack.insertWidget(1, self.browser_page) + self.browser_index = self.login_stack.insertWidget(1, self.browser_page) self.browser_page.success.connect(self.login_successful) self.browser_page.isValid.connect(lambda x: self.ui.next_button.setEnabled(x)) self.import_page = ImportLogin(self.core, self.login_stack) - self.login_stack.insertWidget(2, self.import_page) + self.import_index = self.login_stack.insertWidget(2, self.import_page) self.import_page.success.connect(self.login_successful) self.import_page.isValid.connect(lambda x: self.ui.next_button.setEnabled(x)) - # # NOTE: The real problem is that the BrowserLogin page has a huge QLabel with word-wrapping enabled. - # # That forces the whole form to vertically expand instead of horizontally. Since the form is not shown - # # on the first page, the internal Qt calculation for the size of that form calculates it by expanding it - # # vertically. Once the form becomes visible, the correct calculation takes place and that is why the - # # dialog reduces in height. To avoid that, calculate the bounding size of all forms and set it as the - # # minumum size - # self.login_stack.setMinimumSize( - # self.landing_page.sizeHint().expandedTo( - # self.browser_page.sizeHint().expandedTo(self.import_page.sizeHint()) - # ) - # ) - - self.login_stack.setFixedHeight( - max( - self.landing_page.heightForWidth(self.login_stack.minimumWidth()), - self.browser_page.heightForWidth(self.login_stack.minimumWidth()), - self.import_page.heightForWidth(self.login_stack.minimumWidth()), - ) - ) + self.info_message = { + self.landing_index: self.tr( + "Select log-in method." + ), + self.browser_index: self.tr( + "Click the Open Browser button to open the " + "login page in your web browser or copy the link and paste it " + "in any web browser. After logging in using the browser, copy " + "the text in the quotes after authorizationCode " + "in the same line into the empty input above." + "

DO NOT SHARE THE INFORMATION IN THE BROWSER PAGE WITH " + "ANYONE IN ANY FORM (TEXT OR SCREENSHOT)!
" + ), + self.import_index: self.tr( + "Select the Wine prefix where Epic Games Launcher is installed. " + "You will get logged out from EGL in the process." + ), + } + self.ui.info_label.setText(self.info_message[self.landing_index]) + + self.login_stack.setMinimumWidth(640) + self.login_stack.setMinimumHeight(180) + self.ui.info_label.setMinimumWidth(640) + self.ui.info_label.setMinimumHeight(40) self.ui.next_button.setEnabled(False) self.ui.back_button.setEnabled(False) @@ -108,12 +112,14 @@ def __init__(self, args: Namespace, core: LegendaryCore, parent=None): @Slot() def browser_radio_clicked(self): self.login_stack.slideInWidget(self.browser_page) + self.ui.info_label.setText(self.info_message[self.browser_index]) self.ui.back_button.setEnabled(True) self.ui.next_button.setEnabled(False) @Slot() def import_radio_clicked(self): self.login_stack.slideInWidget(self.import_page) + self.ui.info_label.setText(self.info_message[self.import_index]) self.ui.back_button.setEnabled(True) self.ui.next_button.setEnabled(self.import_page.is_valid()) @@ -121,6 +127,7 @@ def import_radio_clicked(self): def back_clicked(self): self.ui.back_button.setEnabled(False) self.ui.next_button.setEnabled(True) + self.ui.info_label.setText(self.info_message[self.landing_index]) self.login_stack.slideInWidget(self.landing_page) @Slot() diff --git a/rare/components/dialogs/login/browser_login.py b/rare/components/dialogs/login/browser_login.py index 754166755..568d3f658 100644 --- a/rare/components/dialogs/login/browser_login.py +++ b/rare/components/dialogs/login/browser_login.py @@ -8,6 +8,7 @@ from PySide6.QtWidgets import QApplication, QFormLayout, QFrame, QLineEdit from rare.lgndr.core import LegendaryCore +from rare.lgndr.glue.exception import LgndrException from rare.ui.components.dialogs.login.browser_login import Ui_BrowserLogin from rare.utils.misc import qta_icon from rare.utils.paths import get_rare_executable @@ -29,28 +30,30 @@ def __init__(self, core: LegendaryCore, parent=None): self.core = core self.login_url = self.core.egs.get_auth_url() - self.sid_edit = IndicatorLineEdit( + self.auth_edit = IndicatorLineEdit( placeholder=self.tr("Insert authorizationCode here"), edit_func=self.sid_edit_callback, parent=self ) - self.sid_edit.line_edit.setEchoMode(QLineEdit.EchoMode.Password) + self.auth_edit.line_edit.setEchoMode(QLineEdit.EchoMode.Password) self.ui.link_text.setText(self.login_url) self.ui.copy_button.setIcon(qta_icon("mdi.content-copy", "fa5.copy")) self.ui.copy_button.clicked.connect(self.copy_link) self.ui.form_layout.setWidget( - self.ui.form_layout.getWidgetPosition(self.ui.sid_label)[0], QFormLayout.ItemRole.FieldRole, self.sid_edit + self.ui.form_layout.getWidgetPosition(self.ui.sid_label)[0], + QFormLayout.ItemRole.FieldRole, + self.auth_edit ) self.ui.open_button.clicked.connect(self.open_browser) - self.sid_edit.textChanged.connect(lambda _: self.isValid.emit(self.is_valid())) + self.auth_edit.textChanged.connect(lambda _: self.isValid.emit(self.is_valid())) @Slot() def copy_link(self): clipboard = QApplication.instance().clipboard() clipboard.setText(self.login_url) - self.ui.status_label.setText(self.tr("Copied to clipboard")) + self.ui.status_field.setText(self.tr("Copied to clipboard")) def is_valid(self): - return self.sid_edit.is_valid + return self.auth_edit.is_valid @staticmethod def sid_edit_callback(text) -> Tuple[bool, str, int]: @@ -68,17 +71,17 @@ def sid_edit_callback(text) -> Tuple[bool, str, int]: return False, text, IndicatorReasonsCommon.VALID def do_login(self): - self.ui.status_label.setText(self.tr("Logging in...")) - auth_code = self.sid_edit.text() + self.ui.status_field.setText(self.tr("Logging in...")) + auth_code = self.auth_edit.text() try: if self.core.auth_code(auth_code): self.logger.info("Successfully logged in as %s", self.core.lgd.userdata["displayName"]) self.success.emit() - else: - self.ui.status_label.setText(self.tr("Login failed.")) - self.logger.warning("Failed to login through browser") except Exception as e: - self.logger.warning(e) + msg = e.message if isinstance(e, LgndrException) else str(e) + self.ui.status_field.setText(self.tr("Login failed: {}").format(msg)) + self.logger.error("Failed to login through browser") + self.logger.error(e) @Slot() def open_browser(self): @@ -97,8 +100,14 @@ def open_browser(self): proc.deleteLater() if out: - self.core.auth_ex_token(out) - self.logger.info("Successfully logged in as %s", {self.core.lgd.userdata["displayName"]}) - self.success.emit() + try: + self.core.auth_ex_token(out) + self.logger.info("Successfully logged in as %s", {self.core.lgd.userdata["displayName"]}) + self.success.emit() + except Exception as e: + msg = e.message if isinstance(e, LgndrException) else str(e) + self.ui.status_field.setText(self.tr("Login failed: {}").format(msg)) + self.logger.error("Failed to login through browser") + self.logger.error(e) else: - self.logger.warning("Failed to login through browser.") + self.logger.error("Failed to login through browser") diff --git a/rare/components/dialogs/login/import_login.py b/rare/components/dialogs/login/import_login.py index 3a76977de..00294841b 100644 --- a/rare/components/dialogs/login/import_login.py +++ b/rare/components/dialogs/login/import_login.py @@ -8,6 +8,7 @@ from PySide6.QtWidgets import QFileDialog, QFrame from rare.lgndr.core import LegendaryCore +from rare.lgndr.glue.exception import LgndrException from rare.ui.components.dialogs.login.import_login import Ui_ImportLogin @@ -40,9 +41,9 @@ def __init__(self, core: LegendaryCore, parent=None): if not self.core.egl.appdata_path and os.path.exists(self.egl_appdata): self.core.egl.appdata_path = self.egl_appdata if not self.core.egl.appdata_path: - self.ui.status_label.setText(self.text_egl_notfound) + self.ui.status_field.setText(self.text_egl_notfound) else: - self.ui.status_label.setText(self.text_egl_found) + self.ui.status_field.setText(self.text_egl_found) self.found = True self.ui.prefix_combo.setCurrentText(self.egl_appdata) else: @@ -52,9 +53,9 @@ def __init__(self, core: LegendaryCore, parent=None): prefixes = self.get_wine_prefixes() if len(prefixes): self.ui.prefix_combo.addItems(prefixes) - self.ui.status_label.setText(self.tr("Select the Wine prefix you want to import.")) + self.ui.status_field.setText(self.tr("Select the Wine prefix you want to import.")) else: - self.ui.status_label.setText(self.text_egl_notfound) + self.ui.status_field.setText(self.text_egl_notfound) self.ui.prefix_button.clicked.connect(self.prefix_path) self.ui.prefix_combo.editTextChanged.connect(lambda _: self.isValid.emit(self.is_valid())) @@ -90,13 +91,13 @@ def is_valid(self) -> bool: os.path.join(wine_folders["Local AppData"], "EpicGamesLauncher", "Saved", "Config", "Windows") ) if path_exists := os.path.exists(self.egl_appdata): - self.ui.status_label.setText(self.text_egl_found) + self.ui.status_field.setText(self.text_egl_found) return path_exists except KeyError: return False def do_login(self): - self.ui.status_label.setText(self.tr("Loading...")) + self.ui.status_field.setText(self.tr("Loading...")) if os.name != "nt": self.logger.info("Using EGL appdata path at %s", {self.egl_appdata}) self.core.egl.appdata_path = self.egl_appdata @@ -104,9 +105,8 @@ def do_login(self): if self.core.auth_import(): self.logger.info("Logged in as %s", {self.core.lgd.userdata["displayName"]}) self.success.emit() - else: - self.ui.status_label.setText(self.tr("Login failed.")) - self.logger.warning("Failed to import existing session.") except Exception as e: - self.ui.status_label.setText(self.tr("Login failed. {}").format(str(e))) - self.logger.warning("Failed to import existing session: %s", e) + msg = e.message if isinstance(e, LgndrException) else str(e) + self.ui.status_field.setText(self.tr("Login failed: {}").format(msg)) + self.logger.warning("Failed to import existing session") + self.logger.error(e) diff --git a/rare/ui/components/dialogs/login/browser_login.py b/rare/ui/components/dialogs/login/browser_login.py index 0d4b9e255..c0ca47942 100644 --- a/rare/ui/components/dialogs/login/browser_login.py +++ b/rare/ui/components/dialogs/login/browser_login.py @@ -3,7 +3,7 @@ ################################################################################ ## Form generated from reading UI file 'browser_login.ui' ## -## Created by: Qt User Interface Compiler version 6.9.1 +## Created by: Qt User Interface Compiler version 6.10.1 ## ## WARNING! All changes made in this file will be lost when recompiling UI file! ################################################################################ @@ -12,14 +12,15 @@ from PySide6.QtGui import QFont from PySide6.QtWidgets import ( QFormLayout, + QFrame, QHBoxLayout, QLabel, QLayout, QLineEdit, QPushButton, QSizePolicy, - QSpacerItem, QVBoxLayout, + QWidget, ) @@ -27,7 +28,7 @@ class Ui_BrowserLogin(object): def setupUi(self, BrowserLogin): if not BrowserLogin.objectName(): BrowserLogin.setObjectName(u"BrowserLogin") - BrowserLogin.resize(320, 243) + BrowserLogin.resize(310, 237) BrowserLogin.setWindowTitle(u"BrowserLogin") self.main_layout = QVBoxLayout(BrowserLogin) self.main_layout.setObjectName(u"main_layout") @@ -42,22 +43,23 @@ def setupUi(self, BrowserLogin): font.setBold(True) self.title_label.setFont(font) - self.main_layout.addWidget(self.title_label) + self.main_layout.addWidget(self.title_label, 0, Qt.AlignmentFlag.AlignTop) - self.form_layout = QFormLayout() + self.form_widget = QWidget(BrowserLogin) + self.form_widget.setObjectName(u"form_widget") + self.form_layout = QFormLayout(self.form_widget) self.form_layout.setObjectName(u"form_layout") - self.form_layout.setSizeConstraint(QLayout.SetFixedSize) - self.form_layout.setFieldGrowthPolicy(QFormLayout.AllNonFixedFieldsGrow) - self.form_layout.setLabelAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) - self.form_layout.setFormAlignment(Qt.AlignLeading|Qt.AlignLeft|Qt.AlignVCenter) - self.open_button = QPushButton(BrowserLogin) + self.form_layout.setLabelAlignment(Qt.AlignmentFlag.AlignRight|Qt.AlignmentFlag.AlignTrailing|Qt.AlignmentFlag.AlignVCenter) + self.form_layout.setContentsMargins(0, 0, 0, 0) + self.open_button = QPushButton(self.form_widget) self.open_button.setObjectName(u"open_button") self.form_layout.setWidget(0, QFormLayout.ItemRole.LabelRole, self.open_button) self.link_layout = QHBoxLayout() self.link_layout.setObjectName(u"link_layout") - self.link_text = QLineEdit(BrowserLogin) + self.link_layout.setSizeConstraint(QLayout.SizeConstraint.SetFixedSize) + self.link_text = QLineEdit(self.form_widget) self.link_text.setObjectName(u"link_text") self.link_text.setText(u"") self.link_text.setReadOnly(True) @@ -65,7 +67,7 @@ def setupUi(self, BrowserLogin): self.link_layout.addWidget(self.link_text) - self.copy_button = QPushButton(BrowserLogin) + self.copy_button = QPushButton(self.form_widget) self.copy_button.setObjectName(u"copy_button") self.copy_button.setText(u"") @@ -75,40 +77,31 @@ def setupUi(self, BrowserLogin): self.form_layout.setLayout(0, QFormLayout.ItemRole.FieldRole, self.link_layout) - self.sid_label = QLabel(BrowserLogin) + self.sid_label = QLabel(self.form_widget) self.sid_label.setObjectName(u"sid_label") self.sid_label.setText(u"authorizationCode") - self.sid_label.setAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) + self.sid_label.setAlignment(Qt.AlignmentFlag.AlignRight|Qt.AlignmentFlag.AlignTrailing|Qt.AlignmentFlag.AlignVCenter) self.form_layout.setWidget(1, QFormLayout.ItemRole.LabelRole, self.sid_label) - self.status_label = QLabel(BrowserLogin) - self.status_label.setObjectName(u"status_label") - font1 = QFont() - font1.setItalic(True) - self.status_label.setFont(font1) - self.status_label.setText(u"") - - self.form_layout.setWidget(2, QFormLayout.ItemRole.FieldRole, self.status_label) + self.status_field = QLabel(self.form_widget) + self.status_field.setObjectName(u"status_field") + self.status_field.setFrameShape(QFrame.Shape.StyledPanel) + self.status_field.setFrameShadow(QFrame.Shadow.Sunken) + self.status_field.setText(u"") + self.status_field.setWordWrap(True) + self.form_layout.setWidget(2, QFormLayout.ItemRole.FieldRole, self.status_field) - self.main_layout.addLayout(self.form_layout) - - self.vscaper = QSpacerItem(20, 10, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding) + self.status_label = QLabel(self.form_widget) + self.status_label.setObjectName(u"status_label") - self.main_layout.addItem(self.vscaper) + self.form_layout.setWidget(2, QFormLayout.ItemRole.LabelRole, self.status_label) - self.info_label = QLabel(BrowserLogin) - self.info_label.setObjectName(u"info_label") - sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Preferred) - sizePolicy1.setHorizontalStretch(0) - sizePolicy1.setVerticalStretch(0) - sizePolicy1.setHeightForWidth(self.info_label.sizePolicy().hasHeightForWidth()) - self.info_label.setSizePolicy(sizePolicy1) - self.info_label.setWordWrap(True) - self.main_layout.addWidget(self.info_label) + self.main_layout.addWidget(self.form_widget, 0, Qt.AlignmentFlag.AlignTop) + self.main_layout.setStretch(1, 1) self.retranslateUi(BrowserLogin) # setupUi @@ -116,7 +109,7 @@ def setupUi(self, BrowserLogin): def retranslateUi(self, BrowserLogin): self.title_label.setText(QCoreApplication.translate("BrowserLogin", u"Login through browser", None)) self.open_button.setText(QCoreApplication.translate("BrowserLogin", u"Open Browser", None)) - self.info_label.setText(QCoreApplication.translate("BrowserLogin", u"Click the Open Browser button to open the login page in your web browser or copy the link and paste it in any web browser. After logging in using the browser, copy the text in the quotes after authorizationCode in the same line into the empty input above.

DO NOT SHARE THE INFORMATION IN THE BROWSER PAGE WITH ANYONE IN ANY FORM (TEXT OR SCREENSHOT)!
", None)) + self.status_label.setText(QCoreApplication.translate("BrowserLogin", u"Status", None)) pass # retranslateUi diff --git a/rare/ui/components/dialogs/login/browser_login.ui b/rare/ui/components/dialogs/login/browser_login.ui index 8331b84cb..a5f9efcce 100644 --- a/rare/ui/components/dialogs/login/browser_login.ui +++ b/rare/ui/components/dialogs/login/browser_login.ui @@ -6,15 +6,15 @@ 0 0 - 320 - 243 + 310 + 237 BrowserLogin - - + + @@ -24,7 +24,6 @@ - 75 true @@ -33,102 +32,92 @@ - - - - QLayout::SetFixedSize - - - QFormLayout::AllNonFixedFieldsGrow - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - Open Browser - - - - - - - - - - - - true - - - - - - - - - - - - - - - - - - - authorizationCode - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - true - - - - - - - - - - - - - Qt::Vertical - - - - 20 - 10 - - - - - - - - - 0 - 0 - - - - <i>Click the <strong>Open Browser</strong> button to open the login page in your web browser or copy the link and paste it in any web browser. After logging in using the browser, copy the text in the quotes after </i><code><b>authorizationCode</b></code><i> in the same line into the empty input above.<br><br><strong>DO NOT SHARE THE INFORMATION IN THE BROWSER PAGE WITH ANYONE IN ANY FORM (TEXT OR SCREENSHOT)!</strong></i> - - - true - + + + + + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Open Browser + + + + + + + QLayout::SizeConstraint::SetFixedSize + + + + + + + + true + + + + + + + + + + + + + + + + + + + authorizationCode + + + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter + + + + + + + QFrame::Shape::StyledPanel + + + QFrame::Shadow::Sunken + + + + + + true + + + + + + + Status + + + + diff --git a/rare/ui/components/dialogs/login/import_login.py b/rare/ui/components/dialogs/login/import_login.py index aad9838ed..ae1e74706 100644 --- a/rare/ui/components/dialogs/login/import_login.py +++ b/rare/ui/components/dialogs/login/import_login.py @@ -3,41 +3,29 @@ ################################################################################ ## Form generated from reading UI file 'import_login.ui' ## -## Created by: Qt User Interface Compiler version 6.9.1 +## Created by: Qt User Interface Compiler version 6.10.1 ## ## WARNING! All changes made in this file will be lost when recompiling UI file! ################################################################################ from PySide6.QtCore import QCoreApplication, Qt from PySide6.QtGui import QFont -from PySide6.QtWidgets import ( - QComboBox, - QFormLayout, - QHBoxLayout, - QLabel, - QLayout, - QPushButton, - QSizePolicy, - QSpacerItem, - QVBoxLayout, -) +from PySide6.QtWidgets import QComboBox, QFormLayout, QFrame, QHBoxLayout, QLabel, QPushButton, QSizePolicy, QVBoxLayout, QWidget class Ui_ImportLogin(object): def setupUi(self, ImportLogin): if not ImportLogin.objectName(): ImportLogin.setObjectName(u"ImportLogin") - ImportLogin.resize(256, 143) - sizePolicy = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(ImportLogin.sizePolicy().hasHeightForWidth()) - ImportLogin.setSizePolicy(sizePolicy) + ImportLogin.resize(256, 128) ImportLogin.setWindowTitle(u"ImportLogin") self.main_layout = QVBoxLayout(ImportLogin) self.main_layout.setObjectName(u"main_layout") self.title_label = QLabel(ImportLogin) self.title_label.setObjectName(u"title_label") + sizePolicy = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.title_label.sizePolicy().hasHeightForWidth()) self.title_label.setSizePolicy(sizePolicy) font = QFont() @@ -46,26 +34,28 @@ def setupUi(self, ImportLogin): self.main_layout.addWidget(self.title_label) - self.form_layout = QFormLayout() + self.form_widget = QWidget(ImportLogin) + self.form_widget.setObjectName(u"form_widget") + self.form_layout = QFormLayout(self.form_widget) self.form_layout.setObjectName(u"form_layout") - self.form_layout.setSizeConstraint(QLayout.SetFixedSize) - self.form_layout.setFieldGrowthPolicy(QFormLayout.AllNonFixedFieldsGrow) - self.form_layout.setLabelAlignment(Qt.AlignRight|Qt.AlignTrailing|Qt.AlignVCenter) - self.form_layout.setFormAlignment(Qt.AlignLeading|Qt.AlignLeft|Qt.AlignVCenter) + self.form_layout.setLabelAlignment(Qt.AlignmentFlag.AlignRight|Qt.AlignmentFlag.AlignTrailing|Qt.AlignmentFlag.AlignVCenter) + self.form_layout.setContentsMargins(0, 0, 0, 0) + self.prefix_label = QLabel(self.form_widget) + self.prefix_label.setObjectName(u"prefix_label") + + self.form_layout.setWidget(0, QFormLayout.ItemRole.LabelRole, self.prefix_label) + self.prefix_layout = QHBoxLayout() self.prefix_layout.setObjectName(u"prefix_layout") - self.prefix_combo = QComboBox(ImportLogin) + self.prefix_combo = QComboBox(self.form_widget) self.prefix_combo.setObjectName(u"prefix_combo") - sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed) - sizePolicy1.setHorizontalStretch(0) - sizePolicy1.setVerticalStretch(0) - sizePolicy1.setHeightForWidth(self.prefix_combo.sizePolicy().hasHeightForWidth()) - self.prefix_combo.setSizePolicy(sizePolicy1) self.prefix_combo.setEditable(True) + self.prefix_combo.setSizeAdjustPolicy(QComboBox.SizeAdjustPolicy.AdjustToMinimumContentsLengthWithIcon) + self.prefix_combo.setFrame(True) self.prefix_layout.addWidget(self.prefix_combo) - self.prefix_button = QPushButton(ImportLogin) + self.prefix_button = QPushButton(self.form_widget) self.prefix_button.setObjectName(u"prefix_button") self.prefix_layout.addWidget(self.prefix_button) @@ -74,47 +64,33 @@ def setupUi(self, ImportLogin): self.form_layout.setLayout(0, QFormLayout.ItemRole.FieldRole, self.prefix_layout) - self.prefix_label = QLabel(ImportLogin) - self.prefix_label.setObjectName(u"prefix_label") + self.status_field = QLabel(self.form_widget) + self.status_field.setObjectName(u"status_field") + self.status_field.setFrameShape(QFrame.Shape.StyledPanel) + self.status_field.setFrameShadow(QFrame.Shadow.Sunken) + self.status_field.setText(u"") + self.status_field.setWordWrap(True) - self.form_layout.setWidget(0, QFormLayout.ItemRole.LabelRole, self.prefix_label) + self.form_layout.setWidget(1, QFormLayout.ItemRole.FieldRole, self.status_field) - self.status_label = QLabel(ImportLogin) + self.status_label = QLabel(self.form_widget) self.status_label.setObjectName(u"status_label") - font1 = QFont() - font1.setItalic(True) - self.status_label.setFont(font1) - self.status_label.setText(u"") - - self.form_layout.setWidget(1, QFormLayout.ItemRole.FieldRole, self.status_label) - - self.main_layout.addLayout(self.form_layout) + self.form_layout.setWidget(1, QFormLayout.ItemRole.LabelRole, self.status_label) - self.vspacer = QSpacerItem(20, 10, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding) - self.main_layout.addItem(self.vspacer) - - self.info_label = QLabel(ImportLogin) - self.info_label.setObjectName(u"info_label") - sizePolicy2 = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Preferred) - sizePolicy2.setHorizontalStretch(0) - sizePolicy2.setVerticalStretch(0) - sizePolicy2.setHeightForWidth(self.info_label.sizePolicy().hasHeightForWidth()) - self.info_label.setSizePolicy(sizePolicy2) - self.info_label.setWordWrap(True) - - self.main_layout.addWidget(self.info_label) + self.main_layout.addWidget(self.form_widget, 0, Qt.AlignmentFlag.AlignTop) + self.main_layout.setStretch(1, 1) self.retranslateUi(ImportLogin) # setupUi def retranslateUi(self, ImportLogin): self.title_label.setText(QCoreApplication.translate("ImportLogin", u"Import existing session from EGL", None)) - self.prefix_button.setText(QCoreApplication.translate("ImportLogin", u"Browse...", None)) self.prefix_label.setText(QCoreApplication.translate("ImportLogin", u"Select prefix", None)) - self.info_label.setText(QCoreApplication.translate("ImportLogin", u"Please select the Wine prefix where Epic Games Launcher is installed. You will get logged out from EGL in the process.", None)) + self.prefix_button.setText(QCoreApplication.translate("ImportLogin", u"Browse...", None)) + self.status_label.setText(QCoreApplication.translate("ImportLogin", u"Status", None)) pass # retranslateUi diff --git a/rare/ui/components/dialogs/login/import_login.ui b/rare/ui/components/dialogs/login/import_login.ui index f6a6f3c32..147e4464f 100644 --- a/rare/ui/components/dialogs/login/import_login.ui +++ b/rare/ui/components/dialogs/login/import_login.ui @@ -7,19 +7,13 @@ 0 0 256 - 143 + 128 - - - 0 - 0 - - ImportLogin - + @@ -30,7 +24,6 @@ - 75 true @@ -39,92 +32,79 @@ - - - - QLayout::SetFixedSize - - - QFormLayout::AllNonFixedFieldsGrow - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - true - - - - - - - Browse... - - - - - - - - - Select prefix - - - - - - - - true - - - - - - - - - - - - - Qt::Vertical - - - - 20 - 10 - - - - - - - - - 0 - 0 - - - - <i>Please select the Wine prefix where Epic Games Launcher is installed. You will get logged out from EGL in the process.</i> - - - true - + + + + + Qt::AlignmentFlag::AlignRight|Qt::AlignmentFlag::AlignTrailing|Qt::AlignmentFlag::AlignVCenter + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Select prefix + + + + + + + + + true + + + QComboBox::SizeAdjustPolicy::AdjustToMinimumContentsLengthWithIcon + + + true + + + + + + + Browse... + + + + + + + + + QFrame::Shape::StyledPanel + + + QFrame::Shadow::Sunken + + + + + + true + + + + + + + Status + + + + diff --git a/rare/ui/components/dialogs/login/landing_page.py b/rare/ui/components/dialogs/login/landing_page.py index 2158d0086..9099a2a6e 100644 --- a/rare/ui/components/dialogs/login/landing_page.py +++ b/rare/ui/components/dialogs/login/landing_page.py @@ -3,43 +3,46 @@ ################################################################################ ## Form generated from reading UI file 'landing_page.ui' ## -## Created by: Qt User Interface Compiler version 6.9.1 +## Created by: Qt User Interface Compiler version 6.10.1 ## ## WARNING! All changes made in this file will be lost when recompiling UI file! ################################################################################ -from PySide6.QtCore import QCoreApplication, Qt +from PySide6.QtCore import QCoreApplication, QSize from PySide6.QtGui import QFont -from PySide6.QtWidgets import QFormLayout, QLabel, QRadioButton, QSizePolicy +from PySide6.QtWidgets import QFormLayout, QLabel, QRadioButton, QSizePolicy, QVBoxLayout, QWidget class Ui_LandingPage(object): def setupUi(self, LandingPage): if not LandingPage.objectName(): LandingPage.setObjectName(u"LandingPage") - LandingPage.resize(293, 78) - sizePolicy = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(LandingPage.sizePolicy().hasHeightForWidth()) - LandingPage.setSizePolicy(sizePolicy) + LandingPage.resize(300, 95) LandingPage.setWindowTitle(u"LandingPage") - self.main_layout = QFormLayout(LandingPage) + self.main_layout = QVBoxLayout(LandingPage) self.main_layout.setObjectName(u"main_layout") - self.main_layout.setFieldGrowthPolicy(QFormLayout.AllNonFixedFieldsGrow) - self.main_layout.setLabelAlignment(Qt.AlignLeading|Qt.AlignLeft|Qt.AlignVCenter) - self.main_layout.setFormAlignment(Qt.AlignLeading|Qt.AlignLeft|Qt.AlignVCenter) self.login_label = QLabel(LandingPage) self.login_label.setObjectName(u"login_label") + sizePolicy = QSizePolicy(QSizePolicy.Policy.Preferred, QSizePolicy.Policy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.login_label.sizePolicy().hasHeightForWidth()) self.login_label.setSizePolicy(sizePolicy) font = QFont() font.setBold(True) self.login_label.setFont(font) - self.main_layout.setWidget(0, QFormLayout.ItemRole.SpanningRole, self.login_label) - - self.login_browser_radio = QRadioButton(LandingPage) + self.main_layout.addWidget(self.login_label) + + self.form_widget = QWidget(LandingPage) + self.form_widget.setObjectName(u"form_widget") + self.form_widget.setMinimumSize(QSize(0, 20)) + self.form_layout = QFormLayout(self.form_widget) + self.form_layout.setObjectName(u"form_layout") + self.form_layout.setHorizontalSpacing(15) + self.form_layout.setVerticalSpacing(5) + self.form_layout.setContentsMargins(0, 0, 0, 0) + self.login_browser_radio = QRadioButton(self.form_widget) self.login_browser_radio.setObjectName(u"login_browser_radio") sizePolicy1 = QSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding) sizePolicy1.setHorizontalStretch(0) @@ -47,28 +50,31 @@ def setupUi(self, LandingPage): sizePolicy1.setHeightForWidth(self.login_browser_radio.sizePolicy().hasHeightForWidth()) self.login_browser_radio.setSizePolicy(sizePolicy1) - self.main_layout.setWidget(1, QFormLayout.ItemRole.LabelRole, self.login_browser_radio) + self.form_layout.setWidget(0, QFormLayout.ItemRole.LabelRole, self.login_browser_radio) - self.login_browser_label = QLabel(LandingPage) + self.login_browser_label = QLabel(self.form_widget) self.login_browser_label.setObjectName(u"login_browser_label") font1 = QFont() font1.setItalic(True) self.login_browser_label.setFont(font1) - self.main_layout.setWidget(1, QFormLayout.ItemRole.FieldRole, self.login_browser_label) + self.form_layout.setWidget(0, QFormLayout.ItemRole.FieldRole, self.login_browser_label) - self.login_import_radio = QRadioButton(LandingPage) + self.login_import_radio = QRadioButton(self.form_widget) self.login_import_radio.setObjectName(u"login_import_radio") sizePolicy1.setHeightForWidth(self.login_import_radio.sizePolicy().hasHeightForWidth()) self.login_import_radio.setSizePolicy(sizePolicy1) - self.main_layout.setWidget(2, QFormLayout.ItemRole.LabelRole, self.login_import_radio) + self.form_layout.setWidget(1, QFormLayout.ItemRole.LabelRole, self.login_import_radio) - self.login_import_label = QLabel(LandingPage) + self.login_import_label = QLabel(self.form_widget) self.login_import_label.setObjectName(u"login_import_label") self.login_import_label.setFont(font1) - self.main_layout.setWidget(2, QFormLayout.ItemRole.FieldRole, self.login_import_label) + self.form_layout.setWidget(1, QFormLayout.ItemRole.FieldRole, self.login_import_label) + + + self.main_layout.addWidget(self.form_widget) self.retranslateUi(LandingPage) diff --git a/rare/ui/components/dialogs/login/landing_page.ui b/rare/ui/components/dialogs/login/landing_page.ui index 43e4dc018..048306128 100644 --- a/rare/ui/components/dialogs/login/landing_page.ui +++ b/rare/ui/components/dialogs/login/landing_page.ui @@ -6,30 +6,15 @@ 0 0 - 293 - 78 + 300 + 95 - - - 0 - 0 - - LandingPage - - - QFormLayout::AllNonFixedFieldsGrow - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - + + @@ -39,7 +24,6 @@ - 75 true @@ -48,54 +32,84 @@ - - - - - 0 - 0 - - - - Browser - - - - - - - - true - - - - Login using a browser. - - - - - - - - 0 - 0 - - - - Import - - - - - - - - true - - - - Import from Epic Games Launcher + + + + + 0 + 20 + + + + 15 + + + 5 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + Browser + + + + + + + + true + + + + Login using a browser. + + + + + + + + 0 + 0 + + + + Import + + + + + + + + true + + + + Import from Epic Games Launcher + + + + diff --git a/rare/ui/components/dialogs/login/login_dialog.py b/rare/ui/components/dialogs/login/login_dialog.py index 237790548..f808dcd33 100644 --- a/rare/ui/components/dialogs/login/login_dialog.py +++ b/rare/ui/components/dialogs/login/login_dialog.py @@ -3,13 +3,14 @@ ################################################################################ ## Form generated from reading UI file 'login_dialog.ui' ## -## Created by: Qt User Interface Compiler version 6.9.1 +## Created by: Qt User Interface Compiler version 6.10.1 ## ## WARNING! All changes made in this file will be lost when recompiling UI file! ################################################################################ -from PySide6.QtCore import QCoreApplication +from PySide6.QtCore import QCoreApplication, Qt from PySide6.QtWidgets import ( + QFrame, QHBoxLayout, QLabel, QPushButton, @@ -23,10 +24,10 @@ class Ui_LoginDialog(object): def setupUi(self, LoginDialog): if not LoginDialog.objectName(): LoginDialog.setObjectName(u"LoginDialog") - LoginDialog.resize(241, 128) + LoginDialog.resize(242, 146) self.main_layout = QVBoxLayout(LoginDialog) self.main_layout.setObjectName(u"main_layout") - self.login_vspacer_top = QSpacerItem(0, 17, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed) + self.login_vspacer_top = QSpacerItem(17, 17, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed) self.main_layout.addItem(self.login_vspacer_top) @@ -35,14 +36,18 @@ def setupUi(self, LoginDialog): self.main_layout.addWidget(self.welcome_label) - self.login_vspacer_bottom = QSpacerItem(0, 17, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed) + self.login_vspacer_bottom = QSpacerItem(17, 17, QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed) self.main_layout.addItem(self.login_vspacer_bottom) - self.login_stack_layout = QVBoxLayout() - self.login_stack_layout.setObjectName(u"login_stack_layout") + self.info_label = QLabel(LoginDialog) + self.info_label.setObjectName(u"info_label") + self.info_label.setFrameShape(QFrame.Shape.StyledPanel) + self.info_label.setFrameShadow(QFrame.Shadow.Sunken) + self.info_label.setAlignment(Qt.AlignmentFlag.AlignLeading|Qt.AlignmentFlag.AlignLeft|Qt.AlignmentFlag.AlignTop) + self.info_label.setWordWrap(True) - self.main_layout.addLayout(self.login_stack_layout) + self.main_layout.addWidget(self.info_label) self.button_layout = QHBoxLayout() self.button_layout.setObjectName(u"button_layout") @@ -75,6 +80,7 @@ def setupUi(self, LoginDialog): def retranslateUi(self, LoginDialog): LoginDialog.setWindowTitle(QCoreApplication.translate("LoginDialog", u"Login", None)) self.welcome_label.setText(QCoreApplication.translate("LoginDialog", u"

Welcome to Rare

", None)) + self.info_label.setText("") self.exit_button.setText(QCoreApplication.translate("LoginDialog", u"Exit", None)) self.back_button.setText(QCoreApplication.translate("LoginDialog", u"Back", None)) self.next_button.setText(QCoreApplication.translate("LoginDialog", u"Next", None)) diff --git a/rare/ui/components/dialogs/login/login_dialog.ui b/rare/ui/components/dialogs/login/login_dialog.ui index 6ca927101..a07483efb 100644 --- a/rare/ui/components/dialogs/login/login_dialog.ui +++ b/rare/ui/components/dialogs/login/login_dialog.ui @@ -6,8 +6,8 @@ 0 0 - 241 - 128 + 242 + 146 @@ -17,14 +17,14 @@ - Qt::Vertical + Qt::Orientation::Vertical - QSizePolicy::Fixed + QSizePolicy::Policy::Fixed - 0 + 17 17 @@ -40,21 +40,37 @@ - Qt::Vertical + Qt::Orientation::Vertical - QSizePolicy::Fixed + QSizePolicy::Policy::Fixed - 0 + 17 17 - + + + QFrame::Shape::StyledPanel + + + QFrame::Shadow::Sunken + + + + + + Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop + + + true + + @@ -68,7 +84,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal