1
0
Fork 0
mirror of synced 2024-06-28 11:11:15 +12:00

Merge pull request #220 from loathingKernel/fixups

Bug fixes for merged features
This commit is contained in:
Dummerle 2022-06-23 22:13:57 +02:00 committed by GitHub
commit 7cba799d21
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 534 additions and 471 deletions

View file

@ -91,7 +91,13 @@ class LaunchDialog(QDialog, Ui_LaunchDialog):
super(LaunchDialog, self).__init__(parent=parent) super(LaunchDialog, self).__init__(parent=parent)
self.setupUi(self) self.setupUi(self)
self.setAttribute(Qt.WA_DeleteOnClose, True) self.setAttribute(Qt.WA_DeleteOnClose, True)
self.setWindowFlags(Qt.Dialog | Qt.CustomizeWindowHint | Qt.WindowTitleHint) self.setWindowFlags(
Qt.Window
| Qt.Dialog
| Qt.CustomizeWindowHint
| Qt.WindowTitleHint
| Qt.WindowMinimizeButtonHint
)
self.setWindowModality(Qt.WindowModal) self.setWindowModality(Qt.WindowModal)
self.core = LegendaryCoreSingleton() self.core = LegendaryCoreSingleton()
@ -113,7 +119,8 @@ class LaunchDialog(QDialog, Ui_LaunchDialog):
except ValueError as e: except ValueError as e:
logger.info(str(e)) logger.info(str(e))
# Do not set parent, because it won't show a task bar icon # Do not set parent, because it won't show a task bar icon
do_launch = LoginDialog(core=self.core).login() # Update: Inherit the same parent as LaunchDialog
do_launch = LoginDialog(core=self.core, parent=self.parent()).login()
except ConnectionError as e: except ConnectionError as e:
logger.warning(e) logger.warning(e)
self.args.offline = True self.args.offline = True

View file

@ -2,13 +2,15 @@ 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 QSizePolicy, QLayout, QDialog, QMessageBox from PyQt5.QtWidgets import QLayout, QDialog, QMessageBox, QFrame
from legendary.core import LegendaryCore from legendary.core import LegendaryCore
from rare.components.dialogs.login.browser_login import BrowserLogin
from rare.components.dialogs.login.import_login import ImportLogin
from rare.shared import ArgumentsSingleton from rare.shared import ArgumentsSingleton
from rare.ui.components.dialogs.login.landing_page import Ui_LandingPage
from rare.ui.components.dialogs.login.login_dialog import Ui_LoginDialog from rare.ui.components.dialogs.login.login_dialog import Ui_LoginDialog
from rare.widgets.sliding_stack import SlidingStackedWidget
from .browser_login import BrowserLogin
from .import_login import ImportLogin
logger = getLogger("Login") logger = getLogger("Login")
@ -20,66 +22,81 @@ class LoginPages:
import_egl: int import_egl: int
class LoginDialog(QDialog, Ui_LoginDialog): class LandingPage(QFrame):
def __init__(self, parent=None):
super(LandingPage, self).__init__(parent=parent)
self.setFrameStyle(self.StyledPanel)
self.ui = Ui_LandingPage()
self.ui.setupUi(self)
class LoginDialog(QDialog):
logged_in: bool = False logged_in: bool = False
pages = LoginPages(landing=0, browser=1, import_egl=2) pages = LoginPages(landing=0, browser=1, import_egl=2)
def __init__(self, core: LegendaryCore, parent=None): def __init__(self, core: LegendaryCore, parent=None):
super(LoginDialog, self).__init__(parent=parent) super(LoginDialog, self).__init__(parent=parent)
self.setupUi(self) self.ui = Ui_LoginDialog()
self.ui.setupUi(self)
self.setAttribute(Qt.WA_DeleteOnClose, True) self.setAttribute(Qt.WA_DeleteOnClose, True)
self.setWindowFlags(Qt.WindowMinimizeButtonHint | Qt.WindowCloseButtonHint) self.setWindowFlags(
Qt.Window
| Qt.Dialog
| Qt.CustomizeWindowHint
| Qt.WindowTitleHint
| Qt.WindowMinimizeButtonHint
| Qt.WindowCloseButtonHint
)
self.setWindowModality(Qt.WindowModal) self.setWindowModality(Qt.WindowModal)
self.core = core self.core = core
self.args = ArgumentsSingleton() self.args = ArgumentsSingleton()
self.login_stack = SlidingStackedWidget(parent=self)
self.login_stack.setMinimumSize(480, 180)
self.ui.login_stack_layout.addWidget(self.login_stack)
self.landing_page = LandingPage(self.login_stack)
self.login_stack.insertWidget(self.pages.landing, self.landing_page)
self.browser_page = BrowserLogin(self.core, self.login_stack) self.browser_page = BrowserLogin(self.core, self.login_stack)
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(
lambda: self.next_button.setEnabled(self.browser_page.is_valid()) lambda: self.ui.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)
self.import_page.success.connect(self.login_successful) self.import_page.success.connect(self.login_successful)
self.import_page.changed.connect( self.import_page.changed.connect(lambda: self.ui.next_button.setEnabled(self.import_page.is_valid()))
lambda: self.next_button.setEnabled(self.import_page.is_valid())
)
self.next_button.setEnabled(False) self.ui.next_button.setEnabled(False)
self.back_button.setEnabled(False) self.ui.back_button.setEnabled(False)
self.login_browser_radio.clicked.connect( self.landing_page.ui.login_browser_radio.clicked.connect(lambda: self.ui.next_button.setEnabled(True))
lambda: self.next_button.setEnabled(True) self.landing_page.ui.login_import_radio.clicked.connect(lambda: self.ui.next_button.setEnabled(True))
) self.ui.exit_button.clicked.connect(self.close)
self.login_import_radio.clicked.connect( self.ui.back_button.clicked.connect(self.back_clicked)
lambda: self.next_button.setEnabled(True) self.ui.next_button.clicked.connect(self.next_clicked)
)
self.exit_button.clicked.connect(self.close)
self.back_button.clicked.connect(self.back_clicked)
self.next_button.clicked.connect(self.next_clicked)
self.login_stack.setCurrentIndex(self.pages.landing) self.login_stack.setCurrentIndex(self.pages.landing)
self.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
self.layout().setSizeConstraint(QLayout.SetFixedSize) self.layout().setSizeConstraint(QLayout.SetFixedSize)
# self.resize(self.minimumSizeHint())
def back_clicked(self): def back_clicked(self):
self.back_button.setEnabled(False) self.ui.back_button.setEnabled(False)
self.next_button.setEnabled(True) self.ui.next_button.setEnabled(True)
self.login_stack.setCurrentIndex(self.pages.landing) self.login_stack.slideInIndex(self.pages.landing)
def next_clicked(self): def next_clicked(self):
if self.login_stack.currentIndex() == self.pages.landing: if self.login_stack.currentIndex() == self.pages.landing:
if self.login_browser_radio.isChecked(): if self.landing_page.ui.login_browser_radio.isChecked():
self.login_stack.setCurrentIndex(self.pages.browser) self.login_stack.slideInIndex(self.pages.browser)
self.next_button.setEnabled(False) self.ui.next_button.setEnabled(False)
if self.login_import_radio.isChecked(): if self.landing_page.ui.login_import_radio.isChecked():
self.login_stack.setCurrentIndex(self.pages.import_egl) self.login_stack.slideInIndex(self.pages.import_egl)
self.next_button.setEnabled(self.import_page.is_valid()) self.ui.next_button.setEnabled(self.import_page.is_valid())
self.back_button.setEnabled(True) self.ui.back_button.setEnabled(True)
elif self.login_stack.currentIndex() == self.pages.browser: elif self.login_stack.currentIndex() == self.pages.browser:
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:
@ -100,6 +117,6 @@ class LoginDialog(QDialog, Ui_LoginDialog):
raise ValueError("Login failed.") raise ValueError("Login failed.")
except ValueError as e: except ValueError as e:
logger.error(str(e)) logger.error(str(e))
self.next_button.setEnabled(False) self.ui.next_button.setEnabled(False)
self.logged_in = False self.logged_in = False
QMessageBox.warning(self, "Error", str(e)) QMessageBox.warning(self, "Error", str(e))

