1
0
Fork 0
mirror of synced 2024-06-28 19:21:05 +12:00

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.
This commit is contained in:
Stelios Tsampas 2021-10-09 15:08:54 +03:00
parent c1e750138f
commit 463443796d
9 changed files with 371 additions and 882 deletions

View file

@ -140,10 +140,11 @@ class InstallDialog(QDialog, Ui_InstallDialog):
self.get_options() self.get_options()
self.get_download_info() self.get_download_info()
def option_changed(self): def option_changed(self, path):
self.options_changed = True self.options_changed = True
self.install_button.setEnabled(False) self.install_button.setEnabled(False)
self.verify_button.setEnabled(not self.worker_running) self.verify_button.setEnabled(not self.worker_running)
return True, path
def cancel_clicked(self): def cancel_clicked(self):
self.dl_item.download = None self.dl_item.download = None

View file

@ -2,7 +2,7 @@ from dataclasses import dataclass
from logging import getLogger from logging import getLogger
from PyQt5.QtCore import Qt from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QDialog from PyQt5.QtWidgets import QDialog, QMessageBox
from legendary.core import LegendaryCore from legendary.core import LegendaryCore
from rare.components.dialogs.login.browser_login import BrowserLogin 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.login_stack.insertWidget(self.pages.browser, self.browser_page)
self.browser_page.success.connect(self.login_successful) self.browser_page.success.connect(self.login_successful)
self.browser_page.changed.connect( 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.import_page = ImportLogin(self.core, self.login_stack)
self.login_stack.insertWidget(self.pages.import_egl, self.import_page) 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() self.browser_page.do_login()
elif self.login_stack.currentIndex() == self.pages.import_egl: elif self.login_stack.currentIndex() == self.pages.import_egl:
self.import_page.do_login() self.import_page.do_login()
else:
self.close()
def login(self): def login(self):
self.exec_() self.exec_()
@ -94,3 +92,5 @@ class LoginDialog(QDialog, Ui_LoginDialog):
logger.error(str(e)) logger.error(str(e))
self.next_button.setEnabled(False) self.next_button.setEnabled(False)
self.logged_in = False self.logged_in = False
QMessageBox.warning(self, "Error", str(e))

View file

@ -4,16 +4,17 @@ from logging import getLogger
from PyQt5.QtCore import pyqtSignal, QUrl from PyQt5.QtCore import pyqtSignal, QUrl
from PyQt5.QtGui import QDesktopServices from PyQt5.QtGui import QDesktopServices
from PyQt5.QtWidgets import QWidget from PyQt5.QtWidgets import QWidget
from legendary.core import LegendaryCore from legendary.core import LegendaryCore
from rare.ui.components.dialogs.login.browser_login import Ui_BrowserLogin from rare.ui.components.dialogs.login.browser_login import Ui_BrowserLogin
from rare.utils.extra_widgets import IndicatorLineEdit
logger = getLogger("BrowserLogin") logger = getLogger("BrowserLogin")
class BrowserLogin(QWidget, Ui_BrowserLogin): class BrowserLogin(QWidget, Ui_BrowserLogin):
success = pyqtSignal() 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" 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): def __init__(self, core: LegendaryCore, parent=None):
@ -22,34 +23,37 @@ class BrowserLogin(QWidget, Ui_BrowserLogin):
self.core = core 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.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: 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: else:
return len(self.sid_edit.text()) == 32 return False, text
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)
def do_login(self): def do_login(self):
self.status_label.setText(self.tr("Logging in...")) self.status_label.setText(self.tr("Logging in..."))
sid = self.sid_edit.text() sid = self.sid_edit.text()
# when the text copied
if sid.startswith("{") and sid.endswith("}"):
sid = json.loads(sid)["sid"]
try: try:
token = self.core.auth_sid(sid) token = self.core.auth_sid(sid)
if self.core.auth_code(token): if self.core.auth_code(token):

View file

