From 8da7185d1708f4fd3403a420a04d2e0e48ac3c08 Mon Sep 17 00:00:00 2001 From: GeoffreyCoulaud Date: Wed, 24 May 2023 17:30:19 +0200 Subject: [PATCH] Various fixes --- src/game.py | 2 -- src/main.py | 2 +- src/store/managers/file_manager.py | 1 - src/store/managers/format_update_manager.py | 1 - src/store/managers/manager.py | 4 ++-- src/store/store.py | 11 ++++++----- 6 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/game.py b/src/game.py index a7845ba..9435568 100644 --- a/src/game.py +++ b/src/game.py @@ -152,8 +152,6 @@ class Game(Gtk.Box): sort_keys=True, ) - self.update() - def create_toast(self, title, action=None): toast = Adw.Toast.new(title.format(self.name)) toast.set_priority(Adw.ToastPriority.HIGH) diff --git a/src/main.py b/src/main.py index 16f7362..a24af59 100644 --- a/src/main.py +++ b/src/main.py @@ -43,7 +43,7 @@ from src.importer.sources.steam_source import ( from src.preferences import PreferencesWindow from src.store.managers.display_manager import DisplayManager from src.store.managers.file_manager import FileManager -from store.managers.format_update_manager import FormatUpdateManager +from src.store.managers.format_update_manager import FormatUpdateManager from src.store.managers.sgdb_manager import SGDBManager from src.store.managers.steam_api_manager import SteamAPIManager from src.store.store import Store diff --git a/src/store/managers/file_manager.py b/src/store/managers/file_manager.py index 936e305..b5381a8 100644 --- a/src/store/managers/file_manager.py +++ b/src/store/managers/file_manager.py @@ -11,5 +11,4 @@ class FileManager(Manager): run_after = set((SteamAPIManager, SGDBManager, FormatUpdateManager)) def run(self, game: Game) -> None: - # TODO make game.save (disk) not trigger game.update (UI) game.save() diff --git a/src/store/managers/format_update_manager.py b/src/store/managers/format_update_manager.py index e4521b5..fea4d63 100644 --- a/src/store/managers/format_update_manager.py +++ b/src/store/managers/format_update_manager.py @@ -16,5 +16,4 @@ class FormatUpdateManager(Manager): def run(self, game: Game) -> None: if game.version is None: self.v1_5_to_v2_0(game) - # TODO make game.save (disk) not trigger game.update (UI) game.save() diff --git a/src/store/managers/manager.py b/src/store/managers/manager.py index 1e4660e..376662f 100644 --- a/src/store/managers/manager.py +++ b/src/store/managers/manager.py @@ -12,7 +12,7 @@ class Manager: in that case a new cancellable must be generated for new tasks to run. """ - run_after: set[type["Manager"]] + run_after: set[type["Manager"]] = set() cancellable: Gio.Cancellable errors: list[Exception] @@ -42,7 +42,7 @@ class Manager: return errors @abstractmethod - def run(self, game: Game) -> None: + def run(self, game: Game, cancellable: Gio.Cancellable) -> None: """Pass the game through the manager. May block its thread. May not raise exceptions, as they will be silently ignored.""" diff --git a/src/store/store.py b/src/store/store.py index dee2716..bbc09aa 100644 --- a/src/store/store.py +++ b/src/store/store.py @@ -17,8 +17,9 @@ class Pipeline(GObject.Object): running: set[Manager] done: set[Manager] - def __init__(self, managers: Iterable[Manager]) -> None: + def __init__(self, game: Game, managers: Iterable[Manager]) -> None: super().__init__() + self.game = game self.waiting = set(managers) self.running = set() self.done = set() @@ -26,7 +27,7 @@ class Pipeline(GObject.Object): @property def not_done(self) -> set[Manager]: """Get the managers that are not done yet""" - return self.waiting + self.running + return self.waiting | self.running @property def blocked(self) -> set[Manager]: @@ -64,7 +65,7 @@ class Pipeline(GObject.Object): """Thread function for manager tasks""" manager, *_rest = data self.emit("manager-started", manager) - manager.run(self.game, cancellable) + manager.run(self.game) @GObject.Signal(name="manager-done", arg_types=(object,)) def manager_done(self, manager: Manager) -> None: @@ -115,7 +116,7 @@ class Store: return None # Cleanup removed games - if game.get("removed"): + if game.removed: for path in ( shared.games_dir / f"{game.game_id}.json", shared.covers_dir / f"{game.game_id}.tiff", @@ -125,7 +126,7 @@ class Store: return None # Run the pipeline for the game - pipeline = Pipeline(self.managers) + pipeline = Pipeline(game, self.managers) self.games[game.game_id] = game self.pipelines[game.game_id] = pipeline pipeline.advance()