View file

@ -4,10 +4,10 @@ from typing import Tuple
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, QApplication from PyQt5.QtWidgets import QFrame, qApp
from legendary.utils import webview_login
from legendary.core import LegendaryCore from legendary.core import LegendaryCore
from legendary.utils import webview_login
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 from rare.utils.extra_widgets import IndicatorLineEdit
from rare.utils.utils import icon from rare.utils.utils import icon
@ -15,33 +15,37 @@ from rare.utils.utils import icon
logger = getLogger("BrowserLogin") logger = getLogger("BrowserLogin")
class BrowserLogin(QWidget, Ui_BrowserLogin): class BrowserLogin(QFrame):
success = pyqtSignal() success = pyqtSignal()
changed = pyqtSignal() 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):
super(BrowserLogin, self).__init__(parent=parent) super(BrowserLogin, self).__init__(parent=parent)
self.setupUi(self) self.setFrameStyle(self.StyledPanel)
self.ui = Ui_BrowserLogin()
self.ui.setupUi(self)
self.core = core self.core = core
self.sid_edit = IndicatorLineEdit( self.sid_edit = IndicatorLineEdit(
placeholder=self.tr("Insert SID here"), edit_func=self.text_changed, parent=self placeholder=self.tr("Insert SID here"), edit_func=self.text_changed, parent=self
) )
self.link_text.setText(self.login_url) self.ui.link_text.setText(self.login_url)
self.copy_button.setIcon(icon("mdi.content-copy", "fa.copy")) self.ui.copy_button.setIcon(icon("mdi.content-copy", "fa.copy"))
self.copy_button.clicked.connect(self.copy_link) self.ui.copy_button.clicked.connect(self.copy_link)
self.sid_layout.addWidget(self.sid_edit) self.ui.sid_layout.addWidget(self.sid_edit)
self.open_button.clicked.connect(self.open_browser) self.ui.open_button.clicked.connect(self.open_browser)
self.sid_edit.textChanged.connect(self.changed.emit) self.sid_edit.textChanged.connect(self.changed.emit)
def copy_link(self): def copy_link(self):
clipboard = QApplication.instance().clipboard() clipboard = qApp.clipboard()
clipboard.setText(self.login_url) clipboard.setText(self.login_url)
self.status_label.setText(self.tr("Copied to clipboard")) self.ui.status_label.setText(self.tr("Copied to clipboard"))
def is_valid(self): def is_valid(self):
return self.sid_edit.is_valid return self.sid_edit.is_valid
@ -62,34 +66,28 @@ class BrowserLogin(QWidget, Ui_BrowserLogin):
return False, text, "" return False, text, ""
def do_login(self): def do_login(self):
self.status_label.setText(self.tr("Logging in...")) self.ui.status_label.setText(self.tr("Logging in..."))
sid = self.sid_edit.text() sid = self.sid_edit.text()
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):
logger.info( logger.info(f"Successfully logged in as {self.core.lgd.userdata['displayName']}")
f"Successfully logged in as {self.core.lgd.userdata['displayName']}"
)
self.success.emit() self.success.emit()
else: else:
self.status_label.setText(self.tr("Login failed.")) self.ui.status_label.setText(self.tr("Login failed."))
logger.warning("Failed to login through browser") logger.warning("Failed to login through browser")
except Exception as e: except Exception as e:
logger.warning(e) logger.warning(e)
def open_browser(self): def open_browser(self):
if webview_login.webview_available is False: if webview_login.webview_available is False:
logger.warning("You don't have webengine installed, " logger.warning("You don't have webengine installed, " "you will need to manually copy the SID.")
"you will need to manually copy the SID.")
QDesktopServices.openUrl(QUrl(self.login_url)) QDesktopServices.openUrl(QUrl(self.login_url))
else: else:
if webview_login.do_webview_login( if webview_login.do_webview_login(
callback_sid=self.core.auth_sid, callback_sid=self.core.auth_sid, callback_code=self.core.auth_code
callback_code=self.core.auth_code): ):
logger.info( logger.info("Successfully logged in as " f"{self.core.lgd.userdata['displayName']}")
"Successfully logged in as "
f"{self.core.lgd.userdata['displayName']}"
)
self.success.emit() self.success.emit()
else: else:
logger.warning("Failed to login through browser.") logger.warning("Failed to login through browser.")

View file