@ -3,22 +3,19 @@ import platform
import re import re
from logging import getLogger from logging import getLogger
from PyQt5.QtWidgets import QFileDialog, QMessageBox, QVBoxLayout, QDialog, QCheckBox, QLabel, \ from PyQt5.QtWidgets import QSizePolicy, QWidget, QFileDialog, QMessageBox
QHBoxLayout, QPushButton, QGroupBox, QWidget
from qtawesome import icon
from legendary.core import LegendaryCore import rare.shared as shared
from rare import shared
from rare.ui.components.tabs.settings.legendary import Ui_LegendarySettings 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 from rare.utils.utils import get_size
logger = getLogger("LegendarySettings") logger = getLogger("LegendarySettings")
class LegendarySettings(QWidget, Ui_LegendarySettings): class LegendarySettings(QWidget, Ui_LegendarySettings):
def __init__(self): def __init__(self, parent=None):
super(LegendarySettings, self).__init__() super(LegendarySettings, self).__init__(parent=parent)
self.setupUi(self) self.setupUi(self)
self.core = shared.legendary_core self.core = shared.legendary_core
@ -26,7 +23,7 @@ class LegendarySettings(QWidget, Ui_LegendarySettings):
# Default installation directory # Default installation directory
self.install_dir = PathEdit(self.core.get_default_install_dir(), self.install_dir = PathEdit(self.core.get_default_install_dir(),
file_type=QFileDialog.DirectoryOnly, file_type=QFileDialog.DirectoryOnly,
save_func=self.save_path) save_func=self.path_save)
self.install_dir_layout.addWidget(self.install_dir) self.install_dir_layout.addWidget(self.install_dir)
# Max Workers # Max Workers
@ -54,159 +51,40 @@ class LegendarySettings(QWidget, Ui_LegendarySettings):
lambda: self.cleanup(True) lambda: self.cleanup(True)
) )
self.manifest_path_info.setText( self.locale_edit = IndicatorLineEdit(
self.tr("EGL path is at C:\\ProgramData\\Epic\\EpicGamesLauncher\\Data\\Manifests")) f"{self.core.language_code}-{self.core.country_code}",
path = os.path.expanduser("~/") edit_func=self.locale_chck,
if self.core.egl.programdata_path: save_func=self.locale_save,
path = self.core.egl.programdata_path 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: else:
possible_wine_prefixes = [os.path.expanduser("~/.wine"), return True, text
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
self.manifest_path_edit = PathEdit(path, QFileDialog.DirectoryOnly, save_func=self.save_egl_path) def locale_save(self, text: str):
self.manifest_path_layout.addWidget(self.manifest_path_edit) if text:
if platform.system() != "Windows": self.core.egs.language_code, self.core.egs.country_code = text.split("-")
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]
self.core.lgd.config.set("Legendary", "locale", text) self.core.lgd.config.set("Legendary", "locale", text)
self.core.lgd.save_config() else:
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 == "":
if self.core.lgd.config.has_option("Legendary", "locale"): if self.core.lgd.config.has_option("Legendary", "locale"):
self.core.lgd.config.remove_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.core.lgd.save_config()
self.egl_sync_button.setText(self.tr("Disable Sync"))
self.enable_sync_button.setDisabled(True)
def export_all(self): def path_save(self, text: str):
for ew in self.exportable_widgets: self.core.lgd.config["Legendary"]["install_dir"] = text
ew.export_game() if not text and "install_dir" in self.core.lgd.config["Legendary"].keys():
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():
self.core.lgd.config["Legendary"].pop("install_dir") self.core.lgd.config["Legendary"].pop("install_dir")
else: 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() self.core.lgd.save_config()
def max_worker_save(self, workers: str): def max_worker_save(self, workers: str):
@ -256,81 +134,3 @@ class LegendarySettings(QWidget, Ui_LegendarySettings):
get_size(before - after))) get_size(before - after)))
else: else:
QMessageBox.information(self, "Cleanup", "Nothing to clean") 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()

