From 463443796d0fbd8c9472c0542b7a41a920c28a78 Mon Sep 17 00:00:00 2001 From: Stelios Tsampas Date: Sat, 9 Oct 2021 15:08:54 +0300 Subject: [PATCH] Adjust `BrowserLogin` to use `IndicatorLineEdit` Adjust Locale in `LegendarySettings` to use `IndicatorLineEdit` Adjust `InstallDialog` to conform with new `PathEdit` `edit_func` specification This commit temporarily removes `EGLSync` from `LegendarySettings` as it is being worked on. --- rare/components/dialogs/install_dialog.py | 3 +- rare/components/dialogs/login/__init__.py | 8 +- .../components/dialogs/login/browser_login.py | 48 +- rare/components/tabs/settings/legendary.py | 262 ++--------- .../components/dialogs/login/browser_login.py | 15 +- .../components/dialogs/login/browser_login.ui | 142 +++--- .../components/dialogs/login/login_dialog.ui | 410 +++++++++--------- rare/ui/components/tabs/settings/legendary.py | 144 +----- rare/ui/components/tabs/settings/legendary.ui | 221 +--------- 9 files changed, 371 insertions(+), 882 deletions(-) diff --git a/rare/components/dialogs/install_dialog.py b/rare/components/dialogs/install_dialog.py index 2e2053cf..68456e95 100644 --- a/rare/components/dialogs/install_dialog.py +++ b/rare/components/dialogs/install_dialog.py @@ -140,10 +140,11 @@ class InstallDialog(QDialog, Ui_InstallDialog): self.get_options() self.get_download_info() - def option_changed(self): + def option_changed(self, path): self.options_changed = True self.install_button.setEnabled(False) self.verify_button.setEnabled(not self.worker_running) + return True, path def cancel_clicked(self): self.dl_item.download = None diff --git a/rare/components/dialogs/login/__init__.py b/rare/components/dialogs/login/__init__.py index e0621d65..a9477ae5 100644 --- a/rare/components/dialogs/login/__init__.py +++ b/rare/components/dialogs/login/__init__.py @@ -2,7 +2,7 @@ from dataclasses import dataclass from logging import getLogger from PyQt5.QtCore import Qt -from PyQt5.QtWidgets import QDialog +from PyQt5.QtWidgets import QDialog, QMessageBox from legendary.core import LegendaryCore from rare.components.dialogs.login.browser_login import BrowserLogin @@ -35,7 +35,7 @@ class LoginDialog(QDialog, Ui_LoginDialog): self.login_stack.insertWidget(self.pages.browser, self.browser_page) self.browser_page.success.connect(self.login_successful) self.browser_page.changed.connect( - self.next_button.setEnabled + lambda: self.next_button.setEnabled(self.browser_page.is_valid()) ) self.import_page = ImportLogin(self.core, self.login_stack) self.login_stack.insertWidget(self.pages.import_egl, self.import_page) @@ -76,8 +76,6 @@ class LoginDialog(QDialog, Ui_LoginDialog): self.browser_page.do_login() elif self.login_stack.currentIndex() == self.pages.import_egl: self.import_page.do_login() - else: - self.close() def login(self): self.exec_() @@ -94,3 +92,5 @@ class LoginDialog(QDialog, Ui_LoginDialog): logger.error(str(e)) self.next_button.setEnabled(False) self.logged_in = False + QMessageBox.warning(self, "Error", str(e)) + diff --git a/rare/components/dialogs/login/browser_login.py b/rare/components/dialogs/login/browser_login.py index cd6233e9..b5e3c306 100644 --- a/rare/components/dialogs/login/browser_login.py +++ b/rare/components/dialogs/login/browser_login.py @@ -4,16 +4,17 @@ from logging import getLogger from PyQt5.QtCore import pyqtSignal, QUrl from PyQt5.QtGui import QDesktopServices from PyQt5.QtWidgets import QWidget - from legendary.core import LegendaryCore + from rare.ui.components.dialogs.login.browser_login import Ui_BrowserLogin +from rare.utils.extra_widgets import IndicatorLineEdit logger = getLogger("BrowserLogin") class BrowserLogin(QWidget, Ui_BrowserLogin): success = pyqtSignal() - changed = pyqtSignal(bool) + changed = pyqtSignal() login_url = "https://www.epicgames.com/id/login?redirectUrl=https%3A%2F%2Fwww.epicgames.com%2Fid%2Fapi%2Fredirect" def __init__(self, core: LegendaryCore, parent=None): @@ -22,34 +23,37 @@ class BrowserLogin(QWidget, Ui_BrowserLogin): self.core = core + self.sid_edit = IndicatorLineEdit( + ph_text=self.tr("Insert SID here"), + edit_func=self.text_changed, + parent=self + ) + self.sid_layout.addWidget(self.sid_edit) + self.open_button.clicked.connect(self.open_browser) - self.sid_edit.textChanged.connect(self.text_changed) + self.sid_edit.textChanged.connect(self.changed.emit) - def is_valid(self, text: str): + def is_valid(self): + return self.sid_edit.is_valid + + @staticmethod + def text_changed(text) -> tuple[bool, str]: if text: - return len(text) == 32 + text = text.strip() + if text.startswith("{") and text.endswith("}"): + try: + text = json.loads(text).get("sid") + except json.JSONDecodeError: + return False, text + elif '"' in text: + text = text.strip('"') + return len(text) == 32, text else: - return len(self.sid_edit.text()) == 32 - - def text_changed(self, text): - if not self.is_valid(text): - try: - sid = json.loads(text).get("sid") - if sid and self.is_valid(sid): - self.sid_edit.setText(sid) - self.status_label.setText(self.tr("Parsed sid from pasted text")) - except json.JSONDecodeError: - self.changed.emit(False) - - else: - self.changed.emit(True) + return False, text def do_login(self): self.status_label.setText(self.tr("Logging in...")) sid = self.sid_edit.text() - # when the text copied - if sid.startswith("{") and sid.endswith("}"): - sid = json.loads(sid)["sid"] try: token = self.core.auth_sid(sid) if self.core.auth_code(token): diff --git a/rare/components/tabs/settings/legendary.py b/rare/components/tabs/settings/legendary.py index 160ac1fa..235e0870 100644 --- a/rare/components/tabs/settings/legendary.py +++ b/rare/components/tabs/settings/legendary.py @@ -3,22 +3,19 @@ import platform import re from logging import getLogger -from PyQt5.QtWidgets import QFileDialog, QMessageBox, QVBoxLayout, QDialog, QCheckBox, QLabel, \ - QHBoxLayout, QPushButton, QGroupBox, QWidget -from qtawesome import icon +from PyQt5.QtWidgets import QSizePolicy, QWidget, QFileDialog, QMessageBox -from legendary.core import LegendaryCore -from rare import shared +import rare.shared as shared from rare.ui.components.tabs.settings.legendary import Ui_LegendarySettings -from rare.utils.extra_widgets import PathEdit +from rare.utils.extra_widgets import PathEdit, IndicatorLineEdit from rare.utils.utils import get_size logger = getLogger("LegendarySettings") class LegendarySettings(QWidget, Ui_LegendarySettings): - def __init__(self): - super(LegendarySettings, self).__init__() + def __init__(self, parent=None): + super(LegendarySettings, self).__init__(parent=parent) self.setupUi(self) self.core = shared.legendary_core @@ -26,7 +23,7 @@ class LegendarySettings(QWidget, Ui_LegendarySettings): # Default installation directory self.install_dir = PathEdit(self.core.get_default_install_dir(), file_type=QFileDialog.DirectoryOnly, - save_func=self.save_path) + save_func=self.path_save) self.install_dir_layout.addWidget(self.install_dir) # Max Workers @@ -54,159 +51,40 @@ class LegendarySettings(QWidget, Ui_LegendarySettings): lambda: self.cleanup(True) ) - self.manifest_path_info.setText( - self.tr("EGL path is at C:\\ProgramData\\Epic\\EpicGamesLauncher\\Data\\Manifests")) - path = os.path.expanduser("~/") - if self.core.egl.programdata_path: - path = self.core.egl.programdata_path + self.locale_edit = IndicatorLineEdit( + f"{self.core.language_code}-{self.core.country_code}", + edit_func=self.locale_chck, + save_func=self.locale_save, + horiz_policy=QSizePolicy.Minimum, + parent=self + ) + self.locale_layout.addWidget(self.locale_edit) + + @staticmethod + def locale_chck(text: str) -> tuple[bool, str]: + if text: + if re.match("^[a-zA-Z]{2,3}_[a-zA-Z]{2,3}$", text): + language, country = text.split("_") + text = "-".join([language.lower(), country.upper()]) + return bool(re.match("^[a-z]{2,3}-[A-Z]{2,3}$", text)), text else: - possible_wine_prefixes = [os.path.expanduser("~/.wine"), - os.path.expanduser("~/Games/epic-games-store")] - for i in possible_wine_prefixes: - if os.path.exists(p := os.path.join(i, "drive_c/ProgramData/Epic/EpicGamesLauncher/Data/Manifests")): - path = p + return True, text - self.manifest_path_edit = PathEdit(path, QFileDialog.DirectoryOnly, save_func=self.save_egl_path) - self.manifest_path_layout.addWidget(self.manifest_path_edit) - if platform.system() != "Windows": - self.core.lgd.config.set('Legendary', 'egl_programdata', path) - self.core.egl.programdata_path = path - - self.importable_widgets = list() - self.exportable_widgets = list() - - if self.core.egl_sync_enabled: - self.egl_sync_button.setText(self.tr("Disable sync")) - else: - self.egl_sync_button.setText(self.tr("Enable Sync")) - - self.egl_sync_button.clicked.connect(self.sync) - - self.enable_sync_button.clicked.connect(self.enable_sync) - self.sync_once_button.clicked.connect(self.core.egl_sync) - - self.locale_lineedit.setText(f"{self.core.language_code}-{self.core.country_code}") - - self.locale_lineedit.textChanged.connect(self.save_locale) - - def save_locale(self, text: str): - if re.match("^[a-z]{2,3}-[A-Z]{2,3}$", text): - self.core.egs.language_code = text.split("-")[0] - self.core.egs.country_code = text.split("-")[1] + def locale_save(self, text: str): + if text: + self.core.egs.language_code, self.core.egs.country_code = text.split("-") self.core.lgd.config.set("Legendary", "locale", text) - self.core.lgd.save_config() - self.indicator_label.setPixmap(icon("ei.ok-sign", color="green").pixmap(16, 16)) - elif re.match("^[a-zA-Z]{2,3}[-_][a-zA-Z]{2,3}$", text): - text = text.replace("_", "-") - # changing text triggers text changed signal - self.locale_lineedit.setText(text.split("-")[0].lower() + "-" + text.split("-")[1].upper()) - elif text == "": + else: if self.core.lgd.config.has_option("Legendary", "locale"): self.core.lgd.config.remove_option("Legendary", "locale") - self.core.lgd.save_config() - self.indicator_label.setPixmap(icon("ei.ok-sign", color="green").pixmap(16, 16)) - else: - self.indicator_label.setPixmap(icon("fa.warning", color="red").pixmap(16, 16)) - - def enable_sync(self): - if not self.core.egl.programdata_path: - if os.path.exists(path := self.manifest_path_edit.text()): - self.core.lgd.config.set("Legendary", "egl_programdata", path) - self.core.lgd.save_config() - self.core.egl.programdata_path = path - - self.core.lgd.config.set('Legendary', 'egl_sync', "true") - self.core.egl_sync() self.core.lgd.save_config() - self.egl_sync_button.setText(self.tr("Disable Sync")) - self.enable_sync_button.setDisabled(True) - def export_all(self): - for ew in self.exportable_widgets: - ew.export_game() - self.exportable_widgets.clear() - - def import_all(self): - for iw in self.importable_widgets: - iw.import_game() - self.importable_widgets.clear() - - def save_egl_path(self): - self.core.lgd.config.set("Legendary", "egl_programdata", self.manifest_path_edit.text()) - self.core.egl.programdata_path = self.manifest_path_edit.text() - self.core.lgd.save_config() - self.update_egl_widget() - - def sync(self): - if self.core.egl_sync_enabled: - # disable sync - info = DisableSyncDialog().get_information() - if info[0] == 0: - if info[1]: - self.core.lgd.config.remove_option('Legendary', 'egl_sync') - else: - self.core.lgd.config.remove_option('Legendary', 'egl_programdata') - self.core.lgd.config.remove_option('Legendary', 'egl_sync') - # remove EGL GUIDs from all games, DO NOT remove .egstore folders because that would fuck things up. - for igame in self.core.get_installed_list(): - igame.egl_guid = '' - self.core.install_game(igame) - self.core.lgd.save_config() - self.egl_sync_button.setText(self.tr("Enable Sync")) - else: - # enable sync - self.enable_sync_button.setDisabled(False) - self.update_egl_widget() - - def update_egl_widget(self): - self.import_scroll.setVisible(bool(self.core.egl.programdata_path)) - self.export_scroll.setVisible(bool(self.core.egl.programdata_path)) - self.export_all_button.setDisabled(not bool(self.core.egl.programdata_path)) - self.import_all_button.setDisabled(not bool(self.core.egl.programdata_path)) - - if not self.core.egl.programdata_path: - return - - if self.exportable_widgets: - for ew in self.exportable_widgets: - # FIXME: Handle this using signals to properly update the list on python's side - try: - ew.deleteLater() - except RuntimeError as e: - print(e) - self.exportable_widgets.clear() - exportable_games = self.core.egl_get_exportable() - for igame in exportable_games: - ew = EGLSyncWidget(igame, True, self.core) - self.exportable_widgets.append(ew) - self.exportable_layout.addWidget(ew) - self.export_group.setEnabled(bool(exportable_games)) - self.export_all_button.setEnabled(bool(exportable_games)) - self.export_label.setVisible(not bool(exportable_games)) - - if self.importable_widgets: - for iw in self.importable_widgets: - # FIXME: Handle this using signals to properly update the list on python's side - try: - iw.deleteLater() - except RuntimeError as e: - print(e) - self.importable_widgets.clear() - importable_games = self.core.egl_get_importable() - for game in importable_games: - iw = EGLSyncWidget(game, False, self.core) - self.importable_widgets.append(iw) - self.importable_layout.addWidget(iw) - self.import_group.setEnabled(bool(importable_games)) - self.import_all_button.setEnabled(bool(importable_games)) - self.import_label.setVisible(not bool(importable_games)) - - def save_path(self): - self.core.lgd.config["Legendary"]["install_dir"] = self.install_dir.text() - if self.install_dir.text() == "" and "install_dir" in self.core.lgd.config["Legendary"].keys(): + def path_save(self, text: str): + self.core.lgd.config["Legendary"]["install_dir"] = text + if not text and "install_dir" in self.core.lgd.config["Legendary"].keys(): self.core.lgd.config["Legendary"].pop("install_dir") else: - logger.info("Set config install_dir to " + self.install_dir.text()) + logger.info("Set config install_dir to " + text) self.core.lgd.save_config() def max_worker_save(self, workers: str): @@ -256,81 +134,3 @@ class LegendarySettings(QWidget, Ui_LegendarySettings): get_size(before - after))) else: QMessageBox.information(self, "Cleanup", "Nothing to clean") - - -class DisableSyncDialog(QDialog): - info = 1, False - - def __init__(self, parent=None): - super(DisableSyncDialog, self).__init__(parent=parent) - self.layout = QVBoxLayout() - - self.question = QLabel(self.tr("Do you really want to disable sync with Epic Games Store")) - self.layout.addWidget(self.question) - - self.remove_metadata = QCheckBox(self.tr("Remove metadata from installed games")) - self.layout.addWidget(self.remove_metadata) - - self.button_layout = QHBoxLayout() - self.button_layout.addStretch(1) - - self.ok_button = QPushButton(self.tr("Ok")) - self.cancel_button = QPushButton(self.tr("Cancel")) - - self.ok_button.clicked.connect(self.ok) - self.cancel_button.clicked.connect(self.cancel) - - self.button_layout.addWidget(self.ok_button) - self.button_layout.addWidget(self.cancel_button) - - self.layout.addStretch(1) - self.layout.addLayout(self.button_layout) - - self.setLayout(self.layout) - - def ok(self): - self.info = 0, self.remove_metadata.isChecked() - self.close() - - def cancel(self): - self.close() - - def get_information(self): - self.exec_() - return self.info - - -class EGLSyncWidget(QGroupBox): - def __init__(self, game, export: bool, core: LegendaryCore, parent=None): - super(EGLSyncWidget, self).__init__(parent=parent) - self.layout = QVBoxLayout() - self.export = export - self.core = core - self.game = game - if export: - self.app_title_label = QLabel(game.title) - else: - title = self.core.get_game(game.app_name).app_title - self.app_title_label = QLabel(title) - self.layout.addWidget(self.app_title_label) - self.button = QPushButton(self.tr("Export") if export else self.tr("Import")) - - if export: - self.button.clicked.connect(self.export_game) - else: - self.button.clicked.connect(self.import_game) - - self.layout.addWidget(self.button) - self.setLayout(self.layout) - - def export_game(self): - self.core.egl_export(self.game.app_name) - # FIXME: on update_egl_widget this is going to crash because - # FIXME: the item is not removed from the list in the python's side - self.deleteLater() - - def import_game(self): - self.core.egl_import(self.game.app_name) - # FIXME: on update_egl_widget this is going to crash because - # FIXME: the item is not removed from the list in the python's side - self.deleteLater() diff --git a/rare/ui/components/dialogs/login/browser_login.py b/rare/ui/components/dialogs/login/browser_login.py index 9968df2a..18a2b86a 100644 --- a/rare/ui/components/dialogs/login/browser_login.py +++ b/rare/ui/components/dialogs/login/browser_login.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Form implementation generated from reading ui file 'browser_login.ui' +# Form implementation generated from reading ui file 'rare/ui/components/dialogs/login/browser_login.ui' # # Created by: PyQt5 UI code generator 5.15.4 # @@ -14,7 +14,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets class Ui_BrowserLogin(object): def setupUi(self, BrowserLogin): BrowserLogin.setObjectName("BrowserLogin") - BrowserLogin.resize(246, 130) + BrowserLogin.resize(382, 178) BrowserLogin.setWindowTitle("BrowserLogin") self.browser_layout = QtWidgets.QGridLayout(BrowserLogin) self.browser_layout.setObjectName("browser_layout") @@ -28,9 +28,6 @@ class Ui_BrowserLogin(object): self.title_label.setFont(font) self.title_label.setObjectName("title_label") self.browser_layout.addWidget(self.title_label, 0, 0, 1, 2, QtCore.Qt.AlignTop) - self.sid_edit = QtWidgets.QLineEdit(BrowserLogin) - self.sid_edit.setObjectName("sid_edit") - self.browser_layout.addWidget(self.sid_edit, 1, 1, 1, 1) self.info_label = QtWidgets.QLabel(BrowserLogin) font = QtGui.QFont() font.setItalic(True) @@ -47,6 +44,9 @@ class Ui_BrowserLogin(object): self.status_label.setText("") self.status_label.setObjectName("status_label") self.browser_layout.addWidget(self.status_label, 2, 1, 1, 1) + self.sid_layout = QtWidgets.QHBoxLayout() + self.sid_layout.setObjectName("sid_layout") + self.browser_layout.addLayout(self.sid_layout, 1, 1, 1, 1) self.retranslateUi(BrowserLogin) QtCore.QMetaObject.connectSlotsByName(BrowserLogin) @@ -55,14 +55,11 @@ class Ui_BrowserLogin(object): _translate = QtCore.QCoreApplication.translate self.open_button.setText(_translate("BrowserLogin", "Open Browser")) self.title_label.setText(_translate("BrowserLogin", "Login through browser")) - self.sid_edit.setPlaceholderText(_translate("BrowserLogin", "Insert SID here")) - self.info_label.setText(_translate("BrowserLogin", - "Click the button to open the login page in a browser. After logging in, copy the SID code in the input above.")) + self.info_label.setText(_translate("BrowserLogin", "Click the button to open the login page in a browser. After logging in, copy the SID code in the input above.")) if __name__ == "__main__": import sys - app = QtWidgets.QApplication(sys.argv) BrowserLogin = QtWidgets.QWidget() ui = Ui_BrowserLogin() diff --git a/rare/ui/components/dialogs/login/browser_login.ui b/rare/ui/components/dialogs/login/browser_login.ui index 99dc3cd2..52e9dbf3 100644 --- a/rare/ui/components/dialogs/login/browser_login.ui +++ b/rare/ui/components/dialogs/login/browser_login.ui @@ -1,78 +1,72 @@ - BrowserLogin - - - - 0 - 0 - 246 - 130 - - - - BrowserLogin - - - - - - Open Browser - - - - - - - - 75 - true - - - - Login through browser - - - - - - - Insert SID here - - - - - - - - true - - - - Click the button to open the login page in a browser. After logging in, copy the SID - code in the input above. - - - - true - - - - - - - - 0 - 0 - - - - - - - - + BrowserLogin + + + + 0 + 0 + 382 + 178 + + + + BrowserLogin + + + + + + Open Browser + - - + + + + + + 75 + true + + + + Login through browser + + + + + + + + true + + + + Click the button to open the login page in a browser. After logging in, copy the SID code in the input above. + + + true + + + + + + + + 0 + 0 + + + + + + + + + + + + + + diff --git a/rare/ui/components/dialogs/login/login_dialog.ui b/rare/ui/components/dialogs/login/login_dialog.ui index 12a6edcb..048c0090 100644 --- a/rare/ui/components/dialogs/login/login_dialog.ui +++ b/rare/ui/components/dialogs/login/login_dialog.ui @@ -1,209 +1,209 @@ - LoginDialog - - - - 0 - 0 - 498 - 311 - - - - - 0 - 0 - - - - Welcome to Rare - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 40 - - - - - - - - <h1>Welcome to Rare</h1> - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 40 - - - - - - - - true - - - - 480 - 135 - - - - QFrame::StyledPanel - - - QFrame::Raised - - - 0 - - - - true - - - - - - - true - - - - Login using a browser. - - - - - - - - 75 - true - - - - Select login method - - - - - - - - true - - - - Import from Epic Games Launcher - - - - - - - - 0 - 0 - - - - Import - - - - - - - - 0 - 0 - - - - Browser - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Exit - - - - - - - Back - - - - - - - Next - - - - - - + LoginDialog + + + + 0 + 0 + 498 + 311 + + + + + 0 + 0 + + + + Welcome to Rare + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 40 + + + + + + + + <h1>Welcome to Rare</h1> + - - + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 40 + + + + + + + + true + + + + 480 + 135 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + 0 + + + + true + + + + + + + true + + + + Login using a browser. + + + + + + + + 75 + true + + + + Select login method + + + + + + + + true + + + + Import from Epic Games Launcher + + + + + + + + 0 + 0 + + + + Import + + + + + + + + 0 + 0 + + + + Browser + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Exit + + + + + + + Back + + + + + + + Next + + + + + + + + + diff --git a/rare/ui/components/tabs/settings/legendary.py b/rare/ui/components/tabs/settings/legendary.py index 281caaa0..5a0d388e 100644 --- a/rare/ui/components/tabs/settings/legendary.py +++ b/rare/ui/components/tabs/settings/legendary.py @@ -14,7 +14,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets class Ui_LegendarySettings(object): def setupUi(self, LegendarySettings): LegendarySettings.setObjectName("LegendarySettings") - LegendarySettings.resize(796, 732) + LegendarySettings.resize(552, 268) LegendarySettings.setWindowTitle("LegendarySettings") self.settings_layout = QtWidgets.QHBoxLayout(LegendarySettings) self.settings_layout.setObjectName("settings_layout") @@ -28,7 +28,7 @@ class Ui_LegendarySettings(object): self.download_group = QtWidgets.QGroupBox(LegendarySettings) self.download_group.setObjectName("download_group") self.download_layout = QtWidgets.QFormLayout(self.download_group) - self.download_layout.setLabelAlignment(QtCore.Qt.AlignRight | QtCore.Qt.AlignTrailing | QtCore.Qt.AlignVCenter) + self.download_layout.setLabelAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter) self.download_layout.setObjectName("download_layout") self.max_workers_label = QtWidgets.QLabel(self.download_group) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Preferred) @@ -96,91 +96,21 @@ class Ui_LegendarySettings(object): self.disable_https_check.setObjectName("disable_https_check") self.download_layout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.disable_https_check) self.left_layout.addWidget(self.download_group) - self.egl_sync_group = QtWidgets.QGroupBox(LegendarySettings) - self.egl_sync_group.setObjectName("egl_sync_group") - self.egl_sync_layout = QtWidgets.QVBoxLayout(self.egl_sync_group) - self.egl_sync_layout.setObjectName("egl_sync_layout") - self.manifest_path_layout = QtWidgets.QVBoxLayout() - self.manifest_path_layout.setObjectName("manifest_path_layout") - self.egl_sync_layout.addLayout(self.manifest_path_layout) - self.manifest_path_info = QtWidgets.QLabel(self.egl_sync_group) - self.manifest_path_info.setText("TextLabel") - self.manifest_path_info.setObjectName("manifest_path_info") - self.egl_sync_layout.addWidget(self.manifest_path_info) - self.export_import_layout = QtWidgets.QHBoxLayout() - self.export_import_layout.setObjectName("export_import_layout") - self.export_group = QtWidgets.QGroupBox(self.egl_sync_group) - self.export_group.setObjectName("export_group") - self.export_layout = QtWidgets.QVBoxLayout(self.export_group) - self.export_layout.setObjectName("export_layout") - self.export_label = QtWidgets.QLabel(self.export_group) - self.export_label.setObjectName("export_label") - self.export_layout.addWidget(self.export_label) - self.export_scroll = QtWidgets.QScrollArea(self.export_group) - self.export_scroll.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustIgnored) - self.export_scroll.setWidgetResizable(True) - self.export_scroll.setObjectName("export_scroll") - self.export_contents = QtWidgets.QWidget() - self.export_contents.setGeometry(QtCore.QRect(0, 0, 248, 18)) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.export_contents.sizePolicy().hasHeightForWidth()) - self.export_contents.setSizePolicy(sizePolicy) - self.export_contents.setObjectName("export_contents") - self.exportable_layout = QtWidgets.QVBoxLayout(self.export_contents) - self.exportable_layout.setObjectName("exportable_layout") - self.export_scroll.setWidget(self.export_contents) - self.export_layout.addWidget(self.export_scroll) - self.export_all_button = QtWidgets.QPushButton(self.export_group) - self.export_all_button.setObjectName("export_all_button") - self.export_layout.addWidget(self.export_all_button, 0, QtCore.Qt.AlignRight) - self.export_import_layout.addWidget(self.export_group) - self.import_group = QtWidgets.QGroupBox(self.egl_sync_group) - self.import_group.setObjectName("import_group") - self.import_layout = QtWidgets.QVBoxLayout(self.import_group) - self.import_layout.setObjectName("import_layout") - self.import_label = QtWidgets.QLabel(self.import_group) - self.import_label.setObjectName("import_label") - self.import_layout.addWidget(self.import_label) - self.import_scroll = QtWidgets.QScrollArea(self.import_group) - self.import_scroll.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustIgnored) - self.import_scroll.setWidgetResizable(True) - self.import_scroll.setObjectName("import_scroll") - self.import_contents = QtWidgets.QWidget() - self.import_contents.setGeometry(QtCore.QRect(0, 0, 247, 18)) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.import_contents.sizePolicy().hasHeightForWidth()) - self.import_contents.setSizePolicy(sizePolicy) - self.import_contents.setObjectName("import_contents") - self.importable_layout = QtWidgets.QVBoxLayout(self.import_contents) - self.importable_layout.setObjectName("importable_layout") - self.import_scroll.setWidget(self.import_contents) - self.import_layout.addWidget(self.import_scroll) - self.import_all_button = QtWidgets.QPushButton(self.import_group) - self.import_all_button.setObjectName("import_all_button") - self.import_layout.addWidget(self.import_all_button, 0, QtCore.Qt.AlignRight) - self.export_import_layout.addWidget(self.import_group) - self.egl_sync_layout.addLayout(self.export_import_layout) - self.enable_sync_group = QtWidgets.QGroupBox(self.egl_sync_group) - self.enable_sync_group.setObjectName("enable_sync_group") - self.enable_sync_layout = QtWidgets.QHBoxLayout(self.enable_sync_group) - self.enable_sync_layout.setObjectName("enable_sync_layout") - self.sync_once_button = QtWidgets.QPushButton(self.enable_sync_group) - self.sync_once_button.setObjectName("sync_once_button") - self.enable_sync_layout.addWidget(self.sync_once_button, 0, QtCore.Qt.AlignRight) - self.enable_sync_button = QtWidgets.QPushButton(self.enable_sync_group) - self.enable_sync_button.setObjectName("enable_sync_button") - self.enable_sync_layout.addWidget(self.enable_sync_button, 0, QtCore.Qt.AlignRight) - self.egl_sync_layout.addWidget(self.enable_sync_group) - self.left_layout.addWidget(self.egl_sync_group) spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.left_layout.addItem(spacerItem) self.settings_layout.addLayout(self.left_layout) self.right_layout = QtWidgets.QVBoxLayout() self.right_layout.setObjectName("right_layout") + self.locale_group = QtWidgets.QGroupBox(LegendarySettings) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.locale_group.sizePolicy().hasHeightForWidth()) + self.locale_group.setSizePolicy(sizePolicy) + self.locale_group.setObjectName("locale_group") + self.locale_layout = QtWidgets.QVBoxLayout(self.locale_group) + self.locale_layout.setObjectName("locale_layout") + self.right_layout.addWidget(self.locale_group) self.cleanup_group = QtWidgets.QGroupBox(LegendarySettings) self.cleanup_group.setObjectName("cleanup_group") self.cleanup_layout = QtWidgets.QVBoxLayout(self.cleanup_group) @@ -192,42 +122,6 @@ class Ui_LegendarySettings(object): self.clean_button.setObjectName("clean_button") self.cleanup_layout.addWidget(self.clean_button) self.right_layout.addWidget(self.cleanup_group) - self.egl_sync = QtWidgets.QGroupBox(LegendarySettings) - self.egl_sync.setObjectName("egl_sync") - self.egl_sync_layout_3 = QtWidgets.QVBoxLayout(self.egl_sync) - self.egl_sync_layout_3.setObjectName("egl_sync_layout_3") - self.egl_sync_button = QtWidgets.QPushButton(self.egl_sync) - self.egl_sync_button.setObjectName("egl_sync_button") - self.egl_sync_layout_3.addWidget(self.egl_sync_button) - self.right_layout.addWidget(self.egl_sync) - self.locale_gb = QtWidgets.QGroupBox(LegendarySettings) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.locale_gb.sizePolicy().hasHeightForWidth()) - self.locale_gb.setSizePolicy(sizePolicy) - self.locale_gb.setObjectName("locale_gb") - self.horizontalLayout = QtWidgets.QHBoxLayout(self.locale_gb) - self.horizontalLayout.setObjectName("horizontalLayout") - self.locale_lineedit = QtWidgets.QLineEdit(self.locale_gb) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.locale_lineedit.sizePolicy().hasHeightForWidth()) - self.locale_lineedit.setSizePolicy(sizePolicy) - self.locale_lineedit.setPlaceholderText("") - self.locale_lineedit.setObjectName("locale_lineedit") - self.horizontalLayout.addWidget(self.locale_lineedit) - self.indicator_label = QtWidgets.QLabel(self.locale_gb) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.indicator_label.sizePolicy().hasHeightForWidth()) - self.indicator_label.setSizePolicy(sizePolicy) - self.indicator_label.setText("") - self.indicator_label.setObjectName("indicator_label") - self.horizontalLayout.addWidget(self.indicator_label) - self.right_layout.addWidget(self.locale_gb) spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.right_layout.addItem(spacerItem1) self.settings_layout.addLayout(self.right_layout) @@ -247,22 +141,10 @@ class Ui_LegendarySettings(object): self.preferred_cdn_label.setText(_translate("LegendarySettings", "Preferred CDN")) self.preferred_cdn_line.setPlaceholderText(_translate("LegendarySettings", "Default")) self.disable_https_label.setText(_translate("LegendarySettings", "Disable HTTPS")) - self.egl_sync_group.setTitle(_translate("LegendarySettings", "Sync with Epic Games Launcher")) - self.export_group.setTitle(_translate("LegendarySettings", "Exportable Games")) - self.export_label.setText(_translate("LegendarySettings", "No games to export to EGS")) - self.export_all_button.setText(_translate("LegendarySettings", "Export all Games")) - self.import_group.setTitle(_translate("LegendarySettings", "Importable")) - self.import_label.setText(_translate("LegendarySettings", "No games to import from EGS")) - self.import_all_button.setText(_translate("LegendarySettings", "Import all Games")) - self.enable_sync_group.setTitle(_translate("LegendarySettings", "Enable Sync")) - self.sync_once_button.setText(_translate("LegendarySettings", "Sync once")) - self.enable_sync_button.setText(_translate("LegendarySettings", "Enable automatic sync")) + self.locale_group.setTitle(_translate("LegendarySettings", "Locale")) self.cleanup_group.setTitle(_translate("LegendarySettings", "Cleanup")) self.clean_keep_manifests_button.setText(_translate("LegendarySettings", "Clean, but keep manifests")) self.clean_button.setText(_translate("LegendarySettings", "Remove everything")) - self.egl_sync.setTitle(_translate("LegendarySettings", "EGL Sync")) - self.egl_sync_button.setText(_translate("LegendarySettings", "Sync Settings")) - self.locale_gb.setTitle(_translate("LegendarySettings", "Locale")) if __name__ == "__main__": diff --git a/rare/ui/components/tabs/settings/legendary.ui b/rare/ui/components/tabs/settings/legendary.ui index ef004e70..d379885e 100644 --- a/rare/ui/components/tabs/settings/legendary.ui +++ b/rare/ui/components/tabs/settings/legendary.ui @@ -6,8 +6,8 @@ 0 0 - 796 - 732 + 552 + 268 @@ -160,152 +160,6 @@ - - - - Sync with Epic Games Launcher - - - - - - - - - TextLabel - - - - - - - - - Exportable Games - - - - - - No games to export to EGS - - - - - - - QAbstractScrollArea::AdjustIgnored - - - true - - - - - 0 - 0 - 248 - 18 - - - - - 0 - 0 - - - - - - - - - - Export all Games - - - - - - - - - - Importable - - - - - - No games to import from EGS - - - - - - - QAbstractScrollArea::AdjustIgnored - - - true - - - - - 0 - 0 - 247 - 18 - - - - - 0 - 0 - - - - - - - - - - Import all Games - - - - - - - - - - - - Enable Sync - - - - - - Sync once - - - - - - - Enable automatic sync - - - - - - - - - @@ -323,6 +177,20 @@ + + + + + 0 + 0 + + + + Locale + + + + @@ -346,63 +214,6 @@ - - - - EGL Sync - - - - - - Sync Settings - - - - - - - - - - - 0 - 0 - - - - Locale - - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - - - - - -