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
-
-
-
-
-
-
-
-
-
-
-