View file

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*- # -*- 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 # Created by: PyQt5 UI code generator 5.15.4
# #
@ -14,7 +14,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_BrowserLogin(object): class Ui_BrowserLogin(object):
def setupUi(self, BrowserLogin): def setupUi(self, BrowserLogin):
BrowserLogin.setObjectName("BrowserLogin") BrowserLogin.setObjectName("BrowserLogin")
BrowserLogin.resize(246, 130) BrowserLogin.resize(382, 178)
BrowserLogin.setWindowTitle("BrowserLogin") BrowserLogin.setWindowTitle("BrowserLogin")
self.browser_layout = QtWidgets.QGridLayout(BrowserLogin) self.browser_layout = QtWidgets.QGridLayout(BrowserLogin)
self.browser_layout.setObjectName("browser_layout") self.browser_layout.setObjectName("browser_layout")
@ -28,9 +28,6 @@ class Ui_BrowserLogin(object):
self.title_label.setFont(font) self.title_label.setFont(font)
self.title_label.setObjectName("title_label") self.title_label.setObjectName("title_label")
self.browser_layout.addWidget(self.title_label, 0, 0, 1, 2, QtCore.Qt.AlignTop) 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) self.info_label = QtWidgets.QLabel(BrowserLogin)
font = QtGui.QFont() font = QtGui.QFont()
font.setItalic(True) font.setItalic(True)
@ -47,6 +44,9 @@ class Ui_BrowserLogin(object):
self.status_label.setText("") self.status_label.setText("")
self.status_label.setObjectName("status_label") self.status_label.setObjectName("status_label")
self.browser_layout.addWidget(self.status_label, 2, 1, 1, 1) 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) self.retranslateUi(BrowserLogin)
QtCore.QMetaObject.connectSlotsByName(BrowserLogin) QtCore.QMetaObject.connectSlotsByName(BrowserLogin)
@ -55,14 +55,11 @@ class Ui_BrowserLogin(object):
_translate = QtCore.QCoreApplication.translate _translate = QtCore.QCoreApplication.translate
self.open_button.setText(_translate("BrowserLogin", "Open Browser")) self.open_button.setText(_translate("BrowserLogin", "Open Browser"))
self.title_label.setText(_translate("BrowserLogin", "Login through 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__": if __name__ == "__main__":
import sys import sys
app = QtWidgets.QApplication(sys.argv) app = QtWidgets.QApplication(sys.argv)
BrowserLogin = QtWidgets.QWidget() BrowserLogin = QtWidgets.QWidget()
ui = Ui_BrowserLogin() ui = Ui_BrowserLogin()

View file

@ -1,78 +1,72 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"> <ui version="4.0">
<class>BrowserLogin</class> <class>BrowserLogin</class>
<widget class="QWidget" name="BrowserLogin"> <widget class="QWidget" name="BrowserLogin">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>246</width> <width>382</width>
<height>130</height> <height>178</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
<string notr="true">BrowserLogin</string> <string notr="true">BrowserLogin</string>
</property> </property>
<layout class="QGridLayout" name="browser_layout"> <layout class="QGridLayout" name="browser_layout">
<item row="1" column="0"> <item row="1" column="0">
<widget class="QPushButton" name="open_button"> <widget class="QPushButton" name="open_button">
<property name="text"> <property name="text">
<string>Open Browser</string> <string>Open Browser</string>
</property> </property>
</widget>
</item>
<item row="0" column="0" colspan="2" alignment="Qt::AlignTop">
<widget class="QLabel" name="title_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Login through browser</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="sid_edit">
<property name="placeholderText">
<string>Insert SID here</string>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2" alignment="Qt::AlignBottom">
<widget class="QLabel" name="info_label">
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="text">
<string>Click the button to open the login page in a browser. After logging in, copy the SID
code in the input above.
</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="status_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true"/>
</property>
</widget>
</item>
</layout>
</widget> </widget>
<resources/> </item>
<connections/> <item row="0" column="0" colspan="2" alignment="Qt::AlignTop">
<widget class="QLabel" name="title_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Login through browser</string>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2" alignment="Qt::AlignBottom">
<widget class="QLabel" name="info_label">
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="text">
<string>Click the button to open the login page in a browser. After logging in, copy the SID code in the input above.</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="status_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string notr="true"/>
</property>
</widget>
</item>
<item row="1" column="1">
<layout class="QHBoxLayout" name="sid_layout"/>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui> </ui>

View file

@ -1,209 +1,209 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"> <ui version="4.0">
<class>LoginDialog</class> <class>LoginDialog</class>
<widget class="QDialog" name="LoginDialog"> <widget class="QDialog" name="LoginDialog">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>498</width> <width>498</width>
<height>311</height> <height>311</height>
</rect> </rect>
</property> </property>
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch> <horstretch>0</horstretch>
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
<string>Welcome to Rare</string> <string>Welcome to Rare</string>
</property> </property>
<layout class="QVBoxLayout" name="dialog_layout"> <layout class="QVBoxLayout" name="dialog_layout">
<item> <item>
<spacer name="login_vspacer_top"> <spacer name="login_vspacer_top">
<property name="orientation"> <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
</property> </property>
<property name="sizeType"> <property name="sizeType">
<enum>QSizePolicy::Fixed</enum> <enum>QSizePolicy::Fixed</enum>
</property> </property>
<property name="sizeHint" stdset="0"> <property name="sizeHint" stdset="0">
<size> <size>
<width>20</width> <width>20</width>
<height>40</height> <height>40</height>
</size> </size>
</property> </property>
</spacer> </spacer>
</item> </item>
<item> <item>
<widget class="QLabel" name="welcome_label"> <widget class="QLabel" name="welcome_label">
<property name="text"> <property name="text">
<string>&lt;h1&gt;Welcome to Rare&lt;/h1&gt;</string> <string>&lt;h1&gt;Welcome to Rare&lt;/h1&gt;</string>
</property> </property>
</widget>
</item>
<item>
<spacer name="login_vspacer_bottom">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QStackedWidget" name="login_stack">
<property name="enabled">
<bool>true</bool>
</property>
<property name="minimumSize">
<size>
<width>480</width>
<height>135</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="login_page">
<property name="enabled">
<bool>true</bool>
</property>
<layout class="QGridLayout" name="login_page_layout">
<item row="1" column="1">
<widget class="QLabel" name="login_browser_label">
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="text">
<string>Login using a browser.</string>
</property>
</widget>
</item>
<item row="0" column="0" colspan="3" alignment="Qt::AlignTop">
<widget class="QLabel" name="login_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Select login method</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="login_import_label">
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="text">
<string>Import from Epic Games Launcher</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QRadioButton" name="login_import_radio">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Import</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QRadioButton" name="login_browser_radio">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Browser</string>
</property>
</widget>
</item>
<item row="1" column="2" rowspan="2">
<spacer name="login_hspacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="button_layout">
<item>
<spacer name="button_hspacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="exit_button">
<property name="text">
<string>Exit</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="back_button">
<property name="text">
<string>Back</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="next_button">
<property name="text">
<string>Next</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget> </widget>
<resources/> </item>
<connections/> <item>
<spacer name="login_vspacer_bottom">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QStackedWidget" name="login_stack">
<property name="enabled">
<bool>true</bool>
</property>
<property name="minimumSize">
<size>
<width>480</width>
<height>135</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="login_page">
<property name="enabled">
<bool>true</bool>
</property>
<layout class="QGridLayout" name="login_page_layout">
<item row="1" column="1">
<widget class="QLabel" name="login_browser_label">
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="text">
<string>Login using a browser.</string>
</property>
</widget>
</item>
<item row="0" column="0" colspan="3" alignment="Qt::AlignTop">
<widget class="QLabel" name="login_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Select login method</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLabel" name="login_import_label">
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="text">
<string>Import from Epic Games Launcher</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QRadioButton" name="login_import_radio">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Import</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QRadioButton" name="login_browser_radio">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Browser</string>
</property>
</widget>
</item>
<item row="1" column="2" rowspan="2">
<spacer name="login_hspacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="button_layout">
<item>
<spacer name="button_hspacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="exit_button">
<property name="text">
<string>Exit</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="back_button">
<property name="text">
<string>Back</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="next_button">
<property name="text">
<string>Next</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui> </ui>

View file

@ -14,7 +14,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_LegendarySettings(object): class Ui_LegendarySettings(object):
def setupUi(self, LegendarySettings): def setupUi(self, LegendarySettings):
LegendarySettings.setObjectName("LegendarySettings") LegendarySettings.setObjectName("LegendarySettings")
LegendarySettings.resize(796, 732) LegendarySettings.resize(552, 268)
LegendarySettings.setWindowTitle("LegendarySettings") LegendarySettings.setWindowTitle("LegendarySettings")
self.settings_layout = QtWidgets.QHBoxLayout(LegendarySettings) self.settings_layout = QtWidgets.QHBoxLayout(LegendarySettings)
self.settings_layout.setObjectName("settings_layout") self.settings_layout.setObjectName("settings_layout")
@ -28,7 +28,7 @@ class Ui_LegendarySettings(object):
self.download_group = QtWidgets.QGroupBox(LegendarySettings) self.download_group = QtWidgets.QGroupBox(LegendarySettings)
self.download_group.setObjectName("download_group") self.download_group.setObjectName("download_group")
self.download_layout = QtWidgets.QFormLayout(self.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.download_layout.setObjectName("download_layout")
self.max_workers_label = QtWidgets.QLabel(self.download_group) self.max_workers_label = QtWidgets.QLabel(self.download_group)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Preferred) 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.disable_https_check.setObjectName("disable_https_check")
self.download_layout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.disable_https_check) self.download_layout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.disable_https_check)
self.left_layout.addWidget(self.download_group) 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) spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.left_layout.addItem(spacerItem) self.left_layout.addItem(spacerItem)
self.settings_layout.addLayout(self.left_layout) self.settings_layout.addLayout(self.left_layout)
self.right_layout = QtWidgets.QVBoxLayout() self.right_layout = QtWidgets.QVBoxLayout()
self.right_layout.setObjectName("right_layout") 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 = QtWidgets.QGroupBox(LegendarySettings)
self.cleanup_group.setObjectName("cleanup_group") self.cleanup_group.setObjectName("cleanup_group")
self.cleanup_layout = QtWidgets.QVBoxLayout(self.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.clean_button.setObjectName("clean_button")
self.cleanup_layout.addWidget(self.clean_button) self.cleanup_layout.addWidget(self.clean_button)
self.right_layout.addWidget(self.cleanup_group) 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) spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.right_layout.addItem(spacerItem1) self.right_layout.addItem(spacerItem1)
self.settings_layout.addLayout(self.right_layout) 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_label.setText(_translate("LegendarySettings", "Preferred CDN"))
self.preferred_cdn_line.setPlaceholderText(_translate("LegendarySettings", "Default")) self.preferred_cdn_line.setPlaceholderText(_translate("LegendarySettings", "Default"))
self.disable_https_label.setText(_translate("LegendarySettings", "Disable HTTPS")) self.disable_https_label.setText(_translate("LegendarySettings", "Disable HTTPS"))
self.egl_sync_group.setTitle(_translate("LegendarySettings", "Sync with Epic Games Launcher")) self.locale_group.setTitle(_translate("LegendarySettings", "Locale"))
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.cleanup_group.setTitle(_translate("LegendarySettings", "Cleanup")) self.cleanup_group.setTitle(_translate("LegendarySettings", "Cleanup"))
self.clean_keep_manifests_button.setText(_translate("LegendarySettings", "Clean, but keep manifests")) self.clean_keep_manifests_button.setText(_translate("LegendarySettings", "Clean, but keep manifests"))
self.clean_button.setText(_translate("LegendarySettings", "Remove everything")) 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__": if __name__ == "__main__":

