Various fixes

This commit is contained in:
GeoffreyCoulaud
2023-05-24 17:30:19 +02:00
parent 7220852291
commit 8da7185d17
6 changed files with 9 additions and 12 deletions

View File

@@ -152,8 +152,6 @@ class Game(Gtk.Box):
sort_keys=True, sort_keys=True,
) )
self.update()
def create_toast(self, title, action=None): def create_toast(self, title, action=None):
toast = Adw.Toast.new(title.format(self.name)) toast = Adw.Toast.new(title.format(self.name))
toast.set_priority(Adw.ToastPriority.HIGH) toast.set_priority(Adw.ToastPriority.HIGH)

View File

@@ -43,7 +43,7 @@ from src.importer.sources.steam_source import (
from src.preferences import PreferencesWindow from src.preferences import PreferencesWindow
from src.store.managers.display_manager import DisplayManager from src.store.managers.display_manager import DisplayManager
from src.store.managers.file_manager import FileManager 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.sgdb_manager import SGDBManager
from src.store.managers.steam_api_manager import SteamAPIManager from src.store.managers.steam_api_manager import SteamAPIManager
from src.store.store import Store from src.store.store import Store

View File

@@ -11,5 +11,4 @@ class FileManager(Manager):
run_after = set((SteamAPIManager, SGDBManager, FormatUpdateManager)) run_after = set((SteamAPIManager, SGDBManager, FormatUpdateManager))
def run(self, game: Game) -> None: def run(self, game: Game) -> None:
# TODO make game.save (disk) not trigger game.update (UI)
game.save() game.save()

View File

@@ -16,5 +16,4 @@ class FormatUpdateManager(Manager):
def run(self, game: Game) -> None: def run(self, game: Game) -> None:
if game.version is None: if game.version is None:
self.v1_5_to_v2_0(game) self.v1_5_to_v2_0(game)
# TODO make game.save (disk) not trigger game.update (UI)
game.save() game.save()

View File

@@ -12,7 +12,7 @@ class Manager:
in that case a new cancellable must be generated for new tasks to run. 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 cancellable: Gio.Cancellable
errors: list[Exception] errors: list[Exception]
@@ -42,7 +42,7 @@ class Manager:
return errors return errors
@abstractmethod @abstractmethod
def run(self, game: Game) -> None: def run(self, game: Game, cancellable: Gio.Cancellable) -> None:
"""Pass the game through the manager. """Pass the game through the manager.
May block its thread. May block its thread.
May not raise exceptions, as they will be silently ignored.""" May not raise exceptions, as they will be silently ignored."""

View File

@@ -17,8 +17,9 @@ class Pipeline(GObject.Object):
running: set[Manager] running: set[Manager]
done: set[Manager] done: set[Manager]
def __init__(self, managers: Iterable[Manager]) -> None: def __init__(self, game: Game, managers: Iterable[Manager]) -> None:
super().__init__() super().__init__()
self.game = game
self.waiting = set(managers) self.waiting = set(managers)
self.running = set() self.running = set()
self.done = set() self.done = set()
@@ -26,7 +27,7 @@ class Pipeline(GObject.Object):
@property @property
def not_done(self) -> set[Manager]: def not_done(self) -> set[Manager]:
"""Get the managers that are not done yet""" """Get the managers that are not done yet"""
return self.waiting + self.running return self.waiting | self.running
@property @property
def blocked(self) -> set[Manager]: def blocked(self) -> set[Manager]:
@@ -64,7 +65,7 @@ class Pipeline(GObject.Object):
"""Thread function for manager tasks""" """Thread function for manager tasks"""
manager, *_rest = data manager, *_rest = data
self.emit("manager-started", manager) self.emit("manager-started", manager)
manager.run(self.game, cancellable) manager.run(self.game)
@GObject.Signal(name="manager-done", arg_types=(object,)) @GObject.Signal(name="manager-done", arg_types=(object,))
def manager_done(self, manager: Manager) -> None: def manager_done(self, manager: Manager) -> None:
@@ -115,7 +116,7 @@ class Store:
return None return None
# Cleanup removed games # Cleanup removed games
if game.get("removed"): if game.removed:
for path in ( for path in (
shared.games_dir / f"{game.game_id}.json", shared.games_dir / f"{game.game_id}.json",
shared.covers_dir / f"{game.game_id}.tiff", shared.covers_dir / f"{game.game_id}.tiff",
@@ -125,7 +126,7 @@ class Store:
return None return None
# Run the pipeline for the game # Run the pipeline for the game
pipeline = Pipeline(self.managers) pipeline = Pipeline(game, self.managers)
self.games[game.game_id] = game self.games[game.game_id] = game
self.pipelines[game.game_id] = pipeline self.pipelines[game.game_id] = pipeline
pipeline.advance() pipeline.advance()