diff --git a/rare/components/dialogs/install_dialog.py b/rare/components/dialogs/install_dialog.py
index 9da47805..6d4c3d13 100644
--- a/rare/components/dialogs/install_dialog.py
+++ b/rare/components/dialogs/install_dialog.py
@@ -1,19 +1,21 @@
import os
from PyQt5.QtCore import QObject, QRunnable, QThreadPool, pyqtSignal, pyqtSlot
-from PyQt5.QtWidgets import QDialog, QFileDialog
+from PyQt5.QtWidgets import QDialog, QFileDialog, QCheckBox
from custom_legendary.core import LegendaryCore
+from custom_legendary.utils.selective_dl import games
from rare.ui.components.dialogs.install_dialog import Ui_InstallDialog
from rare.utils.extra_widgets import PathEdit
+from rare.utils.models import InstallOptions
from rare.utils.utils import get_size
class InstallDialog(QDialog, Ui_InstallDialog):
- infos = False
+ options = False
- def __init__(self, app_name, core: LegendaryCore, update=False):
- super(InstallDialog, self).__init__()
+ def __init__(self, app_name, core: LegendaryCore, update=False, parent=None):
+ super(InstallDialog, self).__init__(parent=parent)
self.setupUi(self)
self.core = core
@@ -23,10 +25,9 @@ class InstallDialog(QDialog, Ui_InstallDialog):
self.threadpool = QThreadPool.globalInstance()
- header_text = self.tr("Update") if update else self.tr("Install")
- self.install_dialog_label.setText("
{} \"{}\"
".format(header_text, self.game.app_title))
- # TODO: Get application name from QApplication instance
- self.setWindowTitle("{} - {} \"{}\"".format("Rare", header_text, self.game.app_title))
+ header = self.tr("Update") if update else self.tr("Install")
+ self.install_dialog_label.setText(f"{header} \"{self.game.app_title}\"
")
+ self.setWindowTitle(f"{self.windowTitle()} - {header} \"{self.game.app_title}\"")
if self.core.lgd.config.has_option("Legendary", "install_dir"):
default_path = self.core.lgd.config.get("Legendary", "install_dir")
@@ -35,14 +36,14 @@ class InstallDialog(QDialog, Ui_InstallDialog):
if not default_path:
default_path = os.path.expanduser("~/legendary")
- self.install_dir_path = PathEdit(text=default_path,
+ self.install_dir_edit = PathEdit(text=default_path,
file_type=QFileDialog.DirectoryOnly,
edit_func=self.on_install_dir_text_changed)
- self.install_dir_layout.addWidget(self.install_dir_path)
+ self.install_dir_layout.addWidget(self.install_dir_edit)
if update:
self.install_dir_label.setVisible(False)
- self.install_dir_path.setVisible(False)
+ self.install_dir_edit.setVisible(False)
if self.core.lgd.config.has_option("Legendary", "max_workers"):
max_workers = self.core.lgd.config.get("Legendary", "max_workers")
@@ -50,41 +51,70 @@ class InstallDialog(QDialog, Ui_InstallDialog):
max_workers = 0
self.max_workers_spin.setValue(int(max_workers))
- self.get_install_info(app_name, default_path)
+ self.sdl_list_checks = list()
+ self.tags = list()
+ try:
+ for key, info in games[app_name].items():
+ cb = QDataCheckBox(info['name'], info['tags'])
+ cb.stateChanged.connect(self.on_sdl_checkbox_changed)
+ if key == '__required':
+ self.tags.extend(info['tags'])
+ cb.setChecked(True)
+ cb.setDisabled(True)
+ self.sdl_list_layout.addWidget(cb)
+ self.sdl_list_checks.append(cb)
+ self.sdl_list_frame.resize(self.sdl_list_frame.minimumSize())
+ except KeyError:
+ self.sdl_list_frame.setVisible(False)
+ self.sdl_list_label.setVisible(False)
+
+ self.get_install_info(app_name, default_path, self.tags)
self.install_button.clicked.connect(self.on_install_button_clicked)
self.cancel_button.clicked.connect(self.on_cancel_button_clicked)
- self.resize(self.minimumSizeHint())
+ self.resize(self.minimumSize())
self.setFixedSize(self.size())
- def get_information(self, path=None):
+ def get_install_options(self, path=None):
if path:
- self.install_dir_path.setText(path)
+ self.install_dir_edit.setText(path)
self.exec_()
- return self.infos
+ return self.options
- def get_install_info(self, app_name, default_path):
- updating_text = self.tr("Updating...")
- self.download_size_info_label.setText(updating_text)
+ def get_install_info(self, app_name, path, tags):
+ message = self.tr("Updating...")
+ self.download_size_info_label.setText(message)
self.download_size_info_label.setStyleSheet("font-style: italic; font-weight: normal")
- self.install_size_info_label.setText(updating_text)
+ self.install_size_info_label.setText(message)
self.install_size_info_label.setStyleSheet("font-style: italic; font-weight: normal")
self.install_button.setEnabled(False)
- info_worker = InstallInfoWorker(app_name, default_path, self.core)
+ self.sdl_list_frame.setEnabled(False)
+ info_worker = InstallInfoWorker(app_name, path, tags, self.core)
info_worker.setAutoDelete(True)
info_worker.signals.finished.connect(self.on_worker_finished)
self.threadpool.start(info_worker)
+ def on_sdl_checkbox_changed(self):
+ self.tags = list()
+ for cb in self.sdl_list_checks:
+ if data := cb.isChecked():
+ self.tags.extend(data)
+ self.get_install_info(self.app_name, self.install_dir_edit.text(), self.tags)
+
def on_install_dir_text_changed(self, path: str):
- self.get_install_info(self.app_name, path)
+ self.get_install_info(self.app_name, path, self.tags)
def on_install_button_clicked(self):
- self.infos = self.install_dir_path.text() if not self.update_game else None, \
- self.max_workers_spin.value(), \
- self.force_download_check.isChecked(), \
- self.ignore_space_check.isChecked(), \
- self.download_only_check.isChecked()
+ self.options = InstallOptions(
+ app_name=self.app_name,
+ path=self.install_dir_edit.text() if not self.update_game else None,
+ max_workers=self.max_workers_spin.value(),
+ force=self.force_download_check.isChecked(),
+ ignore_free_space=self.ignore_space_check.isChecked(),
+ download_only=self.download_only_check.isChecked(),
+ sdl_list=self.tags
+ )
self.threadpool.clear()
self.close()
@@ -94,11 +124,9 @@ class InstallDialog(QDialog, Ui_InstallDialog):
def on_worker_finished(self, info: tuple):
download_size, install_size = info
-
# TODO: Check available size and act accordingly
# TODO: (show message in label | color it | disable install unless ignore)
# TODO: Find a way to get the installation size delta and show it
-
if download_size is not None and install_size is not None:
if download_size:
self.download_size_info_label.setText("{}".format(get_size(download_size)))
@@ -112,6 +140,7 @@ class InstallDialog(QDialog, Ui_InstallDialog):
else:
self.download_size_info_label.setText("Error")
self.install_size_info_label.setText("Error")
+ self.sdl_list_frame.setEnabled(True)
class InstallInfoWorkerSignals(QObject):
@@ -120,12 +149,13 @@ class InstallInfoWorkerSignals(QObject):
class InstallInfoWorker(QRunnable):
- def __init__(self, app_name, path, core: LegendaryCore):
+ def __init__(self, app_name, path, tags, core: LegendaryCore):
super(InstallInfoWorker, self).__init__()
self.signals = InstallInfoWorkerSignals()
self.core = core
self.app_name = app_name
self.path = path
+ self.tags = tags
@pyqtSlot()
def run(self):
@@ -133,8 +163,23 @@ class InstallInfoWorker(QRunnable):
dlm, analysis, game, igame, repair, repair_file = self.core.prepare_download(
app_name=self.app_name,
base_path=self.path,
+ sdl_prompt=lambda app_name, title: self.tags
)
self.signals.finished.emit((analysis.dl_size, analysis.install_size))
except:
self.signals.finished.emit((None, None))
return
+
+
+class QDataCheckBox(QCheckBox):
+
+ def __init__(self, text, data=None):
+ super(QDataCheckBox, self).__init__()
+ self.setText(text)
+ self.data = data
+
+ def isChecked(self):
+ if super(QDataCheckBox, self).isChecked():
+ return self.data
+ else:
+ return False
diff --git a/rare/components/tab_widget.py b/rare/components/tab_widget.py
index 5818536e..9c1da44c 100644
--- a/rare/components/tab_widget.py
+++ b/rare/components/tab_widget.py
@@ -97,12 +97,9 @@ class TabWidget(QTabWidget):
def install_game(self, app_name, disable_path=False):
- infos = InstallDialog(app_name, self.core, disable_path).get_information()
- if infos:
- path, max_workers, force, ignore_free_space, dl_only = infos
- options = InstallOptions(app_name=app_name, max_workers=max_workers, path=path, force=force,
- ignore_free_space=ignore_free_space, download_only=dl_only)
-
+ options = InstallDialog(app_name, self.core, disable_path, parent=self).get_install_options()
+ if options:
+ self.setCurrentIndex(1)
self.start_download(options)
def start_download(self, options):
diff --git a/rare/components/tabs/downloads/__init__.py b/rare/components/tabs/downloads/__init__.py
index 78cf3fbc..3eaf7aae 100644
--- a/rare/components/tabs/downloads/__init__.py
+++ b/rare/components/tabs/downloads/__init__.py
@@ -29,6 +29,7 @@ class DownloadTab(QWidget):
self.core = core
self.layout = QVBoxLayout()
self.active_game: Game = None
+ self.analysis = None
self.info_layout = QGridLayout()
@@ -85,7 +86,7 @@ class DownloadTab(QWidget):
widget = UpdateWidget(self.core, igame, self)
self.update_layout.addWidget(widget)
self.update_widgets[igame.app_name] = widget
- widget.update.connect(self.update_game)
+ widget.update_signal.connect(self.update_game)
if QSettings().value("auto_update", False, bool):
self.update_game(igame.app_name, True)
widget.update_button.setDisabled(True)
@@ -125,7 +126,8 @@ class DownloadTab(QWidget):
# disable_delta=,
# override_delta_manifest=,
# reset_sdl=,
- sdl_prompt=self.sdl_prompt)
+ sdl_prompt=lambda app_name, title: options.sdl_list
+ )
except Exception as e:
QMessageBox.warning(self, self.tr("Error preparing download"),
str(e))
@@ -153,44 +155,6 @@ class DownloadTab(QWidget):
self.analysis = analysis
self.installing_game.setText(self.tr("Installing Game: ") + self.active_game.app_title)
- def sdl_prompt(self, app_name: str = '', title: str = '') -> list:
- sdl = QDialog()
- sdl.setWindowTitle('Select Additional Downloads')
-
- layout = QVBoxLayout(sdl)
- sdl.setLayout(layout)
-
- pack_list = QListWidget()
- layout.addWidget(pack_list)
-
- done = QPushButton(text='Done')
- done.clicked.connect(sdl.accept)
- layout.addWidget(done)
-
- tags = ['']
- if '__required' in games[app_name]:
- tags.extend(games[app_name]['__required']['tags'])
-
- # add available additional downloads to list
- pack_list.addItems([tag + ': ' + info['name'] for tag, info in games[app_name].items() if tag != '__required'])
-
- # enable checkboxes
- for i in range(len(pack_list)):
- item = pack_list.item(i)
- item.setFlags(Qt.ItemIsUserCheckable | Qt.ItemIsEnabled)
- item.setCheckState(Qt.Unchecked)
-
- sdl.exec_()
-
- # read checkboxes states
- for i in range(len(pack_list)):
- item = pack_list.item(i)
- if item.checkState() == Qt.Checked:
- tag = item.text().split(':')[0]
- tags.extend(games[app_name][tag]['tags'])
-
- return tags
-
def status(self, text):
if text == "dl_finished":
pass
@@ -270,14 +234,12 @@ class DownloadTab(QWidget):
def update_game(self, app_name: str, auto=False):
logger.info("Update " + app_name)
if not auto:
- infos = InstallDialog(app_name, self.core, True).get_information()
+ options = InstallDialog(app_name, self.core, True).get_install_options()
else:
self.install_game(InstallOptions(app_name=app_name), True)
return
- if infos:
- path, max_workers, force, ignore_free_space, dl_only = infos
- self.install_game(InstallOptions(app_name=app_name, max_workers=max_workers, path=path,
- force=force, ignore_free_space=ignore_free_space, download_only=dl_only), True)
+ if options:
+ self.install_game(options, True)
else:
self.update_widgets[app_name].update_button.setDisabled(False)
self.update_widgets[app_name].update_with_settings.setDisabled(False)
diff --git a/rare/ui/components/dialogs/install_dialog.py b/rare/ui/components/dialogs/install_dialog.py
index e693ce8c..467d4f4c 100644
--- a/rare/ui/components/dialogs/install_dialog.py
+++ b/rare/ui/components/dialogs/install_dialog.py
@@ -14,106 +14,119 @@ from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_InstallDialog(object):
def setupUi(self, InstallDialog):
InstallDialog.setObjectName("InstallDialog")
+ InstallDialog.setWindowTitle("Rare")
self.install_dialog_layout = QtWidgets.QGridLayout(InstallDialog)
self.install_dialog_layout.setObjectName("install_dialog_layout")
- self.ignore_space_label = QtWidgets.QLabel(InstallDialog)
- self.ignore_space_label.setObjectName("ignore_space_label")
- self.install_dialog_layout.addWidget(self.ignore_space_label, 4, 0, 1, 1, QtCore.Qt.AlignRight)
- self.install_dialog_label = QtWidgets.QLabel(InstallDialog)
- self.install_dialog_label.setObjectName("install_dialog_label")
- self.install_dialog_layout.addWidget(self.install_dialog_label, 0, 0, 1, 3)
- self.download_size_label = QtWidgets.QLabel(InstallDialog)
- self.download_size_label.setObjectName("download_size_label")
- self.install_dialog_layout.addWidget(self.download_size_label, 6, 0, 1, 1, QtCore.Qt.AlignRight)
- self.install_size_info_label = QtWidgets.QLabel(InstallDialog)
- self.install_size_info_label.setText("")
- self.install_size_info_label.setObjectName("install_size_info_label")
- self.install_dialog_layout.addWidget(self.install_size_info_label, 7, 1, 1, 2)
- self.install_dir_label = QtWidgets.QLabel(InstallDialog)
- self.install_dir_label.setObjectName("install_dir_label")
- self.install_dialog_layout.addWidget(self.install_dir_label, 1, 0, 1, 1, QtCore.Qt.AlignRight)
- spacerItem = QtWidgets.QSpacerItem(0, 0, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.install_dialog_layout.addItem(spacerItem, 3, 2, 1, 1)
- self.ignore_space_info_label = QtWidgets.QLabel(InstallDialog)
- font = QtGui.QFont()
- font.setItalic(True)
- self.ignore_space_info_label.setFont(font)
- self.ignore_space_info_label.setObjectName("ignore_space_info_label")
- self.install_dialog_layout.addWidget(self.ignore_space_info_label, 4, 2, 1, 1)
- self.force_download_check = QtWidgets.QCheckBox(InstallDialog)
- self.force_download_check.setObjectName("force_download_check")
- self.install_dialog_layout.addWidget(self.force_download_check, 3, 1, 1, 1)
self.force_download_label = QtWidgets.QLabel(InstallDialog)
self.force_download_label.setObjectName("force_download_label")
self.install_dialog_layout.addWidget(self.force_download_label, 3, 0, 1, 1, QtCore.Qt.AlignRight)
self.button_layout = QtWidgets.QHBoxLayout()
self.button_layout.setObjectName("button_layout")
- spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
- self.button_layout.addItem(spacerItem1)
+ spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+ self.button_layout.addItem(spacerItem)
self.cancel_button = QtWidgets.QPushButton(InstallDialog)
self.cancel_button.setObjectName("cancel_button")
self.button_layout.addWidget(self.cancel_button)
self.install_button = QtWidgets.QPushButton(InstallDialog)
self.install_button.setObjectName("install_button")
self.button_layout.addWidget(self.install_button)
- self.install_dialog_layout.addLayout(self.button_layout, 8, 0, 1, 3)
- self.max_workers_spin = QtWidgets.QSpinBox(InstallDialog)
- self.max_workers_spin.setObjectName("max_workers_spin")
- self.install_dialog_layout.addWidget(self.max_workers_spin, 2, 1, 1, 1)
+ self.install_dialog_layout.addLayout(self.button_layout, 9, 0, 1, 3)
+ self.ignore_space_info_label = QtWidgets.QLabel(InstallDialog)
+ font = QtGui.QFont()
+ font.setItalic(True)
+ self.ignore_space_info_label.setFont(font)
+ self.ignore_space_info_label.setObjectName("ignore_space_info_label")
+ self.install_dialog_layout.addWidget(self.ignore_space_info_label, 4, 2, 1, 1)
+ self.install_dir_label = QtWidgets.QLabel(InstallDialog)
+ self.install_dir_label.setObjectName("install_dir_label")
+ self.install_dialog_layout.addWidget(self.install_dir_label, 1, 0, 1, 1, QtCore.Qt.AlignRight)
self.ignore_space_check = QtWidgets.QCheckBox(InstallDialog)
self.ignore_space_check.setObjectName("ignore_space_check")
self.install_dialog_layout.addWidget(self.ignore_space_check, 4, 1, 1, 1)
- self.install_size_label = QtWidgets.QLabel(InstallDialog)
- self.install_size_label.setObjectName("install_size_label")
- self.install_dialog_layout.addWidget(self.install_size_label, 7, 0, 1, 1, QtCore.Qt.AlignRight)
self.max_workers_info_label = QtWidgets.QLabel(InstallDialog)
font = QtGui.QFont()
font.setItalic(True)
self.max_workers_info_label.setFont(font)
self.max_workers_info_label.setObjectName("max_workers_info_label")
self.install_dialog_layout.addWidget(self.max_workers_info_label, 2, 2, 1, 1)
- self.install_dir_layout = QtWidgets.QHBoxLayout()
- self.install_dir_layout.setObjectName("install_dir_layout")
- self.install_dialog_layout.addLayout(self.install_dir_layout, 1, 1, 1, 2)
- self.download_size_info_label = QtWidgets.QLabel(InstallDialog)
- self.download_size_info_label.setText("")
- self.download_size_info_label.setObjectName("download_size_info_label")
- self.install_dialog_layout.addWidget(self.download_size_info_label, 6, 1, 1, 2)
- self.max_workers_label = QtWidgets.QLabel(InstallDialog)
- self.max_workers_label.setObjectName("max_workers_label")
- self.install_dialog_layout.addWidget(self.max_workers_label, 2, 0, 1, 1, QtCore.Qt.AlignRight)
- self.download_only_label = QtWidgets.QLabel(InstallDialog)
- self.download_only_label.setObjectName("download_only_label")
- self.install_dialog_layout.addWidget(self.download_only_label, 5, 0, 1, 1, QtCore.Qt.AlignRight)
- self.download_only_check = QtWidgets.QCheckBox(InstallDialog)
- self.download_only_check.setText("")
- self.download_only_check.setObjectName("download_only_check")
- self.install_dialog_layout.addWidget(self.download_only_check, 5, 1, 1, 1)
+ self.max_workers_spin = QtWidgets.QSpinBox(InstallDialog)
+ self.max_workers_spin.setObjectName("max_workers_spin")
+ self.install_dialog_layout.addWidget(self.max_workers_spin, 2, 1, 1, 1)
self.download_only_info_label = QtWidgets.QLabel(InstallDialog)
font = QtGui.QFont()
font.setItalic(True)
self.download_only_info_label.setFont(font)
self.download_only_info_label.setObjectName("download_only_info_label")
self.install_dialog_layout.addWidget(self.download_only_info_label, 5, 2, 1, 1)
+ self.install_size_label = QtWidgets.QLabel(InstallDialog)
+ self.install_size_label.setObjectName("install_size_label")
+ self.install_dialog_layout.addWidget(self.install_size_label, 8, 0, 1, 1, QtCore.Qt.AlignRight)
+ self.install_dir_layout = QtWidgets.QHBoxLayout()
+ self.install_dir_layout.setObjectName("install_dir_layout")
+ self.install_dialog_layout.addLayout(self.install_dir_layout, 1, 1, 1, 2)
+ spacerItem1 = QtWidgets.QSpacerItem(0, 0, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
+ self.install_dialog_layout.addItem(spacerItem1, 3, 2, 1, 1)
+ self.ignore_space_label = QtWidgets.QLabel(InstallDialog)
+ self.ignore_space_label.setObjectName("ignore_space_label")
+ self.install_dialog_layout.addWidget(self.ignore_space_label, 4, 0, 1, 1, QtCore.Qt.AlignRight)
+ self.download_only_label = QtWidgets.QLabel(InstallDialog)
+ self.download_only_label.setObjectName("download_only_label")
+ self.install_dialog_layout.addWidget(self.download_only_label, 5, 0, 1, 1, QtCore.Qt.AlignRight)
+ self.max_workers_label = QtWidgets.QLabel(InstallDialog)
+ self.max_workers_label.setObjectName("max_workers_label")
+ self.install_dialog_layout.addWidget(self.max_workers_label, 2, 0, 1, 1, QtCore.Qt.AlignRight)
+ self.install_size_info_label = QtWidgets.QLabel(InstallDialog)
+ self.install_size_info_label.setText("")
+ self.install_size_info_label.setObjectName("install_size_info_label")
+ self.install_dialog_layout.addWidget(self.install_size_info_label, 8, 1, 1, 2)
+ self.download_size_label = QtWidgets.QLabel(InstallDialog)
+ self.download_size_label.setObjectName("download_size_label")
+ self.install_dialog_layout.addWidget(self.download_size_label, 7, 0, 1, 1, QtCore.Qt.AlignRight)
+ self.download_size_info_label = QtWidgets.QLabel(InstallDialog)
+ self.download_size_info_label.setText("")
+ self.download_size_info_label.setObjectName("download_size_info_label")
+ self.install_dialog_layout.addWidget(self.download_size_info_label, 7, 1, 1, 2)
+ self.force_download_check = QtWidgets.QCheckBox(InstallDialog)
+ self.force_download_check.setObjectName("force_download_check")
+ self.install_dialog_layout.addWidget(self.force_download_check, 3, 1, 1, 1)
+ self.install_dialog_label = QtWidgets.QLabel(InstallDialog)
+ self.install_dialog_label.setObjectName("install_dialog_label")
+ self.install_dialog_layout.addWidget(self.install_dialog_label, 0, 0, 1, 3)
+ self.download_only_check = QtWidgets.QCheckBox(InstallDialog)
+ self.download_only_check.setText("")
+ self.download_only_check.setObjectName("download_only_check")
+ self.install_dialog_layout.addWidget(self.download_only_check, 5, 1, 1, 1)
+ self.sdl_list_frame = QtWidgets.QFrame(InstallDialog)
+ self.sdl_list_frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
+ self.sdl_list_frame.setFrameShadow(QtWidgets.QFrame.Raised)
+ self.sdl_list_frame.setObjectName("sdl_list_frame")
+ self.sdl_list_layout = QtWidgets.QVBoxLayout(self.sdl_list_frame)
+ self.sdl_list_layout.setSpacing(0)
+ self.sdl_list_layout.setObjectName("sdl_list_layout")
+ self.install_dialog_layout.addWidget(self.sdl_list_frame, 6, 1, 1, 2, QtCore.Qt.AlignTop)
+ self.sdl_list_label = QtWidgets.QLabel(InstallDialog)
+ self.sdl_list_label.setObjectName("sdl_list_label")
+ self.install_dialog_layout.addWidget(self.sdl_list_label, 6, 0, 1, 1, QtCore.Qt.AlignRight)
self.retranslateUi(InstallDialog)
QtCore.QMetaObject.connectSlotsByName(InstallDialog)
def retranslateUi(self, InstallDialog):
_translate = QtCore.QCoreApplication.translate
- self.ignore_space_label.setText(_translate("InstallDialog", "Ignore free space"))
- self.install_dialog_label.setText(_translate("InstallDialog", "error"))
- self.download_size_label.setText(_translate("InstallDialog", "Download size"))
- self.install_dir_label.setText(_translate("InstallDialog", "Install directory"))
- self.ignore_space_info_label.setText(_translate("InstallDialog", "Use with caution!"))
self.force_download_label.setText(_translate("InstallDialog", "Force download"))
self.cancel_button.setText(_translate("InstallDialog", "Cancel"))
self.install_button.setText(_translate("InstallDialog", "Install"))
- self.install_size_label.setText(_translate("InstallDialog", "Total install size"))
+ self.ignore_space_info_label.setText(_translate("InstallDialog", "Use with caution!"))
+ self.install_dir_label.setText(_translate("InstallDialog", "Install directory"))
self.max_workers_info_label.setText(_translate("InstallDialog", "Less is slower. (0: Default)"))
- self.max_workers_label.setText(_translate("InstallDialog", "Max workers"))
- self.download_only_label.setText(_translate("InstallDialog", "Download only"))
self.download_only_info_label.setText(_translate("InstallDialog", "Do not try to install."))
+ self.install_size_label.setText(_translate("InstallDialog", "Total install size"))
+ self.ignore_space_label.setText(_translate("InstallDialog", "Ignore free space"))
+ self.download_only_label.setText(_translate("InstallDialog", "Download only"))
+ self.max_workers_label.setText(_translate("InstallDialog", "Max workers"))
+ self.download_size_label.setText(_translate("InstallDialog", "Download size"))
+ self.install_dialog_label.setText(_translate("InstallDialog", "error"))
+ self.sdl_list_label.setText(_translate("InstallDialog", "Optional packs"))
if __name__ == "__main__":
diff --git a/rare/ui/components/dialogs/install_dialog.ui b/rare/ui/components/dialogs/install_dialog.ui
index 576482dd..b8a26ba1 100644
--- a/rare/ui/components/dialogs/install_dialog.ui
+++ b/rare/ui/components/dialogs/install_dialog.ui
@@ -2,70 +2,10 @@
InstallDialog
+
+ Rare
+
- -
-
-
- Ignore free space
-
-
-
- -
-
-
- error
-
-
-
- -
-
-
- Download size
-
-
-
- -
-
-
-
-
-
-
- -
-
-
- Install directory
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 0
- 0
-
-
-
-
- -
-
-
-
- true
-
-
-
- Use with caution!
-
-
-
- -
-
-
-
@@ -73,7 +13,7 @@
- -
+
-
-
@@ -104,19 +44,28 @@
- -
-
+
-
+
+
+
+ true
+
+
+
+ Use with caution!
+
+
+
+ -
+
+
+ Install directory
+
+
-
- -
-
-
- Total install size
-
-
-
-
@@ -129,36 +78,8 @@
- -
-
-
- -
-
-
-
-
-
-
- -
-
-
- Max workers
-
-
-
- -
-
-
- Download only
-
-
-
- -
-
-
-
-
-
+
-
+
-
@@ -172,6 +93,110 @@
+ -
+
+
+ Total install size
+
+
+
+ -
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 0
+ 0
+
+
+
+
+ -
+
+
+ Ignore free space
+
+
+
+ -
+
+
+ Download only
+
+
+
+ -
+
+
+ Max workers
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+ Download size
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+ -
+
+
+ error
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+ QFrame::StyledPanel
+
+
+ QFrame::Raised
+
+
+
+ 0
+
+
+
+
+ -
+
+
+ Optional packs
+
+
+
diff --git a/rare/utils/models.py b/rare/utils/models.py
index 503d0532..5cbf8af3 100644
--- a/rare/utils/models.py
+++ b/rare/utils/models.py
@@ -5,6 +5,7 @@ class InstallOptions:
def __init__(self, app_name: str, path: str = os.path.expanduser("~/legendary"),
max_workers: int = os.cpu_count() * 2, repair: bool = False,
download_only: bool = False, ignore_free_space: bool = False, force: bool = False,
+ sdl_list: list = list()
):
self.app_name = app_name
self.path = path
@@ -13,3 +14,4 @@ class InstallOptions:
self.download_only = download_only
self.ignore_free_space = ignore_free_space
self.force = force
+ self.sdl_list = sdl_list