Various fixes
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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."""
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user