@ -3,64 +3,57 @@ from getpass import getuser
from logging import getLogger from logging import getLogger
from PyQt5.QtCore import pyqtSignal from PyQt5.QtCore import pyqtSignal
from PyQt5.QtWidgets import QWidget, QFileDialog from PyQt5.QtWidgets import QFrame, QFileDialog
from legendary.core import LegendaryCore from legendary.core import LegendaryCore
from rare.ui.components.dialogs.login.import_login import Ui_ImportLogin from rare.ui.components.dialogs.login.import_login import Ui_ImportLogin
logger = getLogger("ImportLogin") logger = getLogger("ImportLogin")
class ImportLogin(QWidget, Ui_ImportLogin): class ImportLogin(QFrame):
success = pyqtSignal() success = pyqtSignal()
changed = pyqtSignal() changed = pyqtSignal()
if os.name == "nt": if os.name == "nt":
localappdata = os.path.expandvars("%LOCALAPPDATA%") localappdata = os.path.expandvars("%LOCALAPPDATA%")
else: else:
localappdata = os.path.join( localappdata = os.path.join("drive_c/users", getuser(), "Local Settings/Application Data")
"drive_c/users", getuser(), "Local Settings/Application Data"
)
appdata_path = os.path.join(localappdata, "EpicGamesLauncher/Saved/Config/Windows") appdata_path = os.path.join(localappdata, "EpicGamesLauncher/Saved/Config/Windows")
found = False found = False
def __init__(self, core: LegendaryCore, parent=None): def __init__(self, core: LegendaryCore, parent=None):
super(ImportLogin, self).__init__(parent=parent) super(ImportLogin, self).__init__(parent=parent)
self.setupUi(self) self.setFrameStyle(self.StyledPanel)
self.ui = Ui_ImportLogin()
self.ui.setupUi(self)
self.core = core self.core = core
self.text_egl_found = self.tr( self.text_egl_found = self.tr("Found EGL Program Data. Click 'Next' to import them.")
"Found EGL Program Data. Click 'Next' to import them."
)
self.text_egl_notfound = self.tr("Could not find EGL Program Data. ") self.text_egl_notfound = self.tr("Could not find EGL Program Data. ")
if os.name == "nt": if os.name == "nt":
if not self.core.egl.appdata_path and os.path.exists(self.egl_data_path): if not self.core.egl.appdata_path and os.path.exists(self.appdata_path):
self.core.egl.appdata_path = self.appdata_path self.core.egl.appdata_path = self.appdata_path
if not self.core.egl.appdata_path: if not self.core.egl.appdata_path:
self.status_label.setText(self.text_egl_notfound) self.ui.status_label.setText(self.text_egl_notfound)
else: else:
self.status_label.setText(self.text_egl_found) self.ui.status_label.setText(self.text_egl_found)
self.found = True self.found = True
else: else:
self.info_label.setText( self.ui.info_label.setText(
self.tr( self.tr("Please select the Wine prefix" " where Epic Games Launcher is installed. ")
"Please select the Wine prefix" + self.ui.info_label.text()
" where Epic Games Launcher is installed. "
)
+ self.info_label.text()
) )
prefixes = self.get_wine_prefixes() prefixes = self.get_wine_prefixes()
if len(prefixes): if len(prefixes):
self.prefix_combo.addItems(prefixes) self.ui.prefix_combo.addItems(prefixes)
self.status_label.setText( self.ui.status_label.setText(self.tr("Select the Wine prefix you want to import."))
self.tr("Select the Wine prefix you want to import.")
)
else: else:
self.status_label.setText(self.text_egl_notfound) self.ui.status_label.setText(self.text_egl_notfound)
self.prefix_tool.clicked.connect(self.prefix_path) self.ui.prefix_tool.clicked.connect(self.prefix_path)
self.prefix_combo.editTextChanged.connect(self.changed.emit) self.ui.prefix_combo.editTextChanged.connect(self.changed.emit)
def get_wine_prefixes(self): def get_wine_prefixes(self):
possible_prefixes = [ possible_prefixes = [
@ -74,37 +67,31 @@ class ImportLogin(QWidget, Ui_ImportLogin):
return prefixes return prefixes
def prefix_path(self): def prefix_path(self):
prefix_dialog = QFileDialog( prefix_dialog = QFileDialog(self, self.tr("Choose path"), os.path.expanduser("~/"))
self, self.tr("Choose path"), os.path.expanduser("~/")
)
prefix_dialog.setFileMode(QFileDialog.DirectoryOnly) prefix_dialog.setFileMode(QFileDialog.DirectoryOnly)
if prefix_dialog.exec_(): if prefix_dialog.exec_():
names = prefix_dialog.selectedFiles() names = prefix_dialog.selectedFiles()
self.prefix_combo.setCurrentText(names[0]) self.ui.prefix_combo.setCurrentText(names[0])
def is_valid(self): def is_valid(self):
if os.name == "nt": if os.name == "nt":
return self.found return self.found
else: else:
return os.path.exists( return os.path.exists(os.path.join(self.ui.prefix_combo.currentText(), self.appdata_path))
os.path.join(self.prefix_combo.currentText(), self.appdata_path)
)
def do_login(self): def do_login(self):
self.status_label.setText(self.tr("Loading...")) self.ui.status_label.setText(self.tr("Loading..."))
if os.name == "nt": if os.name == "nt":
pass pass
else: else:
self.core.egl.appdata_path = os.path.join( self.core.egl.appdata_path = os.path.join(self.ui.prefix_combo.currentText(), self.appdata_path)
self.prefix_combo.currentText(), self.appdata_path
)
try: try:
if self.core.auth_import(): if self.core.auth_import():
logger.info(f"Logged in as {self.core.lgd.userdata['displayName']}") logger.info(f"Logged in as {self.core.lgd.userdata['displayName']}")
self.success.emit() self.success.emit()
else: else:
self.status_label.setText(self.tr("Login failed.")) self.ui.status_label.setText(self.tr("Login failed."))
logger.warning("Failed to import existing session.") logger.warning("Failed to import existing session.")
except Exception as e: except Exception as e:
self.status_label.setText(self.tr("Login failed. {}").format(str(e))) self.ui.status_label.setText(self.tr("Login failed. {}").format(str(e)))
logger.warning(f"Failed to import existing session: {e}") logger.warning(f"Failed to import existing session: {e}")

View file

@ -170,13 +170,7 @@ class GamesTab(QStackedWidget):
self.filter_games("") self.filter_games("")
def installation_started(self, app_name: str): def installation_started(self, app_name: str):
game = self.core.get_game(app_name, False)
if not game:
return
if game.is_dlc:
return
self.installing_widget.set_game(app_name) self.installing_widget.set_game(app_name)
self.installing_widget.setVisible(True)
i_widget, l_widget = self.widgets.get(app_name, (None, None)) i_widget, l_widget = self.widgets.get(app_name, (None, None))
if not i_widget or not l_widget: if not i_widget or not l_widget:

View file

@ -23,8 +23,8 @@ class GameDlc(QWidget, Ui_GameDlc):
self.game_utils = game_utils self.game_utils = game_utils
self.available_dlc_scroll.setProperty("noBorder", 1) self.available_dlc_scroll.setFrameStyle(QFrame.NoFrame)
self.installed_dlc_scroll.setProperty("noBorder", 1) self.installed_dlc_scroll.setFrameStyle(QFrame.NoFrame)
self.dlcs = dlcs self.dlcs = dlcs
self.installed_dlc_widgets = list() self.installed_dlc_widgets = list()
@ -37,6 +37,7 @@ class GameDlc(QWidget, Ui_GameDlc):
if self.installed_dlc_widgets: if self.installed_dlc_widgets:
for dlc_widget in self.installed_dlc_widgets: for dlc_widget in self.installed_dlc_widgets:
dlc_widget.uninstall.disconnect()
dlc_widget.deleteLater() dlc_widget.deleteLater()
self.installed_dlc_widgets.clear() self.installed_dlc_widgets.clear()
if self.available_dlc_widgets: if self.available_dlc_widgets:
@ -66,7 +67,7 @@ class GameDlc(QWidget, Ui_GameDlc):
def uninstall(self, app_name): def uninstall(self, app_name):
if self.game_utils.uninstall_game(app_name): if self.game_utils.uninstall_game(app_name):
self.update_dlcs(app_name) self.update_dlcs(self.game.app_name)
def install(self, app_name): def install(self, app_name):
if not self.core.is_installed(self.game.app_name): if not self.core.is_installed(self.game.app_name):
@ -116,7 +117,7 @@ class GameDlcWidget(QFrame, Ui_GameDlcWidget):
def uninstall_dlc(self): def uninstall_dlc(self):
self.action_button.setDisabled(True) self.action_button.setDisabled(True)
self.action_button.setText(self.tr("Uninstalling")) self.action_button.setText(self.tr("Uninstalling"))
self.uninstall.emit(self.dlc) self.uninstall.emit(self.dlc.app_name)
def install_game(self): def install_game(self):
self.action_button.setDisabled(True) self.action_button.setDisabled(True)

View file

@ -45,10 +45,13 @@ class InstallingGameWidget(QFrame):
self.setLayout(layout) self.setLayout(layout)
def set_game(self, app_name): def set_game(self, app_name):
if not app_name: self.game = self.core.get_game(app_name, False)
if (not self.game) or self.game.is_dlc:
# Don't show for EOS Overlay or DLCs
self.game = None self.game = None
self.setVisible(False)
return return
self.game = self.core.get_game(app_name) self.setVisible(True)
self.title_label.setText(f"<h4>{self.game.app_title}</h4>") self.title_label.setText(f"<h4>{self.game.app_title}</h4>")
self.image.hideProgress(True) self.image.hideProgress(True)
self.image.showProgress( self.image.showProgress(
@ -57,4 +60,7 @@ class InstallingGameWidget(QFrame):
) )
def set_status(self, s: int): def set_status(self, s: int):
if not self.game:
# Don't show for EOS Overlay or DLCs
return
self.image.updateProgress(s) self.image.updateProgress(s)

View file

@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'rare/ui/components/dialogs/login/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.6 # Created by: PyQt5 UI code generator 5.15.7
# #
# WARNING: Any manual changes made to this file will be lost when pyuic5 is # WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing. # run again. Do not edit this file unless you know what you are doing.
@ -14,29 +14,32 @@ 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(426, 210) BrowserLogin.resize(400, 200)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(BrowserLogin.sizePolicy().hasHeightForWidth())
BrowserLogin.setSizePolicy(sizePolicy)
BrowserLogin.setWindowTitle("BrowserLogin") BrowserLogin.setWindowTitle("BrowserLogin")
self.browser_layout = QtWidgets.QGridLayout(BrowserLogin) self.browser_layout = QtWidgets.QGridLayout(BrowserLogin)
self.browser_layout.setSizeConstraint(QtWidgets.QLayout.SetDefaultConstraint)
self.browser_layout.setObjectName("browser_layout") self.browser_layout.setObjectName("browser_layout")
self.horizontalLayout = QtWidgets.QHBoxLayout() self.link_layout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout") self.link_layout.setObjectName("link_layout")
self.link_text = QtWidgets.QLineEdit(BrowserLogin) self.link_text = QtWidgets.QLineEdit(BrowserLogin)
self.link_text.setText("") self.link_text.setText("")
self.link_text.setAlignment(QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft | QtCore.Qt.AlignTop) self.link_text.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
self.link_text.setReadOnly(True) self.link_text.setReadOnly(True)
self.link_text.setPlaceholderText("") self.link_text.setPlaceholderText("")
self.link_text.setObjectName("link_text") self.link_text.setObjectName("link_text")
self.horizontalLayout.addWidget(self.link_text) self.link_layout.addWidget(self.link_text)
self.copy_button = QtWidgets.QPushButton(BrowserLogin) self.copy_button = QtWidgets.QPushButton(BrowserLogin)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Maximum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.copy_button.sizePolicy().hasHeightForWidth())
self.copy_button.setSizePolicy(sizePolicy)
self.copy_button.setText("") self.copy_button.setText("")
self.copy_button.setObjectName("copy_button") self.copy_button.setObjectName("copy_button")
self.horizontalLayout.addWidget(self.copy_button) self.link_layout.addWidget(self.copy_button)
self.browser_layout.addLayout(self.horizontalLayout, 2, 0, 1, 3) self.browser_layout.addLayout(self.link_layout, 2, 0, 1, 2)
spacerItem = QtWidgets.QSpacerItem(0, 0, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.browser_layout.addItem(spacerItem, 4, 0, 1, 2)
self.open_button = QtWidgets.QPushButton(BrowserLogin) self.open_button = QtWidgets.QPushButton(BrowserLogin)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Maximum) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Maximum)
sizePolicy.setHorizontalStretch(0) sizePolicy.setHorizontalStretch(0)
@ -45,33 +48,28 @@ class Ui_BrowserLogin(object):
self.open_button.setSizePolicy(sizePolicy) self.open_button.setSizePolicy(sizePolicy)
self.open_button.setObjectName("open_button") self.open_button.setObjectName("open_button")
self.browser_layout.addWidget(self.open_button, 1, 0, 1, 1) self.browser_layout.addWidget(self.open_button, 1, 0, 1, 1)
self.info_label = QtWidgets.QLabel(BrowserLogin) self.sid_layout = QtWidgets.QHBoxLayout()
font = QtGui.QFont() self.sid_layout.setObjectName("sid_layout")
font.setItalic(True) self.browser_layout.addLayout(self.sid_layout, 1, 1, 1, 1)
self.info_label.setFont(font)
self.info_label.setWordWrap(True)
self.info_label.setObjectName("info_label")
self.browser_layout.addWidget(self.info_label, 4, 0, 1, 3)
self.title_label = QtWidgets.QLabel(BrowserLogin) self.title_label = QtWidgets.QLabel(BrowserLogin)
font = QtGui.QFont() font = QtGui.QFont()
font.setBold(True) font.setBold(True)
font.setWeight(75) font.setWeight(75)
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, 3, QtCore.Qt.AlignTop) self.browser_layout.addWidget(self.title_label, 0, 0, 1, 2)
self.info_label = QtWidgets.QLabel(BrowserLogin)
font = QtGui.QFont()
font.setItalic(True)
self.info_label.setFont(font)
self.info_label.setWordWrap(True)
self.info_label.setObjectName("info_label")
self.browser_layout.addWidget(self.info_label, 5, 0, 1, 2)
self.status_label = QtWidgets.QLabel(BrowserLogin) self.status_label = QtWidgets.QLabel(BrowserLogin)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.status_label.sizePolicy().hasHeightForWidth())
self.status_label.setSizePolicy(sizePolicy)
self.status_label.setText("") self.status_label.setText("")
self.status_label.setAlignment(QtCore.Qt.AlignBottom | QtCore.Qt.AlignLeading | QtCore.Qt.AlignLeft) self.status_label.setAlignment(QtCore.Qt.AlignBottom|QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft)
self.status_label.setObjectName("status_label") self.status_label.setObjectName("status_label")
self.browser_layout.addWidget(self.status_label, 3, 0, 1, 3) self.browser_layout.addWidget(self.status_label, 3, 0, 1, 2)
self.sid_layout = QtWidgets.QHBoxLayout()
self.sid_layout.setObjectName("sid_layout")
self.browser_layout.addLayout(self.sid_layout, 1, 1, 1, 2)
self.retranslateUi(BrowserLogin) self.retranslateUi(BrowserLogin)
QtCore.QMetaObject.connectSlotsByName(BrowserLogin) QtCore.QMetaObject.connectSlotsByName(BrowserLogin)
@ -79,9 +77,8 @@ class Ui_BrowserLogin(object):
def retranslateUi(self, BrowserLogin): def retranslateUi(self, BrowserLogin):
_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.info_label.setText(_translate("BrowserLogin",
"Click the button to open the login page in a browser or copy the link and paste it in a browser. After logging in, copy the SID code in the input above."))
self.title_label.setText(_translate("BrowserLogin", "Login through browser")) self.title_label.setText(_translate("BrowserLogin", "Login through browser"))
self.info_label.setText(_translate("BrowserLogin", "Click the button to open the login page in a browser or copy the link and paste it in a browser. After logging in, copy the SID code in the input above."))
if __name__ == "__main__": if __name__ == "__main__":

