1
0
Fork 0
mirror of synced 2024-09-30 09:17:37 +13:00

Add load meta settings for 32 bit and macos

This commit is contained in:
Dummerle 2022-03-14 17:52:48 +01:00
parent 6de9a4c15e
commit c26a30d9c9
No known key found for this signature in database
GPG key ID: AB68CC59CA39F2F1
4 changed files with 391 additions and 307 deletions

View file

@ -2,7 +2,7 @@ import os
import platform import platform
from logging import getLogger 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 PyQt5.QtWidgets import QDialog, QApplication
from legendary.core import LegendaryCore from legendary.core import LegendaryCore
from requests.exceptions import ConnectionError, HTTPError from requests.exceptions import ConnectionError, HTTPError
@ -40,9 +40,10 @@ class ApiRequestWorker(QRunnable):
self.signals = LaunchDialogSignals() self.signals = LaunchDialogSignals()
self.setAutoDelete(True) self.setAutoDelete(True)
self.core = LegendaryCoreSingleton() self.core = LegendaryCoreSingleton()
self.settings = QSettings()
def run(self) -> None: 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: try:
result = self.core.get_game_and_dlc_list(True, "Mac") result = self.core.get_game_and_dlc_list(True, "Mac")
except HTTPError: except HTTPError:
@ -50,10 +51,14 @@ class ApiRequestWorker(QRunnable):
self.signals.result.emit(result, "mac") self.signals.result.emit(result, "mac")
else: else:
self.signals.result.emit(([], {}), "mac") self.signals.result.emit(([], {}), "mac")
if self.settings.value("win32_meta", False, bool):
try: try:
result = self.core.get_game_and_dlc_list(True, "Win32") result = self.core.get_game_and_dlc_list(True, "Win32")
except HTTPError: except HTTPError:
result = [], {} result = [], {}
else:
result = [], {}
self.signals.result.emit(result, "32bit") self.signals.result.emit(result, "32bit")

View file

@ -1,13 +1,14 @@
import platform
import re import re
from logging import getLogger from logging import getLogger
from typing import Tuple 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 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.eos import EosWidget
from rare.components.tabs.settings.widgets.ubisoft_activation import UbiActivationHelper 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.ui.components.tabs.settings.legendary import Ui_LegendarySettings
from rare.utils.extra_widgets import PathEdit, IndicatorLineEdit from rare.utils.extra_widgets import PathEdit, IndicatorLineEdit
from rare.utils.utils import get_size from rare.utils.utils import get_size
@ -38,6 +39,7 @@ class LegendarySettings(QWidget, Ui_LegendarySettings):
def __init__(self, parent=None): def __init__(self, parent=None):
super(LegendarySettings, self).__init__(parent=parent) super(LegendarySettings, self).__init__(parent=parent)
self.setupUi(self) self.setupUi(self)
self.settings = QSettings()
self.core = LegendaryCoreSingleton() self.core = LegendaryCoreSingleton()
@ -89,6 +91,12 @@ class LegendarySettings(QWidget, Ui_LegendarySettings):
self.eos_widget = EosWidget() self.eos_widget = EosWidget()
self.left_layout.insertWidget(3, self.eos_widget, alignment=Qt.AlignTop) 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) self.refresh_game_meta_btn.clicked.connect(self.refresh_game_meta)
def refresh_game_meta(self): def refresh_game_meta(self):

View file

@ -14,10 +14,52 @@ from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_LegendarySettings(object): class Ui_LegendarySettings(object):
def setupUi(self, LegendarySettings): def setupUi(self, LegendarySettings):
LegendarySettings.setObjectName("LegendarySettings") LegendarySettings.setObjectName("LegendarySettings")
LegendarySettings.resize(552, 312) LegendarySettings.resize(654, 498)
LegendarySettings.setWindowTitle("LegendarySettings") LegendarySettings.setWindowTitle("LegendarySettings")
self.legendary_layout = QtWidgets.QHBoxLayout(LegendarySettings) self.gridLayout = QtWidgets.QGridLayout(LegendarySettings)
self.legendary_layout.setObjectName("legendary_layout") 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 = QtWidgets.QVBoxLayout()
self.left_layout.setObjectName("left_layout") self.left_layout.setObjectName("left_layout")
self.install_dir_group = QtWidgets.QGroupBox(LegendarySettings) self.install_dir_group = QtWidgets.QGroupBox(LegendarySettings)
@ -104,46 +146,23 @@ class Ui_LegendarySettings(object):
self.verticalLayout = QtWidgets.QVBoxLayout(self.ubisoft_gb) self.verticalLayout = QtWidgets.QVBoxLayout(self.ubisoft_gb)
self.verticalLayout.setObjectName("verticalLayout") self.verticalLayout.setObjectName("verticalLayout")
self.left_layout.addWidget(self.ubisoft_gb, 0, QtCore.Qt.AlignTop) 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) spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.right_layout.addItem(spacerItem1) self.left_layout.addItem(spacerItem1)
self.legendary_layout.addLayout(self.right_layout) self.gridLayout.addLayout(self.left_layout, 0, 0, 1, 1)
self.retranslateUi(LegendarySettings) self.retranslateUi(LegendarySettings)
QtCore.QMetaObject.connectSlotsByName(LegendarySettings) QtCore.QMetaObject.connectSlotsByName(LegendarySettings)
def retranslateUi(self, LegendarySettings): def retranslateUi(self, LegendarySettings):
_translate = QtCore.QCoreApplication.translate _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.install_dir_group.setTitle(_translate("LegendarySettings", "Default Installation Directory"))
self.download_group.setTitle(_translate("LegendarySettings", "Download Settings")) self.download_group.setTitle(_translate("LegendarySettings", "Download Settings"))
self.max_workers_label.setText(_translate("LegendarySettings", "Max Workers")) 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.preferred_cdn_line.setPlaceholderText(_translate("LegendarySettings", "Default"))
self.disable_https_label.setText(_translate("LegendarySettings", "Disable HTTPS")) self.disable_https_label.setText(_translate("LegendarySettings", "Disable HTTPS"))
self.ubisoft_gb.setTitle(_translate("LegendarySettings", "Link Ubisoft Games")) 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__": if __name__ == "__main__":

View file

@ -15,6 +15,65 @@
</property> </property>
<layout class="QHBoxLayout" name="legendary_layout"> <layout class="QHBoxLayout" name="legendary_layout">
<item> <item>
<widget class="QPushButton" name="clean_keep_manifests_button">
<property name="text">
<string>Clean, but keep manifests</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="clean_button">
<property name="text">
<string>Remove everything</string>
</property>
</widget>
</item>
</layout>
</widget>
<item>
<widget class="QGroupBox" name="meta_group">
<property name="title">
<string>Game metadata</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QCheckBox" name="win32_cb">
<property name="text">
<string>Load 32 bit data</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="mac_cb">
<property name="text">
<string>Load MacOS data</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="refresh_game_meta_btn">
<property name="text">
<string>Refresh game meta</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="right_vspacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="0">
<layout class="QVBoxLayout" name="left_layout"> <layout class="QVBoxLayout" name="left_layout">
<item alignment="Qt::AlignTop"> <item alignment="Qt::AlignTop">
<widget class="QGroupBox" name="install_dir_group"> <widget class="QGroupBox" name="install_dir_group">
@ -259,8 +318,6 @@
</item> </item>
</layout> </layout>
</item> </item>
</layout>
</widget>
<resources/> <resources/>
<connections/> <connections/>
</ui> </ui>