2021-03-09 05:20:28 +13:00
|
|
|
import os
|
2021-06-20 02:22:30 +12:00
|
|
|
from dataclasses import field, dataclass
|
|
|
|
from multiprocessing import Queue
|
2021-03-09 05:20:28 +13:00
|
|
|
|
2021-09-30 10:22:47 +13:00
|
|
|
from PyQt5.QtCore import QObject, pyqtSignal
|
|
|
|
|
2021-09-07 07:10:18 +12:00
|
|
|
from legendary.downloader.mp.manager import DLManager
|
|
|
|
from legendary.models.downloading import AnalysisResult, ConditionCheckResult
|
|
|
|
from legendary.models.game import Game, InstalledGame
|
2021-08-17 08:50:31 +12:00
|
|
|
|
2021-03-09 05:20:28 +13:00
|
|
|
|
2021-08-18 01:09:46 +12:00
|
|
|
@dataclass
|
2021-05-23 07:56:13 +12:00
|
|
|
class InstallOptionsModel:
|
2021-06-20 02:22:30 +12:00
|
|
|
app_name: str
|
|
|
|
base_path: str = os.path.expanduser("~/legendary")
|
|
|
|
max_workers: int = os.cpu_count() * 2
|
|
|
|
repair: bool = False
|
|
|
|
no_install: bool = False
|
|
|
|
ignore_space_req: bool = False
|
|
|
|
force: bool = False
|
2021-08-18 03:35:02 +12:00
|
|
|
sdl_list: list = field(default_factory=lambda: [''])
|
2021-09-30 10:22:47 +13:00
|
|
|
update: bool = False
|
|
|
|
silent: bool = False
|
2021-05-23 07:56:13 +12:00
|
|
|
|
|
|
|
|
2021-06-20 02:22:30 +12:00
|
|
|
@dataclass
|
2021-05-23 07:56:13 +12:00
|
|
|
class InstallDownloadModel:
|
2021-06-20 02:22:30 +12:00
|
|
|
dlmanager: DLManager
|
|
|
|
analysis: AnalysisResult
|
|
|
|
game: Game
|
|
|
|
igame: InstalledGame
|
|
|
|
repair: bool
|
|
|
|
repair_file: str
|
2021-08-18 02:05:00 +12:00
|
|
|
res: ConditionCheckResult
|
2021-05-23 07:56:13 +12:00
|
|
|
|
|
|
|
|
2021-06-20 02:22:30 +12:00
|
|
|
@dataclass
|
2021-05-23 07:56:13 +12:00
|
|
|
class InstallQueueItemModel:
|
2021-06-20 02:22:30 +12:00
|
|
|
status_q: Queue = None
|
|
|
|
download: InstallDownloadModel = None
|
|
|
|
options: InstallOptionsModel = None
|
2021-05-24 00:15:36 +12:00
|
|
|
|
|
|
|
def __bool__(self):
|
|
|
|
return (self.status_q is not None) and (self.download is not None) and (self.options is not None)
|
2021-09-30 10:22:47 +13:00
|
|
|
|
|
|
|
|
|
|
|
class SignalActions:
|
|
|
|
quit_app = "quit_app"
|
|
|
|
dl_status = "dl_status"
|
|
|
|
install_game = "install_game"
|
|
|
|
start_installation = "start_installation"
|
|
|
|
installation_finished = "installation_finished"
|
|
|
|
uninstall = "uninstall"
|
|
|
|
set_index = "set_index"
|
|
|
|
set_dl_tab_text = "set_dl_tab_text"
|
|
|
|
|
|
|
|
|
|
|
|
class Signals(QObject):
|
|
|
|
actions = SignalActions()
|
|
|
|
|
|
|
|
tab_widget = pyqtSignal(tuple)
|
|
|
|
games_tab = pyqtSignal(tuple)
|
|
|
|
cloud_saves = pyqtSignal(tuple)
|
|
|
|
dl_tab = pyqtSignal(tuple)
|
|
|
|
main_window = pyqtSignal(tuple)
|
|
|
|
app = pyqtSignal(tuple)
|