View file

@ -6,8 +6,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>796</width> <width>552</width>
<height>732</height> <height>268</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -160,152 +160,6 @@
</layout> </layout>
</widget> </widget>
</item> </item>
<item>
<widget class="QGroupBox" name="egl_sync_group">
<property name="title">
<string>Sync with Epic Games Launcher</string>
</property>
<layout class="QVBoxLayout" name="egl_sync_layout">
<item>
<layout class="QVBoxLayout" name="manifest_path_layout"/>
</item>
<item>
<widget class="QLabel" name="manifest_path_info">
<property name="text">
<string notr="true">TextLabel</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="export_import_layout">
<item>
<widget class="QGroupBox" name="export_group">
<property name="title">
<string>Exportable Games</string>
</property>
<layout class="QVBoxLayout" name="export_layout">
<item>
<widget class="QLabel" name="export_label">
<property name="text">
<string>No games to export to EGS</string>
</property>
</widget>
</item>
<item>
<widget class="QScrollArea" name="export_scroll">
<property name="sizeAdjustPolicy">
<enum>QAbstractScrollArea::AdjustIgnored</enum>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="export_contents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>248</width>
<height>18</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QVBoxLayout" name="exportable_layout"/>
</widget>
</widget>
</item>
<item alignment="Qt::AlignRight">
<widget class="QPushButton" name="export_all_button">
<property name="text">
<string>Export all Games</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="import_group">
<property name="title">
<string>Importable</string>
</property>
<layout class="QVBoxLayout" name="import_layout">
<item>
<widget class="QLabel" name="import_label">
<property name="text">
<string>No games to import from EGS</string>
</property>
</widget>
</item>
<item>
<widget class="QScrollArea" name="import_scroll">
<property name="sizeAdjustPolicy">
<enum>QAbstractScrollArea::AdjustIgnored</enum>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="import_contents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>247</width>
<height>18</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QVBoxLayout" name="importable_layout"/>
</widget>
</widget>
</item>
<item alignment="Qt::AlignRight">
<widget class="QPushButton" name="import_all_button">
<property name="text">
<string>Import all Games</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</item>
<item>
<widget class="QGroupBox" name="enable_sync_group">
<property name="title">
<string>Enable Sync</string>
</property>
<layout class="QHBoxLayout" name="enable_sync_layout">
<item alignment="Qt::AlignRight">
<widget class="QPushButton" name="sync_once_button">
<property name="text">
<string>Sync once</string>
</property>
</widget>
</item>
<item alignment="Qt::AlignRight">
<widget class="QPushButton" name="enable_sync_button">
<property name="text">
<string>Enable automatic sync</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item> <item>
<spacer name="left_vspacer"> <spacer name="left_vspacer">
<property name="orientation"> <property name="orientation">
@ -323,6 +177,20 @@
</item> </item>
<item> <item>
<layout class="QVBoxLayout" name="right_layout"> <layout class="QVBoxLayout" name="right_layout">
<item>
<widget class="QGroupBox" name="locale_group">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>Locale</string>
</property>
<layout class="QVBoxLayout" name="locale_layout"/>
</widget>
</item>
<item> <item>
<widget class="QGroupBox" name="cleanup_group"> <widget class="QGroupBox" name="cleanup_group">
<property name="title"> <property name="title">
@ -346,63 +214,6 @@
</layout> </layout>
</widget> </widget>
</item> </item>
<item>
<widget class="QGroupBox" name="egl_sync">
<property name="title">
<string>EGL Sync</string>
</property>
<layout class="QVBoxLayout" name="egl_sync_layout_3">
<item>
<widget class="QPushButton" name="egl_sync_button">
<property name="text">
<string>Sync Settings</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="locale_gb">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>Locale</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QLineEdit" name="locale_lineedit">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="placeholderText">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="indicator_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item> <item>
<spacer name="right_vspacer"> <spacer name="right_vspacer">
<property name="orientation"> <property name="orientation">