diff --git a/rare/components/dialogs/launch_dialog.py b/rare/components/dialogs/launch_dialog.py index d616cdca..33560c6c 100644 --- a/rare/components/dialogs/launch_dialog.py +++ b/rare/components/dialogs/launch_dialog.py @@ -2,7 +2,7 @@ import os import platform from logging import getLogger -from PyQt5.QtCore import Qt, pyqtSignal, QRunnable, QObject, QThreadPool +from PyQt5.QtCore import Qt, pyqtSignal, QRunnable, QObject, QThreadPool, QSettings from PyQt5.QtWidgets import QDialog, QApplication from legendary.core import LegendaryCore from requests.exceptions import ConnectionError, HTTPError @@ -40,9 +40,10 @@ class ApiRequestWorker(QRunnable): self.signals = LaunchDialogSignals() self.setAutoDelete(True) self.core = LegendaryCoreSingleton() + self.settings = QSettings() def run(self) -> None: - if platform.system() == "Darwin" or "Mac" in self.core.get_installed_platforms(): + if self.settings.value("mac_meta", platform.system() == "Darwin", bool): try: result = self.core.get_game_and_dlc_list(True, "Mac") except HTTPError: @@ -50,9 +51,13 @@ class ApiRequestWorker(QRunnable): self.signals.result.emit(result, "mac") else: self.signals.result.emit(([], {}), "mac") - try: - result = self.core.get_game_and_dlc_list(True, "Win32") - except HTTPError: + + if self.settings.value("win32_meta", False, bool): + try: + result = self.core.get_game_and_dlc_list(True, "Win32") + except HTTPError: + result = [], {} + else: result = [], {} self.signals.result.emit(result, "32bit") diff --git a/rare/components/tabs/settings/legendary.py b/rare/components/tabs/settings/legendary.py index 37af5c13..1f7c3435 100644 --- a/rare/components/tabs/settings/legendary.py +++ b/rare/components/tabs/settings/legendary.py @@ -1,13 +1,14 @@ +import platform import re from logging import getLogger from typing import Tuple -from PyQt5.QtCore import Qt, QRunnable, QObject, pyqtSignal, QThreadPool +from PyQt5.QtCore import Qt, QRunnable, QObject, pyqtSignal, QThreadPool, QSettings from PyQt5.QtWidgets import QSizePolicy, QWidget, QFileDialog, QMessageBox -from rare.shared import LegendaryCoreSingleton from rare.components.tabs.settings.widgets.eos import EosWidget from rare.components.tabs.settings.widgets.ubisoft_activation import UbiActivationHelper +from rare.shared import LegendaryCoreSingleton from rare.ui.components.tabs.settings.legendary import Ui_LegendarySettings from rare.utils.extra_widgets import PathEdit, IndicatorLineEdit from rare.utils.utils import get_size @@ -38,6 +39,7 @@ class LegendarySettings(QWidget, Ui_LegendarySettings): def __init__(self, parent=None): super(LegendarySettings, self).__init__(parent=parent) self.setupUi(self) + self.settings = QSettings() self.core = LegendaryCoreSingleton() @@ -89,6 +91,12 @@ class LegendarySettings(QWidget, Ui_LegendarySettings): self.eos_widget = EosWidget() self.left_layout.insertWidget(3, self.eos_widget, alignment=Qt.AlignTop) + self.win32_cb.setChecked(self.settings.value("win32_meta", False, bool)) + self.win32_cb.stateChanged.connect(lambda: self.settings.setValue("win32_meta", self.win32_cb.isChecked())) + + self.mac_cb.setChecked(self.settings.value("mac_meta", platform.system() == "Darwin", bool)) + self.mac_cb.stateChanged.connect(lambda: self.settings.setValue("mac_meta", self.mac_cb.isChecked())) + self.refresh_game_meta_btn.clicked.connect(self.refresh_game_meta) def refresh_game_meta(self): diff --git a/rare/ui/components/tabs/settings/legendary.py b/rare/ui/components/tabs/settings/legendary.py index c5964855..f98146af 100644 --- a/rare/ui/components/tabs/settings/legendary.py +++ b/rare/ui/components/tabs/settings/legendary.py @@ -14,10 +14,52 @@ from PyQt5 import QtCore, QtGui, QtWidgets class Ui_LegendarySettings(object): def setupUi(self, LegendarySettings): LegendarySettings.setObjectName("LegendarySettings") - LegendarySettings.resize(552, 312) + LegendarySettings.resize(654, 498) LegendarySettings.setWindowTitle("LegendarySettings") - self.legendary_layout = QtWidgets.QHBoxLayout(LegendarySettings) - self.legendary_layout.setObjectName("legendary_layout") + self.gridLayout = QtWidgets.QGridLayout(LegendarySettings) + self.gridLayout.setObjectName("gridLayout") + self.right_layout = QtWidgets.QVBoxLayout() + self.right_layout.setObjectName("right_layout") + self.locale_group = QtWidgets.QGroupBox(LegendarySettings) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.locale_group.sizePolicy().hasHeightForWidth()) + self.locale_group.setSizePolicy(sizePolicy) + self.locale_group.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop) + self.locale_group.setObjectName("locale_group") + self.locale_layout = QtWidgets.QVBoxLayout(self.locale_group) + self.locale_layout.setObjectName("locale_layout") + self.right_layout.addWidget(self.locale_group, 0, QtCore.Qt.AlignTop) + self.cleanup_group = QtWidgets.QGroupBox(LegendarySettings) + self.cleanup_group.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop) + self.cleanup_group.setObjectName("cleanup_group") + 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.cleanup_layout.addWidget(self.clean_keep_manifests_button) + self.clean_button = QtWidgets.QPushButton(self.cleanup_group) + self.clean_button.setObjectName("clean_button") + self.cleanup_layout.addWidget(self.clean_button) + self.right_layout.addWidget(self.cleanup_group, 0, QtCore.Qt.AlignTop) + self.meta_group = QtWidgets.QGroupBox(LegendarySettings) + self.meta_group.setObjectName("meta_group") + self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.meta_group) + self.verticalLayout_2.setObjectName("verticalLayout_2") + self.win32_cb = QtWidgets.QCheckBox(self.meta_group) + self.win32_cb.setObjectName("win32_cb") + self.verticalLayout_2.addWidget(self.win32_cb) + self.mac_cb = QtWidgets.QCheckBox(self.meta_group) + self.mac_cb.setObjectName("mac_cb") + self.verticalLayout_2.addWidget(self.mac_cb) + self.refresh_game_meta_btn = QtWidgets.QPushButton(self.meta_group) + self.refresh_game_meta_btn.setObjectName("refresh_game_meta_btn") + self.verticalLayout_2.addWidget(self.refresh_game_meta_btn) + self.right_layout.addWidget(self.meta_group) + spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.right_layout.addItem(spacerItem) + self.gridLayout.addLayout(self.right_layout, 0, 1, 1, 1) self.left_layout = QtWidgets.QVBoxLayout() self.left_layout.setObjectName("left_layout") self.install_dir_group = QtWidgets.QGroupBox(LegendarySettings) @@ -104,46 +146,23 @@ class Ui_LegendarySettings(object): self.verticalLayout = QtWidgets.QVBoxLayout(self.ubisoft_gb) self.verticalLayout.setObjectName("verticalLayout") self.left_layout.addWidget(self.ubisoft_gb, 0, QtCore.Qt.AlignTop) - spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) - self.left_layout.addItem(spacerItem) - self.legendary_layout.addLayout(self.left_layout) - self.right_layout = QtWidgets.QVBoxLayout() - self.right_layout.setObjectName("right_layout") - self.locale_group = QtWidgets.QGroupBox(LegendarySettings) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.locale_group.sizePolicy().hasHeightForWidth()) - self.locale_group.setSizePolicy(sizePolicy) - self.locale_group.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop) - self.locale_group.setObjectName("locale_group") - self.locale_layout = QtWidgets.QVBoxLayout(self.locale_group) - self.locale_layout.setObjectName("locale_layout") - self.right_layout.addWidget(self.locale_group, 0, QtCore.Qt.AlignTop) - self.cleanup_group = QtWidgets.QGroupBox(LegendarySettings) - self.cleanup_group.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop) - self.cleanup_group.setObjectName("cleanup_group") - 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.cleanup_layout.addWidget(self.clean_keep_manifests_button) - self.clean_button = QtWidgets.QPushButton(self.cleanup_group) - self.clean_button.setObjectName("clean_button") - self.cleanup_layout.addWidget(self.clean_button) - self.refresh_game_meta_btn = QtWidgets.QPushButton(self.cleanup_group) - self.refresh_game_meta_btn.setObjectName("refresh_game_meta_btn") - self.cleanup_layout.addWidget(self.refresh_game_meta_btn) - self.right_layout.addWidget(self.cleanup_group, 0, QtCore.Qt.AlignTop) spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) - self.right_layout.addItem(spacerItem1) - self.legendary_layout.addLayout(self.right_layout) + self.left_layout.addItem(spacerItem1) + self.gridLayout.addLayout(self.left_layout, 0, 0, 1, 1) self.retranslateUi(LegendarySettings) QtCore.QMetaObject.connectSlotsByName(LegendarySettings) def retranslateUi(self, LegendarySettings): _translate = QtCore.QCoreApplication.translate + self.locale_group.setTitle(_translate("LegendarySettings", "Locale")) + self.cleanup_group.setTitle(_translate("LegendarySettings", "Cleanup")) + self.clean_keep_manifests_button.setText(_translate("LegendarySettings", "Clean, but keep manifests")) + self.clean_button.setText(_translate("LegendarySettings", "Remove everything")) + self.meta_group.setTitle(_translate("LegendarySettings", "Game metadata")) + self.win32_cb.setText(_translate("LegendarySettings", "Load 32 bit data")) + self.mac_cb.setText(_translate("LegendarySettings", "Load MacOS data")) + self.refresh_game_meta_btn.setText(_translate("LegendarySettings", "Refresh game meta")) 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")) @@ -155,11 +174,6 @@ class Ui_LegendarySettings(object): self.preferred_cdn_line.setPlaceholderText(_translate("LegendarySettings", "Default")) self.disable_https_label.setText(_translate("LegendarySettings", "Disable HTTPS")) self.ubisoft_gb.setTitle(_translate("LegendarySettings", "Link Ubisoft Games")) - self.locale_group.setTitle(_translate("LegendarySettings", "Locale")) - self.cleanup_group.setTitle(_translate("LegendarySettings", "Cleanup")) - self.clean_keep_manifests_button.setText(_translate("LegendarySettings", "Clean, but keep manifests")) - self.clean_button.setText(_translate("LegendarySettings", "Remove everything")) - self.refresh_game_meta_btn.setText(_translate("LegendarySettings", "Refresh game meta")) if __name__ == "__main__": diff --git a/rare/ui/components/tabs/settings/legendary.ui b/rare/ui/components/tabs/settings/legendary.ui index 4546e743..ee6dc545 100644 --- a/rare/ui/components/tabs/settings/legendary.ui +++ b/rare/ui/components/tabs/settings/legendary.ui @@ -1,266 +1,323 @@ - LegendarySettings - - - - 0 - 0 - 552 - 312 - - - - LegendarySettings - - - - - - - - Default Installation Directory - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - - - - - Download Settings - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + LegendarySettings + + + + 0 + 0 + 552 + 312 + - - - - - 0 - 0 - - - - Max Workers - - - - - - - - - - 0 - 0 - + + LegendarySettings + + + + + + Clean, but keep manifests + + + + + + + Remove everything + + + + + + + + + Game metadata - - 0 + + + + + Load 32 bit data + + + + + + + Load MacOS data + + + + + + + Refresh game meta + + + + + + + + + + Qt::Vertical - - 16 + + + 20 + 40 + - - 0 - - - - - - - - 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 - - - - - - - - - - - - - - - - - Link Ubisoft Games - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - 0 - 0 - - - - Locale - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - - - - - Cleanup - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - - - Clean, but keep manifests - - - - - - - Remove everything - - - - - - - Refresh game meta - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - + + + + + + + + Default Installation Directory + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + + + + Download Settings + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + 0 + 0 + + + + Max Workers + + + + + + + + + + 0 + 0 + + + + 0 + + + 16 + + + 0 + + + + + + + + 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 + + + + + + + + + + + + + + + + + Link Ubisoft Games + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + 0 + 0 + + + + Locale + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + + + + Cleanup + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + + Clean, but keep manifests + + + + + + + Remove everything + + + + + + + Refresh game meta + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + +