1
0
Fork 0
mirror of synced 2024-06-17 18:14:44 +12:00

ImportGroup: Add force import option.

When checked, the check for missing files will be skipped, allowing
for games missing too many files or their executable to be imported.
This commit is contained in:
loathingKernel 2023-05-07 16:31:05 +03:00
parent 23c2f6dc0a
commit 7218f0b696
No known key found for this signature in database
GPG key ID: CE0C72D0B53821FD
3 changed files with 63 additions and 7 deletions

View file

@ -69,7 +69,14 @@ class ImportWorker(QRunnable):
progress = pyqtSignal(ImportedGame, int)
result = pyqtSignal(list)
def __init__(self, core: LegendaryCore, path: str, app_name: str = None, import_folder: bool = False, import_dlcs: bool = False):
def __init__(
self,
core: LegendaryCore, path: str,
app_name: str = None,
import_folder: bool = False,
import_dlcs: bool = False,
import_force: bool = False
):
super(ImportWorker, self).__init__()
self.signals = ImportWorker.Signals()
self.core = core
@ -78,6 +85,7 @@ class ImportWorker(QRunnable):
self.app_name = app_name
self.import_folder = import_folder
self.import_dlcs = import_dlcs
self.import_force = import_force
def run(self) -> None:
result_list: List = []
@ -116,6 +124,9 @@ class ImportWorker(QRunnable):
args = LgndrImportGameArgs(
app_path=str(path),
app_name=app_name,
disable_check=self.import_force,
skip_dlcs=not self.import_dlcs,
with_dlcs=self.import_dlcs,
indirect_status=status,
get_boolean_choice=lambda prompt, default=True: self.import_dlcs
)
@ -237,6 +248,7 @@ class ImportGroup(QGroupBox):
def path_changed(self, path: str):
self.info_label.setText("")
self.ui.import_folder_check.setCheckState(Qt.Unchecked)
self.ui.import_force_check.setCheckState(Qt.Unchecked)
if self.path_edit.is_valid:
self.app_name_edit.setText(find_app_name(path, self.core))
else:
@ -254,6 +266,7 @@ class ImportGroup(QGroupBox):
def app_name_changed(self, app_name: str):
self.info_label.setText("")
self.ui.import_dlcs_check.setCheckState(Qt.Unchecked)
self.ui.import_force_check.setCheckState(Qt.Unchecked)
if self.app_name_edit.is_valid:
self.ui.import_dlcs_check.setEnabled(
bool(self.core.get_dlc_for_game(app_name))
@ -267,6 +280,7 @@ class ImportGroup(QGroupBox):
def import_folder_changed(self, state: Qt.CheckState):
self.app_name_edit.setEnabled(not state)
self.ui.import_dlcs_check.setCheckState(Qt.Unchecked)
self.ui.import_force_check.setCheckState(Qt.Unchecked)
self.ui.import_dlcs_check.setEnabled(
state
or (self.app_name_edit.is_valid and bool(self.core.get_dlc_for_game(self.app_name_edit.text())))
@ -287,6 +301,7 @@ class ImportGroup(QGroupBox):
self.app_name_edit.text(),
self.ui.import_folder_check.isChecked(),
self.ui.import_dlcs_check.isChecked(),
self.ui.import_force_check.isChecked()
)
worker.signals.result.connect(self.__on_import_result)
worker.signals.progress.connect(self.__on_import_progress)

View file

@ -1,8 +1,8 @@
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'rare/ui/components/tabs/games/import_sync/import_group.ui'
# Form implementation generated from reading ui file 'rare/ui/components/tabs/games/integrations/import_group.ui'
#
# Created by: PyQt5 UI code generator 5.15.7
# Created by: PyQt5 UI code generator 5.15.9
#
# 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.
@ -14,7 +14,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_ImportGroup(object):
def setupUi(self, ImportGroup):
ImportGroup.setObjectName("ImportGroup")
ImportGroup.resize(501, 162)
ImportGroup.resize(501, 184)
ImportGroup.setWindowTitle("ImportGroup")
ImportGroup.setWindowFilePath("")
self.import_layout = QtWidgets.QFormLayout(ImportGroup)
@ -50,6 +50,10 @@ class Ui_ImportGroup(object):
self.import_dlcs_check.setFont(font)
self.import_dlcs_check.setObjectName("import_dlcs_check")
self.import_layout.setWidget(3, QtWidgets.QFormLayout.FieldRole, self.import_dlcs_check)
self.import_button_label = QtWidgets.QLabel(ImportGroup)
self.import_button_label.setText("")
self.import_button_label.setObjectName("import_button_label")
self.import_layout.setWidget(5, QtWidgets.QFormLayout.LabelRole, self.import_button_label)
self.button_info_layout = QtWidgets.QHBoxLayout()
self.button_info_layout.setObjectName("button_info_layout")
self.import_button = QtWidgets.QPushButton(ImportGroup)
@ -60,7 +64,16 @@ class Ui_ImportGroup(object):
self.import_button.setSizePolicy(sizePolicy)
self.import_button.setObjectName("import_button")
self.button_info_layout.addWidget(self.import_button)
self.import_layout.setLayout(4, QtWidgets.QFormLayout.FieldRole, self.button_info_layout)
self.import_layout.setLayout(5, QtWidgets.QFormLayout.FieldRole, self.button_info_layout)
self.import_force_label = QtWidgets.QLabel(ImportGroup)
self.import_force_label.setObjectName("import_force_label")
self.import_layout.setWidget(4, QtWidgets.QFormLayout.LabelRole, self.import_force_label)
self.import_force_check = QtWidgets.QCheckBox(ImportGroup)
font = QtGui.QFont()
font.setItalic(True)
self.import_force_check.setFont(font)
self.import_force_check.setObjectName("import_force_check")
self.import_layout.setWidget(4, QtWidgets.QFormLayout.FieldRole, self.import_force_check)
self.retranslateUi(ImportGroup)
@ -74,6 +87,8 @@ class Ui_ImportGroup(object):
self.import_dlcs_label.setText(_translate("ImportGroup", "Import DLCs"))
self.import_dlcs_check.setText(_translate("ImportGroup", "If a game has DLCs, try to import them too"))
self.import_button.setText(_translate("ImportGroup", "Import Game"))
self.import_force_label.setText(_translate("ImportGroup", "Force import"))
self.import_force_check.setText(_translate("ImportGroup", "Import game despite missing files"))
if __name__ == "__main__":

View file

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>501</width>
<height>162</height>
<height>184</height>
</rect>
</property>
<property name="windowTitle">
@ -81,7 +81,14 @@
</property>
</widget>
</item>
<item row="4" column="1">
<item row="5" column="0">
<widget class="QLabel" name="import_button_label">
<property name="text">
<string notr="true"/>
</property>
</widget>
</item>
<item row="5" column="1">
<layout class="QHBoxLayout" name="button_info_layout">
<item>
<widget class="QPushButton" name="import_button">
@ -98,6 +105,25 @@
</item>
</layout>
</item>
<item row="4" column="0">
<widget class="QLabel" name="import_force_label">
<property name="text">
<string>Force import</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QCheckBox" name="import_force_check">
<property name="font">
<font>
<italic>true</italic>
</font>
</property>
<property name="text">
<string>Import game despite missing files</string>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>