diff --git a/rare/components/dialogs/install_dialog.py b/rare/components/dialogs/install_dialog.py
index 418de908..2e2053cf 100644
--- a/rare/components/dialogs/install_dialog.py
+++ b/rare/components/dialogs/install_dialog.py
@@ -114,6 +114,7 @@ class InstallDialog(QDialog, Ui_InstallDialog):
self.dl_item.options.sdl_list = ['']
for cb in self.sdl_list_checks:
if data := cb.isChecked():
+ # noinspection PyTypeChecker
self.dl_item.options.sdl_list.extend(data)
def get_download_info(self):
diff --git a/rare/components/tabs/games/game_info/__init__.py b/rare/components/tabs/games/game_info/__init__.py
index f0da5f6d..5e4aa169 100644
--- a/rare/components/tabs/games/game_info/__init__.py
+++ b/rare/components/tabs/games/game_info/__init__.py
@@ -1,22 +1,12 @@
-import json
-import os
-import platform
-
-from PyQt5.QtCore import Qt, pyqtSignal
+from PyQt5.QtCore import Qt
from PyQt5.QtGui import QKeyEvent
-from PyQt5.QtWidgets import QWidget, QTabWidget, QMessageBox
+from PyQt5.QtWidgets import QWidget, QTabWidget
from qtawesome import icon
-from legendary.core import LegendaryCore
-from legendary.models.game import Game, InstalledGame
-from rare import data_dir
from rare.components.tabs.games.game_info.game_dlc import GameDlc
+from rare.components.tabs.games.game_info.game_info import GameInfo
from rare.components.tabs.games.game_info.game_settings import GameSettings
-from rare.ui.components.tabs.games.game_info.game_info import Ui_GameInfo
from rare.utils.extra_widgets import SideTabBar
-from rare.utils.legendary_utils import VerifyThread
-from rare.utils.steam_grades import SteamWorker
-from rare.utils.utils import get_size, get_pixmap
class InfoTabs(QTabWidget):
@@ -58,113 +48,3 @@ class InfoTabs(QTabWidget):
def keyPressEvent(self, e: QKeyEvent):
if e.key() == Qt.Key_Escape:
self.parent().layout.setCurrentIndex(0)
-
-
-class GameInfo(QWidget, Ui_GameInfo):
- igame: InstalledGame
- game: Game
- uninstall_game = pyqtSignal(str)
- update_list = pyqtSignal(str)
- verify_game = pyqtSignal(str)
- verify_threads = {}
-
- def __init__(self, core: LegendaryCore, parent):
- super(GameInfo, self).__init__(parent=parent)
- self.setupUi(self)
- self.core = core
-
-
- self.ratings = {"platinum": self.tr("Platinum"),
- "gold": self.tr("Gold"),
- "silver": self.tr("Silver"),
- "bronze": self.tr("Bronze"),
- "fail": self.tr("Could not get grade"),
- "pending": self.tr("Not enough reports")}
- if os.path.exists(p := os.path.join(data_dir, "game_list.json")):
- self.grade_table = json.load(open(p))
- else:
- self.grade_table = {}
-
- if platform.system() == "Windows":
- self.lbl_grade.setVisible(False)
- self.grade.setVisible(False)
-
- if platform.system() != "Windows":
- self.steam_worker = SteamWorker(self.core)
- self.steam_worker.rating_signal.connect(self.grade.setText)
-
- self.game_actions_stack.setCurrentIndex(0)
- self.game_actions_stack.resize(self.game_actions_stack.minimumSize())
-
- self.uninstall_button.clicked.connect(self.uninstall)
- self.verify_button.clicked.connect(self.verify)
- self.repair_button.clicked.connect(self.repair)
-
- def uninstall(self):
- self.uninstall_game.emit(self.game.app_name)
- self.update_list.emit(self.game.app_name)
-
- def repair(self):
- repair_file = os.path.join(self.core.lgd.get_tmp_path(), f'{self.game.app_name}.repair')
- if not os.path.exists(repair_file):
- QMessageBox.warning(self, "Warning", self.tr(
- "Repair file does not exist or game does not need a repair. Please verify game first"))
- return
- self.verify_game.emit(self.game.app_name)
-
- def verify(self):
- self.verify_widget.setCurrentIndex(1)
- verify_thread = VerifyThread(self.core, self.game.app_name)
- verify_thread.status.connect(self.verify_satistics)
- verify_thread.summary.connect(self.finish_verify)
- verify_thread.start()
- self.verify_progress.setValue(0)
- self.verify_threads[self.game.app_name] = verify_thread
-
- def verify_satistics(self, progress):
- # checked, max, app_name
- if progress[2] == self.game.app_name:
- self.verify_progress.setValue(progress[0] * 100 / progress[1])
-
- def finish_verify(self, failed):
- failed, missing, app_name = failed
- if failed == 0 and missing == 0:
- QMessageBox.information(self, "Summary",
- "Game was verified successfully. No missing or corrupt files found")
- else:
- ans = QMessageBox.question(self, "Summary", self.tr(
- 'Verification failed, {} file(s) corrupted, {} file(s) are missing. Do you want to repair them?').format(
- failed, missing), QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
- if ans == QMessageBox.Yes:
- self.verify_game.emit(self.game.app_name)
- self.verify_widget.setCurrentIndex(0)
- self.verify_threads.pop(app_name)
-
- def update_game(self, app_name):
- self.game = self.core.get_game(app_name)
- self.igame = self.core.get_installed_game(app_name)
- self.game_title.setText(f"
{self.game.app_title}
")
-
- pixmap = get_pixmap(app_name)
- w = 200
- pixmap = pixmap.scaled(w, int(w * 4 / 3))
- self.image.setPixmap(pixmap)
-
- self.app_name.setText(self.game.app_name)
- self.version.setText(self.game.app_version)
- self.dev.setText(self.game.metadata["developer"])
- self.install_size.setText(get_size(self.igame.install_size))
- self.install_path.setText(self.igame.install_path)
-
- if platform.system() != "Windows":
- self.grade.setText(self.tr("Loading"))
- self.steam_worker.set_app_name(app_name)
- self.steam_worker.start()
-
- if len(self.verify_threads.keys()) == 0 or not self.verify_threads.get(app_name):
- self.verify_widget.setCurrentIndex(0)
- elif self.verify_threads.get(app_name):
- self.verify_widget.setCurrentIndex(1)
- self.verify_progress.setValue(
- self.verify_threads[app_name].num / self.verify_threads[app_name].total * 100
- )
diff --git a/rare/components/tabs/games/game_info/game_dlc.py b/rare/components/tabs/games/game_info/game_dlc.py
index 81bfc0bd..0225bad4 100644
--- a/rare/components/tabs/games/game_info/game_dlc.py
+++ b/rare/components/tabs/games/game_info/game_dlc.py
@@ -1,15 +1,11 @@
-import os
-
-from PyQt5.QtCore import pyqtSignal, QSettings, QSize
-from PyQt5.QtGui import QPixmap
+from PyQt5.QtCore import pyqtSignal
from PyQt5.QtWidgets import QFrame, QWidget, QMessageBox
from legendary.core import LegendaryCore
from legendary.models.game import Game
-from rare import data_dir
-from rare.utils.utils import download_image
from rare.ui.components.tabs.games.game_info.game_dlc import Ui_GameDlc
from rare.ui.components.tabs.games.game_info.game_dlc_widget import Ui_GameDlcWidget
+from rare.utils.utils import get_pixmap
class GameDlc(QWidget, Ui_GameDlc):
@@ -72,32 +68,9 @@ class GameDlcWidget(QFrame, Ui_GameDlcWidget):
super(GameDlcWidget, self).__init__(parent=parent)
self.setupUi(self)
self.dlc = dlc
- image_dir = QSettings().value("img_dir", os.path.join(data_dir, "images"))
- if installed:
- if os.path.exists(os.path.join(image_dir, dlc.app_name, "FinalArt.png")):
- pixmap = QPixmap(os.path.join(image_dir, dlc.app_name, "FinalArt.png"))
- elif os.path.exists(os.path.join(image_dir, dlc.app_name, "DieselGameBoxTall.png")):
- pixmap = QPixmap(os.path.join(image_dir, dlc.app_name, "DieselGameBoxTall.png"))
- elif os.path.exists(os.path.join(image_dir, dlc.app_name, "DieselGameBoxLogo.png")):
- pixmap = QPixmap(os.path.join(image_dir, dlc.app_name, "DieselGameBoxLogo.png"))
- else:
- print(f"No Image found: {dlc.app_title}")
- pixmap = None
- if not pixmap or pixmap.isNull():
- print(dlc.app_title + " has corrupt Image")
- download_image(dlc, force=True)
- pixmap = QPixmap(f"{image_dir}/{dlc.app_name}/UninstalledArt.png")
- else:
- if os.path.exists(f"{image_dir}/{dlc.app_name}/UninstalledArt.png"):
- pixmap = QPixmap(f"{image_dir}/{dlc.app_name}/DieselGameBoxTall.png")
- else:
- pixmap = None
- if not pixmap or pixmap.isNull():
- print(dlc.app_title + " has corrupt Image")
- download_image(dlc, force=True)
- pixmap = QPixmap(f"{image_dir}/{dlc.app_name}/UninstalledArt.png")
- self.image.setPixmap(pixmap.scaledToHeight(pixmap.height()*0.5))
+ pixmap = get_pixmap(dlc.app_name)
+ self.image.setPixmap(pixmap.scaledToHeight(pixmap.height() * 0.5))
self.dlc_name.setText(dlc.app_title)
self.version.setText(dlc.app_version)
diff --git a/rare/components/tabs/games/game_info/game_info.py b/rare/components/tabs/games/game_info/game_info.py
new file mode 100644
index 00000000..e8c6f05a
--- /dev/null
+++ b/rare/components/tabs/games/game_info/game_info.py
@@ -0,0 +1,122 @@
+import json
+import os
+import platform
+
+from PyQt5.QtCore import pyqtSignal
+from PyQt5.QtWidgets import QWidget, QMessageBox
+
+from legendary.core import LegendaryCore
+from legendary.models.game import Game, InstalledGame
+from rare.ui.components.tabs.games.game_info.game_info import Ui_GameInfo
+from rare import data_dir
+from rare.utils.legendary_utils import VerifyThread
+from rare.utils.steam_grades import SteamWorker
+from rare.utils.utils import get_size, get_pixmap
+
+
+class GameInfo(QWidget, Ui_GameInfo):
+ igame: InstalledGame
+ game: Game
+ uninstall_game = pyqtSignal(str)
+ update_list = pyqtSignal(str)
+ verify_game = pyqtSignal(str)
+ verify_threads = {}
+
+ def __init__(self, core: LegendaryCore, parent):
+ super(GameInfo, self).__init__(parent=parent)
+ self.setupUi(self)
+ self.core = core
+
+ self.ratings = {"platinum": self.tr("Platinum"),
+ "gold": self.tr("Gold"),
+ "silver": self.tr("Silver"),
+ "bronze": self.tr("Bronze"),
+ "fail": self.tr("Could not get grade"),
+ "pending": self.tr("Not enough reports")}
+ if os.path.exists(p := os.path.join(data_dir, "game_list.json")):
+ self.grade_table = json.load(open(p))
+ else:
+ self.grade_table = {}
+
+ if platform.system() == "Windows":
+ self.lbl_grade.setVisible(False)
+ self.grade.setVisible(False)
+ else:
+ self.steam_worker = SteamWorker(self.core)
+ self.steam_worker.rating_signal.connect(self.grade.setText)
+
+ self.game_actions_stack.setCurrentIndex(0)
+ self.game_actions_stack.resize(self.game_actions_stack.minimumSize())
+
+ self.uninstall_button.clicked.connect(self.uninstall)
+ self.verify_button.clicked.connect(self.verify)
+ self.repair_button.clicked.connect(self.repair)
+
+ def uninstall(self):
+ self.uninstall_game.emit(self.game.app_name)
+ self.update_list.emit(self.game.app_name)
+
+ def repair(self):
+ repair_file = os.path.join(self.core.lgd.get_tmp_path(), f'{self.game.app_name}.repair')
+ if not os.path.exists(repair_file):
+ QMessageBox.warning(self, "Warning", self.tr(
+ "Repair file does not exist or game does not need a repair. Please verify game first"))
+ return
+ self.verify_game.emit(self.game.app_name)
+
+ def verify(self):
+ self.verify_widget.setCurrentIndex(1)
+ verify_thread = VerifyThread(self.core, self.game.app_name)
+ verify_thread.status.connect(self.verify_satistics)
+ verify_thread.summary.connect(self.finish_verify)
+ verify_thread.start()
+ self.verify_progress.setValue(0)
+ self.verify_threads[self.game.app_name] = verify_thread
+
+ def verify_satistics(self, progress):
+ # checked, max, app_name
+ if progress[2] == self.game.app_name:
+ self.verify_progress.setValue(progress[0] * 100 / progress[1])
+
+ def finish_verify(self, failed):
+ failed, missing, app_name = failed
+ if failed == 0 and missing == 0:
+ QMessageBox.information(self, "Summary",
+ "Game was verified successfully. No missing or corrupt files found")
+ else:
+ ans = QMessageBox.question(self, "Summary", self.tr(
+ 'Verification failed, {} file(s) corrupted, {} file(s) are missing. Do you want to repair them?').format(
+ failed, missing), QMessageBox.Yes | QMessageBox.No, QMessageBox.Yes)
+ if ans == QMessageBox.Yes:
+ self.verify_game.emit(self.game.app_name)
+ self.verify_widget.setCurrentIndex(0)
+ self.verify_threads.pop(app_name)
+
+ def update_game(self, app_name):
+ self.game = self.core.get_game(app_name)
+ self.igame = self.core.get_installed_game(app_name)
+ self.game_title.setText(f'{self.game.app_title}
')
+
+ pixmap = get_pixmap(app_name)
+ w = 200
+ pixmap = pixmap.scaled(w, int(w * 4 / 3))
+ self.image.setPixmap(pixmap)
+
+ self.app_name.setText(self.game.app_name)
+ self.version.setText(self.game.app_version)
+ self.dev.setText(self.game.metadata["developer"])
+ self.install_size.setText(get_size(self.igame.install_size))
+ self.install_path.setText(self.igame.install_path)
+
+ if platform.system() != "Windows":
+ self.grade.setText(self.tr("Loading"))
+ self.steam_worker.set_app_name(app_name)
+ self.steam_worker.start()
+
+ if len(self.verify_threads.keys()) == 0 or not self.verify_threads.get(app_name):
+ self.verify_widget.setCurrentIndex(0)
+ elif self.verify_threads.get(app_name):
+ self.verify_widget.setCurrentIndex(1)
+ self.verify_progress.setValue(
+ self.verify_threads[app_name].num / self.verify_threads[app_name].total * 100
+ )
diff --git a/rare/components/tabs/settings/legendary.py b/rare/components/tabs/settings/legendary.py
index 7f7a944b..45a457e3 100644
--- a/rare/components/tabs/settings/legendary.py
+++ b/rare/components/tabs/settings/legendary.py
@@ -2,20 +2,20 @@ import os.path
import platform
from logging import getLogger
-from PyQt5.QtWidgets import QFileDialog, QMessageBox, QStackedWidget, QVBoxLayout, QDialog, QCheckBox, QLabel, \
+from PyQt5.QtWidgets import QFileDialog, QMessageBox, QVBoxLayout, QDialog, QCheckBox, QLabel, \
QHBoxLayout, QPushButton, QGroupBox, QWidget
from legendary.core import LegendaryCore
-from rare.ui.components.tabs.settings.legendary import Ui_legendary_settings
+from rare.ui.components.tabs.settings.legendary import Ui_LegendarySettings
from rare.utils.extra_widgets import PathEdit
from rare.utils.utils import get_size
logger = getLogger("LegendarySettings")
-class LegendarySettings(QStackedWidget, Ui_legendary_settings):
- def __init__(self, core: LegendaryCore):
- super(LegendarySettings, self).__init__()
+class LegendarySettings(QWidget, Ui_LegendarySettings):
+ def __init__(self, core: LegendaryCore, parent=None):
+ super(LegendarySettings, self).__init__(parent=parent)
self.setupUi(self)
self.core = core
@@ -24,22 +24,22 @@ class LegendarySettings(QStackedWidget, Ui_legendary_settings):
self.install_dir = PathEdit(core.get_default_install_dir(),
file_type=QFileDialog.DirectoryOnly,
save_func=self.save_path)
- self.layout_install_dir.addWidget(self.install_dir)
+ self.install_dir_layout.addWidget(self.install_dir)
# Max Workers
- max_workers = self.core.lgd.config["Legendary"].getint("max_workers", fallback=0)
+ max_workers = self.core.lgd.config['Legendary'].getint('max_workers', fallback=0)
self.max_worker_spin.setValue(max_workers)
self.max_worker_spin.valueChanged.connect(self.max_worker_save)
# Max memory
- max_memory = self.core.lgd.config["Legendary"].getint("max_memory", fallback=0)
+ max_memory = self.core.lgd.config['Legendary'].getint('max_memory', fallback=0)
self.max_memory_spin.setValue(max_memory)
self.max_memory_spin.valueChanged.connect(self.max_memory_save)
# Preferred CDN
- preferred_cdn = self.core.lgd.config["Legendary"].get("preferred_cdn", fallback="")
+ preferred_cdn = self.core.lgd.config['Legendary'].get('preferred_cdn', fallback="")
self.preferred_cdn_line.setText(preferred_cdn)
self.preferred_cdn_line.textChanged.connect(self.preferred_cdn_save)
# Disable HTTPS
- disable_https = self.core.lgd.config["Legendary"].getboolean("disable_https", fallback=False)
+ disable_https = self.core.lgd.config['Legendary'].getboolean('disable_https', fallback=False)
self.disable_https_check.setChecked(disable_https)
self.disable_https_check.stateChanged.connect(self.disable_https_save)
@@ -50,11 +50,8 @@ class LegendarySettings(QStackedWidget, Ui_legendary_settings):
self.clean_keep_manifests_button.clicked.connect(
lambda: self.cleanup(True)
)
- self.setCurrentIndex(0)
- self.back_button.clicked.connect(lambda: self.setCurrentIndex(0))
-
- self.path_info.setText(self.tr("EGL path is at C:\\ProgramData\\Epic\\EpicGamesLauncher\\Data\\Manifests"))
+ self.manifest_path_info.setText(self.tr("EGL path is at C:\\ProgramData\\Epic\\EpicGamesLauncher\\Data\\Manifests"))
path = os.path.expanduser("~/")
if self.core.egl.programdata_path:
path = self.core.egl.programdata_path
@@ -65,14 +62,14 @@ class LegendarySettings(QStackedWidget, Ui_legendary_settings):
if os.path.exists(p := os.path.join(i, "drive_c/ProgramData/Epic/EpicGamesLauncher/Data/Manifests")):
path = p
- self.path_edit = PathEdit(path, QFileDialog.DirectoryOnly, save_func=self.save_egl_path)
- self.pathedit_placeholder.addWidget(self.path_edit)
+ self.manifest_path_edit = PathEdit(path, QFileDialog.DirectoryOnly, save_func=self.save_egl_path)
+ self.manifest_path_layout.addWidget(self.manifest_path_edit)
if platform.system() != "Windows":
- self.core.lgd.config.set("Legendary", "egl_programdata")
+ self.core.lgd.config.set('Legendary', 'egl_programdata', path)
self.core.egl.programdata_path = path
- self.importable_widgets = []
- self.exportable_widgets = []
+ self.importable_widgets = list()
+ self.exportable_widgets = list()
if self.core.egl_sync_enabled:
self.egl_sync_button.setText(self.tr("Disable sync"))
@@ -86,7 +83,7 @@ class LegendarySettings(QStackedWidget, Ui_legendary_settings):
def enable_sync(self):
if not self.core.egl.programdata_path:
- if os.path.exists(path := self.path_edit.text()):
+ 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
@@ -98,16 +95,18 @@ class LegendarySettings(QStackedWidget, Ui_legendary_settings):
self.enable_sync_button.setDisabled(True)
def export_all(self):
- for w in self.exportable_widgets:
- w.export_game()
+ for ew in self.exportable_widgets:
+ ew.export_game()
+ self.exportable_widgets.clear()
def import_all(self):
- for w in self.importable_widgets:
- w.import_game()
+ 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.path_edit.text())
- self.core.egl.programdata_path = self.path_edit.text()
+ 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()
@@ -131,42 +130,49 @@ class LegendarySettings(QStackedWidget, Ui_legendary_settings):
# enable sync
self.enable_sync_button.setDisabled(False)
self.update_egl_widget()
- self.setCurrentIndex(1)
def update_egl_widget(self):
- self.exportable_widgets = []
- QWidget().setLayout(self.exportable_games.layout())
- QWidget().setLayout(self.importable_games.layout())
- importable_layout = QVBoxLayout()
- self.importable_games.setLayout(importable_layout)
- exportable_layout = QVBoxLayout()
- self.exportable_games.setLayout(exportable_layout)
+ 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:
- self.importable_games.setVisible(False)
- self.exportable_games.setVisible(False)
- self.export_all_button.setVisible(False)
- self.import_all_button.setVisible(False)
return
- self.importable_games.setVisible(True)
- self.exportable_games.setVisible(True)
- self.export_all_button.setVisible(True)
- self.import_all_button.setVisible(True)
+ 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))
- for igame in self.core.egl_get_exportable():
- w = EGLSyncWidget(igame, True, self.core)
- self.importable_widgets.append(w)
- self.exportable_games.layout().addWidget(w)
- if len(self.core.egl_get_exportable()) == 0:
- self.exportable_games.layout().addWidget(QLabel(self.tr("No games to export")))
-
- self.importable_widgets = []
- for game in self.core.egl_get_importable():
- w = EGLSyncWidget(game, False, self.core)
- self.importable_widgets.append(w)
- self.importable_games.layout().addWidget(w)
- if len(self.core.egl_get_importable()) == 0:
- self.importable_games.layout().addWidget(QLabel(self.tr("No games to import")))
+ 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()
@@ -192,7 +198,7 @@ class LegendarySettings(QStackedWidget, Ui_legendary_settings):
def preferred_cdn_save(self, cdn: str):
if cdn:
- self.core.lgd.config.set("Legendary", "preferred_cdn", cdn.strip(" "))
+ self.core.lgd.config.set("Legendary", "preferred_cdn", cdn.strip())
else:
self.core.lgd.config.remove_option("Legendary", "preferred_cdn")
self.core.lgd.save_config()
@@ -228,8 +234,8 @@ class LegendarySettings(QStackedWidget, Ui_legendary_settings):
class DisableSyncDialog(QDialog):
info = 1, False
- def __init__(self):
- super(DisableSyncDialog, self).__init__()
+ 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"))
@@ -268,8 +274,8 @@ class DisableSyncDialog(QDialog):
class EGLSyncWidget(QGroupBox):
- def __init__(self, game, export: bool, core: LegendaryCore):
- super(EGLSyncWidget, self).__init__()
+ 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
@@ -292,6 +298,12 @@ class EGLSyncWidget(QGroupBox):
def export_game(self):
self.core.egl_export(self.game.app_name)
+ # FIXME: on update_egl_widget this is going to crash because
+ # FIXME: the item is not removed from the list in the python's side
+ self.deleteLater()
def import_game(self):
self.core.egl_import(self.game.app_name)
+ # FIXME: on update_egl_widget this is going to crash because
+ # FIXME: the item is not removed from the list in the python's side
+ self.deleteLater()
diff --git a/rare/components/tabs/settings/rare.py b/rare/components/tabs/settings/rare.py
index 0df08971..75cacf38 100644
--- a/rare/components/tabs/settings/rare.py
+++ b/rare/components/tabs/settings/rare.py
@@ -1,6 +1,5 @@
import os
import platform
-import shutil
import subprocess
import sys
from logging import getLogger
@@ -8,7 +7,7 @@ from logging import getLogger
from PyQt5.QtCore import QSettings, Qt
from PyQt5.QtWidgets import QWidget
-from rare import cache_dir, data_dir
+from rare import cache_dir
from rare.components.tabs.settings.rpc_settings import RPCSettings
from rare.ui.components.tabs.settings.rare import Ui_RareSettings
from rare.utils import utils
@@ -40,7 +39,6 @@ class RareSettings(QWidget, Ui_RareSettings):
]
self.settings = QSettings()
- self.img_dir_path = self.settings.value("img_dir", os.path.join(data_dir, "images"), type=str)
language = self.settings.value("language", get_lang(), type=str)
self.logdir = os.path.join(cache_dir, "logs")
@@ -192,26 +190,6 @@ class RareSettings(QWidget, Ui_RareSettings):
self.settings.setValue("language", languages[i][0])
self.interface_info.setVisible(True)
- def update_path(self):
- old_path = self.img_dir_path
- new_path = self.img_dir.text()
-
- if old_path != new_path:
- if not os.path.exists(new_path):
- os.makedirs(new_path)
- elif len(os.listdir(new_path)) > 0:
- logger.warning("New directory is not empty")
- return
- logger.info("Move Images")
- for i in os.listdir(old_path):
- try:
- shutil.move(os.path.join(old_path, i), os.path.join(new_path, i))
- except:
- pass
- os.rmdir(old_path)
- self.img_dir_path = new_path
- self.settings.setValue("img_dir", new_path)
-
def init_checkboxes(self, checkboxes):
for cb in checkboxes:
widget, option, default = cb
diff --git a/rare/ui/components/tabs/settings/about.py b/rare/ui/components/tabs/settings/about.py
index 5eb18a83..d1e6e370 100644
--- a/rare/ui/components/tabs/settings/about.py
+++ b/rare/ui/components/tabs/settings/about.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
-# Form implementation generated from reading ui file 'about.ui'
+# Form implementation generated from reading ui file 'rare/ui/components/tabs/settings/about.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
@@ -14,80 +14,82 @@ from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_About(object):
def setupUi(self, About):
About.setObjectName("About")
- About.resize(499, 396)
- self.gridLayout = QtWidgets.QGridLayout(About)
- self.gridLayout.setObjectName("gridLayout")
- self.open_browser = QtWidgets.QPushButton(About)
- self.open_browser.setObjectName("open_browser")
- self.gridLayout.addWidget(self.open_browser, 4, 1, 1, 1)
+ About.resize(722, 345)
+ self.about_layout = QtWidgets.QFormLayout(About)
+ self.about_layout.setLabelAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
+ self.about_layout.setObjectName("about_layout")
+ self.title = QtWidgets.QLabel(About)
+ self.title.setObjectName("title")
+ self.about_layout.setWidget(0, QtWidgets.QFormLayout.SpanningRole, self.title)
self.version_label = QtWidgets.QLabel(About)
font = QtGui.QFont()
font.setBold(True)
font.setWeight(75)
self.version_label.setFont(font)
self.version_label.setObjectName("version_label")
- self.gridLayout.addWidget(self.version_label, 2, 0, 1, 1, QtCore.Qt.AlignRight)
- self.license_label = QtWidgets.QLabel(About)
- font = QtGui.QFont()
- font.setBold(True)
- font.setWeight(75)
- self.license_label.setFont(font)
- self.license_label.setObjectName("license_label")
- self.gridLayout.addWidget(self.license_label, 7, 0, 1, 1, QtCore.Qt.AlignRight)
- self.lgd_dev_label = QtWidgets.QLabel(About)
- font = QtGui.QFont()
- font.setBold(True)
- font.setWeight(75)
- self.lgd_dev_label.setFont(font)
- self.lgd_dev_label.setObjectName("lgd_dev_label")
- self.gridLayout.addWidget(self.lgd_dev_label, 6, 0, 1, 1, QtCore.Qt.AlignRight)
- self.dev = QtWidgets.QLabel(About)
- self.dev.setText("Dummerle")
- self.dev.setOpenExternalLinks(True)
- self.dev.setObjectName("dev")
- self.gridLayout.addWidget(self.dev, 5, 1, 1, 1)
+ self.about_layout.setWidget(1, QtWidgets.QFormLayout.LabelRole, self.version_label)
+ self.version = QtWidgets.QLabel(About)
+ self.version.setText("error")
+ self.version.setObjectName("version")
+ self.about_layout.setWidget(1, QtWidgets.QFormLayout.FieldRole, self.version)
self.update_label = QtWidgets.QLabel(About)
font = QtGui.QFont()
font.setBold(True)
font.setWeight(75)
self.update_label.setFont(font)
self.update_label.setObjectName("update_label")
- self.gridLayout.addWidget(self.update_label, 3, 0, 1, 1, QtCore.Qt.AlignRight)
- self.version = QtWidgets.QLabel(About)
- self.version.setText("error")
- self.version.setObjectName("version")
- self.gridLayout.addWidget(self.version, 2, 1, 1, 1)
+ self.about_layout.setWidget(2, QtWidgets.QFormLayout.LabelRole, self.update_label)
+ self.update = QtWidgets.QLabel(About)
+ self.update.setText("error")
+ self.update.setObjectName("update")
+ self.about_layout.setWidget(2, QtWidgets.QFormLayout.FieldRole, self.update)
+ self.open_browser = QtWidgets.QPushButton(About)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Fixed)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.open_browser.sizePolicy().hasHeightForWidth())
+ self.open_browser.setSizePolicy(sizePolicy)
+ self.open_browser.setObjectName("open_browser")
+ self.about_layout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.open_browser)
self.dev_label = QtWidgets.QLabel(About)
font = QtGui.QFont()
font.setBold(True)
font.setWeight(75)
self.dev_label.setFont(font)
self.dev_label.setObjectName("dev_label")
- self.gridLayout.addWidget(self.dev_label, 5, 0, 1, 1, QtCore.Qt.AlignRight)
- self.license = QtWidgets.QLabel(About)
- self.license.setObjectName("license")
- self.gridLayout.addWidget(self.license, 7, 1, 1, 1)
- self.update = QtWidgets.QLabel(About)
- self.update.setText("error")
- self.update.setObjectName("update")
- self.gridLayout.addWidget(self.update, 3, 1, 1, 1)
+ self.about_layout.setWidget(4, QtWidgets.QFormLayout.LabelRole, self.dev_label)
+ self.dev = QtWidgets.QLabel(About)
+ self.dev.setText("Dummerle")
+ self.dev.setOpenExternalLinks(True)
+ self.dev.setObjectName("dev")
+ self.about_layout.setWidget(4, QtWidgets.QFormLayout.FieldRole, self.dev)
+ self.lgd_dev_label = QtWidgets.QLabel(About)
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.lgd_dev_label.setFont(font)
+ self.lgd_dev_label.setObjectName("lgd_dev_label")
+ self.about_layout.setWidget(5, QtWidgets.QFormLayout.LabelRole, self.lgd_dev_label)
self.lgd_dev = QtWidgets.QLabel(About)
self.lgd_dev.setText("derrod")
self.lgd_dev.setOpenExternalLinks(True)
self.lgd_dev.setObjectName("lgd_dev")
- self.gridLayout.addWidget(self.lgd_dev, 6, 1, 1, 1)
+ self.about_layout.setWidget(5, QtWidgets.QFormLayout.FieldRole, self.lgd_dev)
+ self.license_label = QtWidgets.QLabel(About)
+ font = QtGui.QFont()
+ font.setBold(True)
+ font.setWeight(75)
+ self.license_label.setFont(font)
+ self.license_label.setObjectName("license_label")
+ self.about_layout.setWidget(6, QtWidgets.QFormLayout.LabelRole, self.license_label)
+ self.license = QtWidgets.QLabel(About)
+ self.license.setObjectName("license")
+ self.about_layout.setWidget(6, QtWidgets.QFormLayout.FieldRole, self.license)
self.info_text = QtWidgets.QLabel(About)
self.info_text.setWordWrap(True)
self.info_text.setOpenExternalLinks(True)
self.info_text.setObjectName("info_text")
- self.gridLayout.addWidget(self.info_text, 14, 0, 1, 3)
- spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
- self.gridLayout.addItem(spacerItem, 15, 0, 1, 3)
- self.title = QtWidgets.QLabel(About)
- self.title.setObjectName("title")
- self.gridLayout.addWidget(self.title, 1, 0, 1, 3)
- spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.gridLayout.addItem(spacerItem1, 2, 2, 6, 1)
+ self.about_layout.setWidget(7, QtWidgets.QFormLayout.SpanningRole, self.info_text)
self.retranslateUi(About)
QtCore.QMetaObject.connectSlotsByName(About)
@@ -95,23 +97,22 @@ class Ui_About(object):
def retranslateUi(self, About):
_translate = QtCore.QCoreApplication.translate
About.setWindowTitle(_translate("About", "About"))
- self.open_browser.setText(_translate("About", "Download latest release"))
- self.version_label.setText(_translate("About", "Version"))
- self.license_label.setText(_translate("About", "License"))
- self.lgd_dev_label.setText(_translate("About", "Legendary Developer"))
- self.dev.setToolTip(_translate("About", "Github"))
- self.update_label.setText(_translate("About", "Update available"))
- self.dev_label.setText(_translate("About", "Rare Developer"))
- self.license.setText(_translate("About", "GNU General Public License v3.0"))
- self.lgd_dev.setToolTip(_translate("About", "Github"))
- self.info_text.setText(_translate("About",
- "This is a beta version, so you can get bugs. If you get a bug, please report it by creating an Issue on Github. You can also contact me on Discord (Dummerle#7419). Or you can join the Discord server"))
self.title.setText(_translate("About", "About
"))
+ self.version_label.setText(_translate("About", "Version"))
+ self.update_label.setText(_translate("About", "Update available"))
+ self.open_browser.setText(_translate("About", "Download latest release"))
+ self.dev_label.setText(_translate("About", "Rare Developer"))
+ self.dev.setToolTip(_translate("About", "Github"))
+ self.lgd_dev_label.setText(_translate("About", "Legendary Developer"))
+ self.lgd_dev.setToolTip(_translate("About", "Github"))
+ self.license_label.setText(_translate("About", "License"))
+ self.license.setText(_translate("About", "GNU General Public License v3.0"))
+ self.info_text.setText(_translate("About", "This is a beta version, so you can get bugs. If you get a bug, please report it by creating an Issue on Github. You can also contact me on Discord (Dummerle#7419). Or you can join the Discord server\n"
+""))
if __name__ == "__main__":
import sys
-
app = QtWidgets.QApplication(sys.argv)
About = QtWidgets.QWidget()
ui = Ui_About()
diff --git a/rare/ui/components/tabs/settings/about.ui b/rare/ui/components/tabs/settings/about.ui
index af38de8d..5bc1677d 100644
--- a/rare/ui/components/tabs/settings/about.ui
+++ b/rare/ui/components/tabs/settings/about.ui
@@ -1,190 +1,170 @@
- About
-
-
-
- 0
- 0
- 499
- 396
-
-
-
- About
-
-
- -
-
-
- Download latest release
-
-
-
- -
-
-
-
- 75
- true
-
-
-
- Version
-
-
-
- -
-
-
-
- 75
- true
-
-
-
- License
-
-
-
- -
-
-
-
- 75
- true
-
-
-
- Legendary Developer
-
-
-
- -
-
-
- Github
-
-
- <a href='https://github.com/Dummerle'>Dummerle</a>
-
-
- true
-
-
-
- -
-
-
-
- 75
- true
-
-
-
- Update available
-
-
-
- -
-
-
- error
-
-
-
- -
-
-
-
- 75
- true
-
-
-
- Rare Developer
-
-
-
- -
-
-
- GNU General Public License v3.0
-
-
-
- -
-
-
- error
-
-
-
- -
-
-
- Github
-
-
- <a href='https://github.com/derrod/'>derrod</a>
-
-
- true
-
-
-
- -
-
-
- This is a beta version, so you can get bugs. If you get a bug, please report it by
- creating an Issue on <a href='https://github.com/Dummerle/Rare/issues'>Github</a>.
- You can also contact me on Discord (Dummerle#7419). Or you can join the <a
- href='https://discord.gg/YvmABK9YSk'>Discord server</a>
-
-
-
- true
-
-
- true
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
- -
-
-
- <h2>About</h2>
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
+ About
+
+
+
+ 0
+ 0
+ 722
+ 345
+
+
+
+ About
+
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+ -
+
+
+ <h2>About</h2>
+
-
-
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ Version
+
+
+
+ -
+
+
+ error
+
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ Update available
+
+
+
+ -
+
+
+ error
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Download latest release
+
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ Rare Developer
+
+
+
+ -
+
+
+ Github
+
+
+ <a href='https://github.com/Dummerle'>Dummerle</a>
+
+
+ true
+
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ Legendary Developer
+
+
+
+ -
+
+
+ Github
+
+
+ <a href='https://github.com/derrod/'>derrod</a>
+
+
+ true
+
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ License
+
+
+
+ -
+
+
+ GNU General Public License v3.0
+
+
+
+ -
+
+
+ This is a beta version, so you can get bugs. If you get a bug, please report it by creating an Issue on <a href='https://github.com/Dummerle/Rare/issues'>Github</a>. You can also contact me on Discord (Dummerle#7419). Or you can join the <a href='https://discord.gg/YvmABK9YSk'>Discord server</a>
+
+
+
+ true
+
+
+ true
+
+
+
+
+
+
+
diff --git a/rare/ui/components/tabs/settings/legendary.py b/rare/ui/components/tabs/settings/legendary.py
index 99485d1f..9344119b 100644
--- a/rare/ui/components/tabs/settings/legendary.py
+++ b/rare/ui/components/tabs/settings/legendary.py
@@ -11,22 +11,20 @@
from PyQt5 import QtCore, QtGui, QtWidgets
-class Ui_legendary_settings(object):
- def setupUi(self, legendary_settings):
- legendary_settings.setObjectName("legendary_settings")
- legendary_settings.resize(810, 535)
- self.settings = QtWidgets.QWidget()
- self.settings.setObjectName("settings")
- self.settings_layout = QtWidgets.QHBoxLayout(self.settings)
+class Ui_LegendarySettings(object):
+ def setupUi(self, LegendarySettings):
+ LegendarySettings.setObjectName("LegendarySettings")
+ LegendarySettings.resize(796, 732)
+ self.settings_layout = QtWidgets.QHBoxLayout(LegendarySettings)
self.settings_layout.setObjectName("settings_layout")
self.left_layout = QtWidgets.QVBoxLayout()
self.left_layout.setObjectName("left_layout")
- self.install_dir_group = QtWidgets.QGroupBox(self.settings)
+ self.install_dir_group = QtWidgets.QGroupBox(LegendarySettings)
self.install_dir_group.setObjectName("install_dir_group")
- self.layout_install_dir = QtWidgets.QVBoxLayout(self.install_dir_group)
- self.layout_install_dir.setObjectName("layout_install_dir")
+ self.install_dir_layout = QtWidgets.QVBoxLayout(self.install_dir_group)
+ self.install_dir_layout.setObjectName("install_dir_layout")
self.left_layout.addWidget(self.install_dir_group)
- self.download_group = QtWidgets.QGroupBox(self.settings)
+ self.download_group = QtWidgets.QGroupBox(LegendarySettings)
self.download_group.setObjectName("download_group")
self.download_layout = QtWidgets.QFormLayout(self.download_group)
self.download_layout.setLabelAlignment(QtCore.Qt.AlignRight|QtCore.Qt.AlignTrailing|QtCore.Qt.AlignVCenter)
@@ -48,7 +46,7 @@ class Ui_legendary_settings(object):
sizePolicy.setHeightForWidth(self.max_worker_spin.sizePolicy().hasHeightForWidth())
self.max_worker_spin.setSizePolicy(sizePolicy)
self.max_worker_spin.setMinimum(0)
- self.max_worker_spin.setMaximum(128)
+ self.max_worker_spin.setMaximum(16)
self.max_worker_spin.setProperty("value", 4)
self.max_worker_spin.setObjectName("max_worker_spin")
self.max_workers_layout.addWidget(self.max_worker_spin)
@@ -97,123 +95,152 @@ class Ui_legendary_settings(object):
self.disable_https_check.setObjectName("disable_https_check")
self.download_layout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.disable_https_check)
self.left_layout.addWidget(self.download_group)
+ self.egl_sync_group = QtWidgets.QGroupBox(LegendarySettings)
+ self.egl_sync_group.setObjectName("egl_sync_group")
+ self.egl_sync_layout = QtWidgets.QVBoxLayout(self.egl_sync_group)
+ self.egl_sync_layout.setObjectName("egl_sync_layout")
+ self.manifest_path_layout = QtWidgets.QVBoxLayout()
+ self.manifest_path_layout.setObjectName("manifest_path_layout")
+ self.egl_sync_layout.addLayout(self.manifest_path_layout)
+ self.manifest_path_info = QtWidgets.QLabel(self.egl_sync_group)
+ self.manifest_path_info.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, 264, 16))
+ 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, 264, 16))
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Maximum)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.import_contents.sizePolicy().hasHeightForWidth())
+ self.import_contents.setSizePolicy(sizePolicy)
+ self.import_contents.setObjectName("import_contents")
+ self.importable_layout = QtWidgets.QVBoxLayout(self.import_contents)
+ self.importable_layout.setObjectName("importable_layout")
+ self.import_scroll.setWidget(self.import_contents)
+ self.import_layout.addWidget(self.import_scroll)
+ self.import_all_button = QtWidgets.QPushButton(self.import_group)
+ self.import_all_button.setObjectName("import_all_button")
+ self.import_layout.addWidget(self.import_all_button, 0, QtCore.Qt.AlignRight)
+ self.export_import_layout.addWidget(self.import_group)
+ self.egl_sync_layout.addLayout(self.export_import_layout)
+ self.enable_sync_group = QtWidgets.QGroupBox(self.egl_sync_group)
+ self.enable_sync_group.setObjectName("enable_sync_group")
+ self.enable_sync_layout = QtWidgets.QHBoxLayout(self.enable_sync_group)
+ self.enable_sync_layout.setObjectName("enable_sync_layout")
+ self.sync_once_button = QtWidgets.QPushButton(self.enable_sync_group)
+ self.sync_once_button.setObjectName("sync_once_button")
+ self.enable_sync_layout.addWidget(self.sync_once_button, 0, QtCore.Qt.AlignRight)
+ self.enable_sync_button = QtWidgets.QPushButton(self.enable_sync_group)
+ self.enable_sync_button.setObjectName("enable_sync_button")
+ self.enable_sync_layout.addWidget(self.enable_sync_button, 0, QtCore.Qt.AlignRight)
+ self.egl_sync_layout.addWidget(self.enable_sync_group)
+ self.left_layout.addWidget(self.egl_sync_group)
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.left_layout.addItem(spacerItem)
self.settings_layout.addLayout(self.left_layout)
self.right_layout = QtWidgets.QVBoxLayout()
self.right_layout.setObjectName("right_layout")
- self.cleanup_group = QtWidgets.QGroupBox(self.settings)
+ self.cleanup_group = QtWidgets.QGroupBox(LegendarySettings)
self.cleanup_group.setObjectName("cleanup_group")
- self.layout_clean = QtWidgets.QVBoxLayout(self.cleanup_group)
- self.layout_clean.setObjectName("layout_clean")
+ self.cleanup_layout = QtWidgets.QVBoxLayout(self.cleanup_group)
+ self.cleanup_layout.setObjectName("cleanup_layout")
self.clean_keep_manifests_button = QtWidgets.QPushButton(self.cleanup_group)
self.clean_keep_manifests_button.setObjectName("clean_keep_manifests_button")
- self.layout_clean.addWidget(self.clean_keep_manifests_button)
+ self.cleanup_layout.addWidget(self.clean_keep_manifests_button)
self.clean_button = QtWidgets.QPushButton(self.cleanup_group)
self.clean_button.setObjectName("clean_button")
- self.layout_clean.addWidget(self.clean_button)
+ self.cleanup_layout.addWidget(self.clean_button)
self.right_layout.addWidget(self.cleanup_group)
- self.egl_sync = QtWidgets.QGroupBox(self.settings)
+ self.egl_sync = QtWidgets.QGroupBox(LegendarySettings)
self.egl_sync.setObjectName("egl_sync")
- self.verticalLayout = QtWidgets.QVBoxLayout(self.egl_sync)
- self.verticalLayout.setObjectName("verticalLayout")
+ 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.verticalLayout.addWidget(self.egl_sync_button)
+ self.egl_sync_layout_3.addWidget(self.egl_sync_button)
self.right_layout.addWidget(self.egl_sync)
spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.right_layout.addItem(spacerItem1)
self.settings_layout.addLayout(self.right_layout)
- legendary_settings.addWidget(self.settings)
- self.egl_sync_page = QtWidgets.QWidget()
- self.egl_sync_page.setObjectName("egl_sync_page")
- self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.egl_sync_page)
- self.verticalLayout_2.setObjectName("verticalLayout_2")
- self.back_button = QtWidgets.QPushButton(self.egl_sync_page)
- self.back_button.setObjectName("back_button")
- self.verticalLayout_2.addWidget(self.back_button)
- self.title = QtWidgets.QLabel(self.egl_sync_page)
- self.title.setObjectName("title")
- self.verticalLayout_2.addWidget(self.title)
- self.pathedit_placeholder = QtWidgets.QVBoxLayout()
- self.pathedit_placeholder.setObjectName("pathedit_placeholder")
- self.verticalLayout_2.addLayout(self.pathedit_placeholder)
- self.path_info = QtWidgets.QLabel(self.egl_sync_page)
- self.path_info.setObjectName("path_info")
- self.verticalLayout_2.addWidget(self.path_info)
- self.layout_export_import = QtWidgets.QGridLayout()
- self.layout_export_import.setObjectName("layout_export_import")
- self.exportable_games = QtWidgets.QGroupBox(self.egl_sync_page)
- self.exportable_games.setObjectName("exportable_games")
- self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.exportable_games)
- self.verticalLayout_3.setObjectName("verticalLayout_3")
- self.layout_export_import.addWidget(self.exportable_games, 0, 0, 1, 1)
- self.importable_games = QtWidgets.QGroupBox(self.egl_sync_page)
- self.importable_games.setObjectName("importable_games")
- self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.importable_games)
- self.verticalLayout_4.setObjectName("verticalLayout_4")
- self.layout_export_import.addWidget(self.importable_games, 0, 1, 1, 1)
- self.export_all_button = QtWidgets.QPushButton(self.egl_sync_page)
- self.export_all_button.setObjectName("export_all_button")
- self.layout_export_import.addWidget(self.export_all_button, 1, 0, 1, 1)
- self.import_all_button = QtWidgets.QPushButton(self.egl_sync_page)
- self.import_all_button.setObjectName("import_all_button")
- self.layout_export_import.addWidget(self.import_all_button, 1, 1, 1, 1)
- self.verticalLayout_2.addLayout(self.layout_export_import)
- self.groupBox = QtWidgets.QGroupBox(self.egl_sync_page)
- self.groupBox.setObjectName("groupBox")
- self.horizontalLayout = QtWidgets.QHBoxLayout(self.groupBox)
- self.horizontalLayout.setObjectName("horizontalLayout")
- self.sync_once_button = QtWidgets.QPushButton(self.groupBox)
- self.sync_once_button.setObjectName("sync_once_button")
- self.horizontalLayout.addWidget(self.sync_once_button)
- self.enable_sync_button = QtWidgets.QPushButton(self.groupBox)
- self.enable_sync_button.setObjectName("enable_sync_button")
- self.horizontalLayout.addWidget(self.enable_sync_button)
- self.verticalLayout_2.addWidget(self.groupBox)
- spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
- self.verticalLayout_2.addItem(spacerItem2)
- legendary_settings.addWidget(self.egl_sync_page)
- self.retranslateUi(legendary_settings)
- legendary_settings.setCurrentIndex(0)
- QtCore.QMetaObject.connectSlotsByName(legendary_settings)
+ self.retranslateUi(LegendarySettings)
+ QtCore.QMetaObject.connectSlotsByName(LegendarySettings)
- def retranslateUi(self, legendary_settings):
+ def retranslateUi(self, LegendarySettings):
_translate = QtCore.QCoreApplication.translate
- legendary_settings.setWindowTitle(_translate("legendary_settings", "LegendarySettings"))
- self.install_dir_group.setTitle(_translate("legendary_settings", "Default Installation Directory"))
- self.download_group.setTitle(_translate("legendary_settings", "Download Settings"))
- self.max_workers_label.setText(_translate("legendary_settings", "Max Workers"))
- self.max_workers_info_label.setText(_translate("legendary_settings", "Less is slower (0: Default)"))
- self.max_memory_label.setText(_translate("legendary_settings", "Max Memory"))
- self.max_memory_spin.setSuffix(_translate("legendary_settings", "MiB"))
- self.max_memory_info_label.setText(_translate("legendary_settings", "Less is slower (0: Default)"))
- self.preferred_cdn_label.setText(_translate("legendary_settings", "Preferred CDN"))
- self.preferred_cdn_line.setPlaceholderText(_translate("legendary_settings", "Default"))
- self.disable_https_label.setText(_translate("legendary_settings", "Disable HTTPS"))
- self.cleanup_group.setTitle(_translate("legendary_settings", "Cleanup"))
- self.clean_keep_manifests_button.setText(_translate("legendary_settings", "Clean, but keep manifests"))
- self.clean_button.setText(_translate("legendary_settings", "Remove everything"))
- self.egl_sync.setTitle(_translate("legendary_settings", "EGL Sync"))
- self.egl_sync_button.setText(_translate("legendary_settings", "Sync Settings"))
- self.back_button.setText(_translate("legendary_settings", "Back"))
- self.title.setText(_translate("legendary_settings", "Sync Games with Epic Games Store
"))
- self.path_info.setText(_translate("legendary_settings", "TextLabel"))
- self.exportable_games.setTitle(_translate("legendary_settings", "Exportable Games"))
- self.importable_games.setTitle(_translate("legendary_settings", "Importable"))
- self.export_all_button.setText(_translate("legendary_settings", "Export all Games"))
- self.import_all_button.setText(_translate("legendary_settings", "Import all Games"))
- self.groupBox.setTitle(_translate("legendary_settings", "Enable Sync"))
- self.sync_once_button.setText(_translate("legendary_settings", "Sync once"))
- self.enable_sync_button.setText(_translate("legendary_settings", "Enable automatic sync"))
+ LegendarySettings.setWindowTitle(_translate("LegendarySettings", "LegendarySettings"))
+ self.install_dir_group.setTitle(_translate("LegendarySettings", "Default Installation Directory"))
+ self.download_group.setTitle(_translate("LegendarySettings", "Download Settings"))
+ self.max_workers_label.setText(_translate("LegendarySettings", "Max Workers"))
+ self.max_workers_info_label.setText(_translate("LegendarySettings", "Less is slower (0: Default)"))
+ self.max_memory_label.setText(_translate("LegendarySettings", "Max Memory"))
+ self.max_memory_spin.setSuffix(_translate("LegendarySettings", "MiB"))
+ self.max_memory_info_label.setText(_translate("LegendarySettings", "Less is slower (0: Default)"))
+ self.preferred_cdn_label.setText(_translate("LegendarySettings", "Preferred CDN"))
+ self.preferred_cdn_line.setPlaceholderText(_translate("LegendarySettings", "Default"))
+ self.disable_https_label.setText(_translate("LegendarySettings", "Disable HTTPS"))
+ self.egl_sync_group.setTitle(_translate("LegendarySettings", "Sync with Epic Games Launcher"))
+ self.manifest_path_info.setText(_translate("LegendarySettings", "TextLabel"))
+ 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.clean_keep_manifests_button.setText(_translate("LegendarySettings", "Clean, but keep manifests"))
+ self.clean_button.setText(_translate("LegendarySettings", "Remove everything"))
+ self.egl_sync.setTitle(_translate("LegendarySettings", "EGL Sync"))
+ self.egl_sync_button.setText(_translate("LegendarySettings", "Sync Settings"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
- legendary_settings = QtWidgets.QStackedWidget()
- ui = Ui_legendary_settings()
- ui.setupUi(legendary_settings)
- legendary_settings.show()
+ LegendarySettings = QtWidgets.QWidget()
+ ui = Ui_LegendarySettings()
+ ui.setupUi(LegendarySettings)
+ LegendarySettings.show()
sys.exit(app.exec_())
diff --git a/rare/ui/components/tabs/settings/legendary.ui b/rare/ui/components/tabs/settings/legendary.ui
index bb118130..c8115dd4 100644
--- a/rare/ui/components/tabs/settings/legendary.ui
+++ b/rare/ui/components/tabs/settings/legendary.ui
@@ -1,340 +1,383 @@
- legendary_settings
-
+ LegendarySettings
+
0
0
- 810
- 535
+ 796
+ 732
LegendarySettings
-
- 0
-
-
-
- -
-
-
-
-
-
- Default Installation Directory
+
+
-
+
+
-
+
+
+ Default Installation Directory
+
+
+
+
+ -
+
+
+ Download Settings
+
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
-
- -
-
-
- Download Settings
-
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
-
-
-
-
- 0
- 0
-
-
-
- Max Workers
-
-
-
- -
-
-
-
-
-
-
- 0
- 0
-
-
-
- 0
-
-
- 128
-
-
- 4
+
-
+
+
+
+ 0
+ 0
+
+
+
+ Max Workers
+
+
+
+ -
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ 0
+
+
+ 16
+
+
+ 4
+
+
+
+ -
+
+
+
+ true
+
+
+
+ Less is slower (0: Default)
+
+
+
+
+
+ -
+
+
+ Max Memory
+
+
+
+ -
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ MiB
+
+
+ 0
+
+
+ 10240
+
+
+ 128
+
+
+ 1024
+
+
+
+ -
+
+
+
+ true
+
+
+
+ Less is slower (0: Default)
+
+
+
+
+
+ -
+
+
+ Preferred CDN
+
+
+
+ -
+
+
+ Default
+
+
+
+ -
+
+
+ Disable HTTPS
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+ -
+
+
+ Sync with Epic Games Launcher
+
+
+
-
+
+
+ -
+
+
+ TextLabel
+
+
+
+ -
+
+
-
+
+
+ Exportable Games
+
+
+
-
+
+
+ No games to export to EGS
+
+
+
+ -
+
+
+ QAbstractScrollArea::AdjustIgnored
+
+
+ true
+
+
+
+
+ 0
+ 0
+ 264
+ 16
+
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+ -
+
+
+ Export all Games
+
+
+
+
+
+
+ -
+
+
+ Importable
+
+
+
-
+
+
+ No games to import from EGS
+
+
+
+ -
+
+
+ QAbstractScrollArea::AdjustIgnored
+
+
+ true
+
+
+
+
+ 0
+ 0
+ 264
+ 16
+
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+ -
+
+
+ Import all Games
+
+
+
+
+
+
+
+
+ -
+
+
+ Enable Sync
+
+
+
-
+
+
+ Sync once
- -
-
-
-
- true
-
-
+
-
+
- Less is slower (0: Default)
+ Enable automatic sync
-
- -
-
-
- Max Memory
-
-
-
- -
-
-
-
-
-
-
- 0
- 0
-
-
-
- MiB
-
-
- 0
-
-
- 10240
-
-
- 128
-
-
- 1024
-
-
-
- -
-
-
-
- true
-
-
-
- Less is slower (0: Default)
-
-
-
-
-
- -
-
-
- Preferred CDN
-
-
-
- -
-
-
- Default
-
-
-
- -
-
-
- Disable HTTPS
-
-
-
- -
-
-
-
-
-
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
-
-
- -
-
-
-
-
-
- Cleanup
-
-
-
-
-
-
- Clean, but keep manifests
-
-
-
- -
-
-
- Remove everything
-
-
-
-
-
-
- -
-
-
- EGL Sync
-
-
-
-
-
-
- Sync Settings
-
-
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
-
-
-
-
-
-
- -
-
-
- Back
-
-
-
- -
-
-
- <h2>Sync Games with Epic Games Store</h2>
-
-
-
- -
-
-
- -
-
-
- TextLabel
-
-
-
- -
-
-
-
-
-
- Exportable Games
-
-
-
-
- -
-
-
- Importable
-
-
-
-
- -
-
-
- Export all Games
-
-
-
- -
-
-
- Import all Games
-
-
-
-
-
- -
-
-
- Enable Sync
-
-
-
-
-
-
- Sync once
-
-
-
- -
-
-
- Enable automatic sync
-
-
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 40
-
-
-
-
-
-
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+ -
+
+
-
+
+
+ Cleanup
+
+
+
-
+
+
+ Clean, but keep manifests
+
+
+
+ -
+
+
+ Remove everything
+
+
+
+
+
+
+ -
+
+
+ EGL Sync
+
+
+
-
+
+
+ Sync Settings
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+
+
+