View file

@ -6,16 +6,19 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>426</width> <width>246</width>
<height>210</height> <height>184</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="2" column="0" colspan="3"> <property name="sizeConstraint">
<layout class="QHBoxLayout" name="horizontalLayout"> <enum>QLayout::SetDefaultConstraint</enum>
</property>
<item row="2" column="0" colspan="2">
<layout class="QHBoxLayout" name="link_layout">
<item> <item>
<widget class="QLineEdit" name="link_text"> <widget class="QLineEdit" name="link_text">
<property name="text"> <property name="text">
@ -34,19 +37,26 @@
</item> </item>
<item> <item>
<widget class="QPushButton" name="copy_button"> <widget class="QPushButton" name="copy_button">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text"> <property name="text">
<string/> <string notr="true"/>
</property> </property>
</widget> </widget>
</item> </item>
</layout> </layout>
</item> </item>
<item row="4" column="0" colspan="2">
<spacer name="vspacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0"> <item row="1" column="0">
<widget class="QPushButton" name="open_button"> <widget class="QPushButton" name="open_button">
<property name="sizePolicy"> <property name="sizePolicy">
@ -60,24 +70,10 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="0" colspan="3"> <item row="1" column="1">
<widget class="QLabel" name="info_label"> <layout class="QHBoxLayout" name="sid_layout"/>
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="text">
<string>Click the button to open the login page in a browser or copy the link and paste it 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>
<item row="0" column="0" colspan="3" alignment="Qt::AlignTop"> <item row="0" column="0" colspan="2">
<widget class="QLabel" name="title_label"> <widget class="QLabel" name="title_label">
<property name="font"> <property name="font">
<font> <font>
@ -90,14 +86,23 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="0" colspan="3"> <item row="5" column="0" colspan="2">
<widget class="QLabel" name="status_label"> <widget class="QLabel" name="info_label">
<property name="sizePolicy"> <property name="font">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum"> <font>
<horstretch>0</horstretch> <italic>true</italic>
<verstretch>0</verstretch> </font>
</sizepolicy>
</property> </property>
<property name="text">
<string>Click the button to open the login page in a browser or copy the link and paste it 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="3" column="0" colspan="2">
<widget class="QLabel" name="status_label">
<property name="text"> <property name="text">
<string notr="true"/> <string notr="true"/>
</property> </property>
@ -106,9 +111,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="1" colspan="2">
<layout class="QHBoxLayout" name="sid_layout"/>
</item>
</layout> </layout>
</widget> </widget>
<resources/> <resources/>

View file

@ -1,8 +1,8 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'import_login.ui' # Form implementation generated from reading ui file 'rare/ui/components/dialogs/login/import_login.ui'
# #
# Created by: PyQt5 UI code generator 5.15.4 # Created by: PyQt5 UI code generator 5.15.7
# #
# WARNING: Any manual changes made to this file will be lost when pyuic5 is # WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing. # run again. Do not edit this file unless you know what you are doing.
@ -14,24 +14,29 @@ from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_ImportLogin(object): class Ui_ImportLogin(object):
def setupUi(self, ImportLogin): def setupUi(self, ImportLogin):
ImportLogin.setObjectName("ImportLogin") ImportLogin.setObjectName("ImportLogin")
ImportLogin.resize(503, 173) ImportLogin.resize(400, 200)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(ImportLogin.sizePolicy().hasHeightForWidth())
ImportLogin.setSizePolicy(sizePolicy)
ImportLogin.setWindowTitle("ImportLogin") ImportLogin.setWindowTitle("ImportLogin")
self.import_layout = QtWidgets.QGridLayout(ImportLogin) self.import_layout = QtWidgets.QGridLayout(ImportLogin)
self.import_layout.setSizeConstraint(QtWidgets.QLayout.SetDefaultConstraint)
self.import_layout.setObjectName("import_layout") self.import_layout.setObjectName("import_layout")
self.info_label = QtWidgets.QLabel(ImportLogin) self.prefix_label = QtWidgets.QLabel(ImportLogin)
font = QtGui.QFont() self.prefix_label.setObjectName("prefix_label")
font.setItalic(True) self.import_layout.addWidget(self.prefix_label, 1, 0, 1, 1)
self.info_label.setFont(font)
self.info_label.setWordWrap(True)
self.info_label.setObjectName("info_label")
self.import_layout.addWidget(self.info_label, 3, 0, 1, 3, QtCore.Qt.AlignBottom)
self.title_label = QtWidgets.QLabel(ImportLogin) self.title_label = QtWidgets.QLabel(ImportLogin)
font = QtGui.QFont() font = QtGui.QFont()
font.setBold(True) font.setBold(True)
font.setWeight(75) font.setWeight(75)
self.title_label.setFont(font) self.title_label.setFont(font)
self.title_label.setObjectName("title_label") self.title_label.setObjectName("title_label")
self.import_layout.addWidget(self.title_label, 0, 0, 1, 3, QtCore.Qt.AlignTop) self.import_layout.addWidget(self.title_label, 0, 0, 1, 3)
self.prefix_tool = QtWidgets.QToolButton(ImportLogin)
self.prefix_tool.setObjectName("prefix_tool")
self.import_layout.addWidget(self.prefix_tool, 1, 2, 1, 1)
self.prefix_combo = QtWidgets.QComboBox(ImportLogin) self.prefix_combo = QtWidgets.QComboBox(ImportLogin)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0) sizePolicy.setHorizontalStretch(0)
@ -41,39 +46,36 @@ class Ui_ImportLogin(object):
self.prefix_combo.setEditable(True) self.prefix_combo.setEditable(True)
self.prefix_combo.setObjectName("prefix_combo") self.prefix_combo.setObjectName("prefix_combo")
self.import_layout.addWidget(self.prefix_combo, 1, 1, 1, 1) self.import_layout.addWidget(self.prefix_combo, 1, 1, 1, 1)
self.prefix_label = QtWidgets.QLabel(ImportLogin)
self.prefix_label.setObjectName("prefix_label")
self.import_layout.addWidget(self.prefix_label, 1, 0, 1, 1)
self.prefix_tool = QtWidgets.QToolButton(ImportLogin)
self.prefix_tool.setObjectName("prefix_tool")
self.import_layout.addWidget(self.prefix_tool, 1, 2, 1, 1)
self.status_label = QtWidgets.QLabel(ImportLogin) self.status_label = QtWidgets.QLabel(ImportLogin)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.status_label.sizePolicy().hasHeightForWidth())
self.status_label.setSizePolicy(sizePolicy)
font = QtGui.QFont() font = QtGui.QFont()
font.setItalic(True) font.setItalic(True)
self.status_label.setFont(font) self.status_label.setFont(font)
self.status_label.setText("") self.status_label.setText("")
self.status_label.setObjectName("status_label") self.status_label.setObjectName("status_label")
self.import_layout.addWidget(self.status_label, 2, 1, 1, 2) self.import_layout.addWidget(self.status_label, 2, 1, 1, 2)
self.info_label = QtWidgets.QLabel(ImportLogin)
font = QtGui.QFont()
font.setItalic(True)
self.info_label.setFont(font)
self.info_label.setWordWrap(True)
self.info_label.setObjectName("info_label")
self.import_layout.addWidget(self.info_label, 4, 0, 1, 3)
spacerItem = QtWidgets.QSpacerItem(0, 0, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.import_layout.addItem(spacerItem, 3, 0, 1, 3)
self.retranslateUi(ImportLogin) self.retranslateUi(ImportLogin)
QtCore.QMetaObject.connectSlotsByName(ImportLogin) QtCore.QMetaObject.connectSlotsByName(ImportLogin)
def retranslateUi(self, ImportLogin): def retranslateUi(self, ImportLogin):
_translate = QtCore.QCoreApplication.translate _translate = QtCore.QCoreApplication.translate
self.info_label.setText(_translate("ImportLogin", "You will get logged out from EGL in the process."))
self.title_label.setText(_translate("ImportLogin", "Import existing session from EGL"))
self.prefix_label.setText(_translate("ImportLogin", "Select path")) self.prefix_label.setText(_translate("ImportLogin", "Select path"))
self.title_label.setText(_translate("ImportLogin", "Import existing session from EGL"))
self.prefix_tool.setText(_translate("ImportLogin", "Browse")) self.prefix_tool.setText(_translate("ImportLogin", "Browse"))
self.info_label.setText(_translate("ImportLogin", "You will get logged out from EGL in the process."))
if __name__ == "__main__": if __name__ == "__main__":
import sys import sys
app = QtWidgets.QApplication(sys.argv) app = QtWidgets.QApplication(sys.argv)
ImportLogin = QtWidgets.QWidget() ImportLogin = QtWidgets.QWidget()
ui = Ui_ImportLogin() ui = Ui_ImportLogin()

View file

@ -1,94 +1,107 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0"> <ui version="4.0">
<class>ImportLogin</class> <class>ImportLogin</class>
<widget class="QWidget" name="ImportLogin"> <widget class="QWidget" name="ImportLogin">
<property name="geometry"> <property name="geometry">
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>503</width> <width>235</width>
<height>173</height> <height>120</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
<string notr="true">ImportLogin</string> <string notr="true">ImportLogin</string>
</property> </property>
<layout class="QGridLayout" name="import_layout"> <layout class="QGridLayout" name="import_layout">
<item row="3" column="0" colspan="3" alignment="Qt::AlignBottom"> <property name="sizeConstraint">
<widget class="QLabel" name="info_label"> <enum>QLayout::SetDefaultConstraint</enum>
<property name="font"> </property>
<font> <item row="1" column="0">
<italic>true</italic> <widget class="QLabel" name="prefix_label">
</font> <property name="text">
</property> <string>Select path</string>
<property name="text"> </property>
<string>You will get logged out from EGL in the process.</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="0" colspan="3" 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>Import existing session from EGL</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="prefix_combo">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="editable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="prefix_label">
<property name="text">
<string>Select path</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QToolButton" name="prefix_tool">
<property name="text">
<string>Browse</string>
</property>
</widget>
</item>
<item row="2" column="1" colspan="2">
<widget class="QLabel" name="status_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="text">
<string notr="true"/>
</property>
</widget>
</item>
</layout>
</widget> </widget>
<resources/> </item>
<connections/> <item row="0" column="0" colspan="3">
<widget class="QLabel" name="title_label">
<property name="font">
<font>
<weight>75</weight>
<bold>true</bold>
</font>
</property>
<property name="text">
<string>Import existing session from EGL</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QToolButton" name="prefix_tool">
<property name="text">
<string>Browse</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="prefix_combo">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="editable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="1" colspan="2">
<widget class="QLabel" name="status_label">
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="text">
<string notr="true"/>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="0" colspan="3">
<widget class="QLabel" name="info_label">
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="text">
<string>You will get logged out from EGL in the process.</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item row="3" column="0" colspan="3">
<spacer name="vspacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui> </ui>

View file

@ -0,0 +1,86 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'rare/ui/components/dialogs/login/landing_page.ui'
#
# Created by: PyQt5 UI code generator 5.15.7
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_LandingPage(object):
def setupUi(self, LandingPage):
LandingPage.setObjectName("LandingPage")
LandingPage.resize(400, 200)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(LandingPage.sizePolicy().hasHeightForWidth())
LandingPage.setSizePolicy(sizePolicy)
self.landing_layout = QtWidgets.QGridLayout(LandingPage)
self.landing_layout.setSizeConstraint(QtWidgets.QLayout.SetDefaultConstraint)
self.landing_layout.setObjectName("landing_layout")
self.login_label = QtWidgets.QLabel(LandingPage)
font = QtGui.QFont()
font.setBold(True)
font.setWeight(75)
self.login_label.setFont(font)
self.login_label.setObjectName("login_label")
self.landing_layout.addWidget(self.login_label, 0, 0, 1, 3)
self.login_browser_radio = QtWidgets.QRadioButton(LandingPage)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.login_browser_radio.sizePolicy().hasHeightForWidth())
self.login_browser_radio.setSizePolicy(sizePolicy)
self.login_browser_radio.setObjectName("login_browser_radio")
self.landing_layout.addWidget(self.login_browser_radio, 1, 0, 1, 1)
self.login_browser_label = QtWidgets.QLabel(LandingPage)
font = QtGui.QFont()
font.setItalic(True)
self.login_browser_label.setFont(font)
self.login_browser_label.setObjectName("login_browser_label")
self.landing_layout.addWidget(self.login_browser_label, 1, 1, 1, 1)
self.login_import_radio = QtWidgets.QRadioButton(LandingPage)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.login_import_radio.sizePolicy().hasHeightForWidth())
self.login_import_radio.setSizePolicy(sizePolicy)
self.login_import_radio.setObjectName("login_import_radio")
self.landing_layout.addWidget(self.login_import_radio, 2, 0, 1, 1)
self.login_import_label = QtWidgets.QLabel(LandingPage)
font = QtGui.QFont()
font.setItalic(True)
self.login_import_label.setFont(font)
self.login_import_label.setObjectName("login_import_label")
self.landing_layout.addWidget(self.login_import_label, 2, 1, 1, 1)
spacerItem = QtWidgets.QSpacerItem(0, 0, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.landing_layout.addItem(spacerItem, 1, 2, 2, 1)
self.landing_layout.setRowStretch(1, 1)
self.landing_layout.setRowStretch(2, 1)
self.retranslateUi(LandingPage)
QtCore.QMetaObject.connectSlotsByName(LandingPage)
def retranslateUi(self, LandingPage):
_translate = QtCore.QCoreApplication.translate
LandingPage.setWindowTitle(_translate("LandingPage", "LandingPage"))
self.login_label.setText(_translate("LandingPage", "Select login method"))
self.login_browser_radio.setText(_translate("LandingPage", "Browser"))
self.login_browser_label.setText(_translate("LandingPage", "Login using a browser."))
self.login_import_radio.setText(_translate("LandingPage", "Import"))
self.login_import_label.setText(_translate("LandingPage", "Import from Epic Games Launcher"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
LandingPage = QtWidgets.QWidget()
ui = Ui_LandingPage()
ui.setupUi(LandingPage)
LandingPage.show()
sys.exit(app.exec_())

View file

@ -0,0 +1,100 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>LandingPage</class>
<widget class="QWidget" name="LandingPage">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>295</width>
<height>78</height>
</rect>
</property>
<property name="windowTitle">
<string>LandingPage</string>
</property>
<layout class="QGridLayout" name="landing_layout" rowstretch="0,1,1">
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<item row="0" column="0" colspan="3">
<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="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="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="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="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="1" column="2" rowspan="2">
<spacer name="login_hspacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View file

@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'rare/ui/components/dialogs/login/login_dialog.ui' # Form implementation generated from reading ui file 'rare/ui/components/dialogs/login/login_dialog.ui'
# #
# Created by: PyQt5 UI code generator 5.15.6 # Created by: PyQt5 UI code generator 5.15.7
# #
# WARNING: Any manual changes made to this file will be lost when pyuic5 is # WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing. # run again. Do not edit this file unless you know what you are doing.
@ -14,71 +14,23 @@ from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_LoginDialog(object): class Ui_LoginDialog(object):
def setupUi(self, LoginDialog): def setupUi(self, LoginDialog):
LoginDialog.setObjectName("LoginDialog") LoginDialog.setObjectName("LoginDialog")
LoginDialog.resize(492, 267) LoginDialog.resize(324, 132)
self.login_layout = QtWidgets.QVBoxLayout(LoginDialog) self.login_layout = QtWidgets.QVBoxLayout(LoginDialog)
self.login_layout.setSizeConstraint(QtWidgets.QLayout.SetFixedSize)
self.login_layout.setObjectName("login_layout") self.login_layout.setObjectName("login_layout")
spacerItem = QtWidgets.QSpacerItem(0, 17, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) spacerItem = QtWidgets.QSpacerItem(0, 17, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
self.login_layout.addItem(spacerItem) self.login_layout.addItem(spacerItem)
self.welcome_label = QtWidgets.QLabel(LoginDialog) self.welcome_label = QtWidgets.QLabel(LoginDialog)
self.welcome_label.setObjectName("welcome_label") self.welcome_label.setObjectName("welcome_label")
self.login_layout.addWidget(self.welcome_label) self.login_layout.addWidget(self.welcome_label)
spacerItem1 = QtWidgets.QSpacerItem(0, 17, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) spacerItem1 = QtWidgets.QSpacerItem(0, 17, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
self.login_layout.addItem(spacerItem1) self.login_layout.addItem(spacerItem1)
self.login_stack = QtWidgets.QStackedWidget(LoginDialog) self.login_stack_layout = QtWidgets.QVBoxLayout()
self.login_stack.setEnabled(True) self.login_stack_layout.setObjectName("login_stack_layout")
self.login_stack.setMinimumSize(QtCore.QSize(480, 135)) self.login_layout.addLayout(self.login_stack_layout)
self.login_stack.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.login_stack.setFrameShadow(QtWidgets.QFrame.Raised)
self.login_stack.setObjectName("login_stack")
self.login_page = QtWidgets.QWidget()
self.login_page.setEnabled(True)
self.login_page.setObjectName("login_page")
self.login_page_layout = QtWidgets.QGridLayout(self.login_page)
self.login_page_layout.setObjectName("login_page_layout")
self.login_browser_label = QtWidgets.QLabel(self.login_page)
font = QtGui.QFont()
font.setItalic(True)
self.login_browser_label.setFont(font)
self.login_browser_label.setObjectName("login_browser_label")
self.login_page_layout.addWidget(self.login_browser_label, 1, 1, 1, 1)
self.login_label = QtWidgets.QLabel(self.login_page)
font = QtGui.QFont()
font.setBold(True)
font.setWeight(75)
self.login_label.setFont(font)
self.login_label.setObjectName("login_label")
self.login_page_layout.addWidget(self.login_label, 0, 0, 1, 3, QtCore.Qt.AlignTop)
self.login_import_label = QtWidgets.QLabel(self.login_page)
font = QtGui.QFont()
font.setItalic(True)
self.login_import_label.setFont(font)
self.login_import_label.setObjectName("login_import_label")
self.login_page_layout.addWidget(self.login_import_label, 2, 1, 1, 1)
self.login_import_radio = QtWidgets.QRadioButton(self.login_page)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.login_import_radio.sizePolicy().hasHeightForWidth())
self.login_import_radio.setSizePolicy(sizePolicy)
self.login_import_radio.setObjectName("login_import_radio")
self.login_page_layout.addWidget(self.login_import_radio, 2, 0, 1, 1)
spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.login_page_layout.addItem(spacerItem2, 1, 2, 2, 1)
self.login_browser_radio = QtWidgets.QRadioButton(self.login_page)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.login_browser_radio.sizePolicy().hasHeightForWidth())
self.login_browser_radio.setSizePolicy(sizePolicy)
self.login_browser_radio.setObjectName("login_browser_radio")
self.login_page_layout.addWidget(self.login_browser_radio, 1, 0, 1, 1)
self.login_stack.addWidget(self.login_page)
self.login_layout.addWidget(self.login_stack)
self.button_layout = QtWidgets.QHBoxLayout() self.button_layout = QtWidgets.QHBoxLayout()
self.button_layout.setObjectName("button_layout") self.button_layout.setObjectName("button_layout")
spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.button_layout.addItem(spacerItem3) self.button_layout.addItem(spacerItem2)
self.exit_button = QtWidgets.QPushButton(LoginDialog) self.exit_button = QtWidgets.QPushButton(LoginDialog)
self.exit_button.setObjectName("exit_button") self.exit_button.setObjectName("exit_button")
self.button_layout.addWidget(self.exit_button) self.button_layout.addWidget(self.exit_button)
@ -91,18 +43,12 @@ class Ui_LoginDialog(object):
self.login_layout.addLayout(self.button_layout) self.login_layout.addLayout(self.button_layout)
self.retranslateUi(LoginDialog) self.retranslateUi(LoginDialog)
self.login_stack.setCurrentIndex(0)
QtCore.QMetaObject.connectSlotsByName(LoginDialog) QtCore.QMetaObject.connectSlotsByName(LoginDialog)
def retranslateUi(self, LoginDialog): def retranslateUi(self, LoginDialog):
_translate = QtCore.QCoreApplication.translate _translate = QtCore.QCoreApplication.translate
LoginDialog.setWindowTitle(_translate("LoginDialog", "Rare Login")) LoginDialog.setWindowTitle(_translate("LoginDialog", "Rare Login"))
self.welcome_label.setText(_translate("LoginDialog", "<h1>Welcome to Rare</h1>")) self.welcome_label.setText(_translate("LoginDialog", "<h1>Welcome to Rare</h1>"))
self.login_browser_label.setText(_translate("LoginDialog", "Login using a browser."))
self.login_label.setText(_translate("LoginDialog", "Select login method"))
self.login_import_label.setText(_translate("LoginDialog", "Import from Epic Games Launcher"))
self.login_import_radio.setText(_translate("LoginDialog", "Import"))
self.login_browser_radio.setText(_translate("LoginDialog", "Browser"))
self.exit_button.setText(_translate("LoginDialog", "Exit")) self.exit_button.setText(_translate("LoginDialog", "Exit"))
self.back_button.setText(_translate("LoginDialog", "Back")) self.back_button.setText(_translate("LoginDialog", "Back"))
self.next_button.setText(_translate("LoginDialog", "Next")) self.next_button.setText(_translate("LoginDialog", "Next"))

View file

@ -6,19 +6,22 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>492</width> <width>324</width>
<height>267</height> <height>132</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
<string>Rare Login</string> <string>Rare Login</string>
</property> </property>
<layout class="QVBoxLayout" name="login_layout"> <layout class="QVBoxLayout" name="login_layout" stretch="0,0,0,0,0">
<property name="sizeConstraint">
<enum>QLayout::SetFixedSize</enum>
</property>
<item> <item>
<spacer name="login_vspacer_top"> <spacer name="login_vspacer_top">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0"> <property name="sizeHint" stdset="0">
<size> <size>
<width>0</width> <width>0</width>
@ -36,6 +39,12 @@
</item> </item>
<item> <item>
<spacer name="login_vspacer_bottom"> <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"> <property name="sizeHint" stdset="0">
<size> <size>
<width>0</width> <width>0</width>
@ -45,109 +54,7 @@
</spacer> </spacer>
</item> </item>
<item> <item>
<widget class="QStackedWidget" name="login_stack"> <layout class="QVBoxLayout" name="login_stack_layout"/>
<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="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>
<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>
</layout>
</widget>
</widget>
</item> </item>
<item> <item>
<layout class="QHBoxLayout" name="button_layout"> <layout class="QHBoxLayout" name="button_layout">