From b3c2437618ebfece4496700fc0a3e590ab89e45d Mon Sep 17 00:00:00 2001 From: GeoffreyCoulaud Date: Sat, 1 Jul 2023 02:55:42 +0200 Subject: [PATCH 1/3] fixed flatpak location preferences --- data/gtk/preferences.blp | 2 +- src/preferences.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/data/gtk/preferences.blp b/data/gtk/preferences.blp index 6fc3da1..fbc2dee 100644 --- a/data/gtk/preferences.blp +++ b/data/gtk/preferences.blp @@ -233,7 +233,7 @@ template $PreferencesWindow : Adw.PreferencesWindow { Adw.ActionRow flatpak_data_action_row { title: _("Install Location"); - Button flatpak_config_file_chooser_button { + Button flatpak_data_file_chooser_button { icon-name: "folder-symbolic"; valign: center; } diff --git a/src/preferences.py b/src/preferences.py index 72ed609..a1251c1 100644 --- a/src/preferences.py +++ b/src/preferences.py @@ -83,7 +83,7 @@ class PreferencesWindow(Adw.PreferencesWindow): flatpak_expander_row = Gtk.Template.Child() flatpak_data_action_row = Gtk.Template.Child() - flatpak_config_file_chooser_button = Gtk.Template.Child() + flatpak_data_file_chooser_button = Gtk.Template.Child() flatpak_import_launchers_switch = Gtk.Template.Child() sgdb_key_group = Gtk.Template.Child() @@ -225,7 +225,7 @@ class PreferencesWindow(Adw.PreferencesWindow): self.add_toast(self.toast) - def reset_app(*_args): + def reset_app(self, *_args): rmtree(shared.data_dir / "cartridges", True) rmtree(shared.config_dir / "cartridges", True) rmtree(shared.cache_dir / "cartridges", True) From 8d082ab15880fa258edbf7ceb3dd149858ed48a6 Mon Sep 17 00:00:00 2001 From: GeoffreyCoulaud Date: Sat, 1 Jul 2023 02:56:40 +0200 Subject: [PATCH 2/3] Removed win.games --- src/game.py | 3 --- src/main.py | 10 ++++------ src/preferences.py | 2 +- src/store/managers/display_manager.py | 2 -- src/window.py | 3 +-- 5 files changed, 6 insertions(+), 14 deletions(-) diff --git a/src/game.py b/src/game.py index ce76216..25694a9 100644 --- a/src/game.py +++ b/src/game.py @@ -70,9 +70,6 @@ class Game(Gtk.Box): self.update_values(data) - if allow_side_effects: - self.win.games[self.game_id] = self - self.set_play_icon() self.event_contoller_motion = Gtk.EventControllerMotion.new() diff --git a/src/main.py b/src/main.py index 9d5851e..262a1b9 100644 --- a/src/main.py +++ b/src/main.py @@ -56,6 +56,7 @@ class CartridgesApplication(Adw.Application): win = None def __init__(self): + shared.store = Store() super().__init__( application_id=shared.APP_ID, flags=Gio.ApplicationFlags.FLAGS_NONE ) @@ -82,12 +83,9 @@ class CartridgesApplication(Adw.Application): "is-maximized", self.win, "maximized", Gio.SettingsBindFlags.DEFAULT ) - # Create the games store ready to load games from disk - if not shared.store: - shared.store = Store() - shared.store.add_manager(FileManager(), False) - shared.store.add_manager(DisplayManager()) - + # Load games from disk + shared.store.add_manager(FileManager(), False) + shared.store.add_manager(DisplayManager()) self.load_games_from_disk() # Add rest of the managers for game imports diff --git a/src/preferences.py b/src/preferences.py index a1251c1..d42443f 100644 --- a/src/preferences.py +++ b/src/preferences.py @@ -212,7 +212,7 @@ class PreferencesWindow(Adw.PreferencesWindow): self.toast.dismiss() def remove_all_games(self, *_args): - for game in self.win.games.values(): + for game in shared.store.games.values(): if not game.removed: self.removed_games.add(game) diff --git a/src/store/managers/display_manager.py b/src/store/managers/display_manager.py index c8acf0d..7d3a8f0 100644 --- a/src/store/managers/display_manager.py +++ b/src/store/managers/display_manager.py @@ -17,7 +17,6 @@ # # SPDX-License-Identifier: GPL-3.0-or-later -from src import shared from src.game import Game from src.game_cover import GameCover from src.store.managers.manager import Manager @@ -32,7 +31,6 @@ class DisplayManager(Manager): signals = {"update-ready"} def manager_logic(self, game: Game, _additional_data: dict) -> None: - shared.win.games[game.game_id] = game if game.get_parent(): game.get_parent().get_parent().remove(game) if game.get_parent(): diff --git a/src/window.py b/src/window.py index fd45339..a3d1df4 100644 --- a/src/window.py +++ b/src/window.py @@ -64,7 +64,6 @@ class CartridgesWindow(Adw.ApplicationWindow): hidden_search_entry = Gtk.Template.Child() hidden_search_button = Gtk.Template.Child() - games = {} game_covers = {} toasts = {} active_game = None @@ -118,7 +117,7 @@ class CartridgesWindow(Adw.ApplicationWindow): def set_library_child(self): child, hidden_child = self.notice_empty, self.hidden_notice_empty - for game in self.games.values(): + for game in shared.store.games.values(): if game.removed or game.blacklisted: continue if game.hidden: From a7efe0a92085db295bfe1572e3d7f2cff85241c9 Mon Sep 17 00:00:00 2001 From: GeoffreyCoulaud Date: Sat, 1 Jul 2023 03:01:15 +0200 Subject: [PATCH 3/3] Removed allow_side_effects --- src/details_window.py | 3 +-- src/game.py | 2 +- src/importer/sources/bottles_source.py | 2 +- src/importer/sources/flatpak_source.py | 2 +- src/importer/sources/heroic_source.py | 2 +- src/importer/sources/itch_source.py | 2 +- src/importer/sources/legendary_source.py | 2 +- src/importer/sources/lutris_source.py | 2 +- src/importer/sources/steam_source.py | 2 +- src/main.py | 2 +- 10 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/details_window.py b/src/details_window.py index dd7267b..85b7116 100644 --- a/src/details_window.py +++ b/src/details_window.py @@ -169,8 +169,7 @@ class DetailsWindow(Adw.Window): "hidden": False, "source": "imported", "added": int(time()), - }, - allow_side_effects=False, + } ) else: diff --git a/src/game.py b/src/game.py index 25694a9..e4b7693 100644 --- a/src/game.py +++ b/src/game.py @@ -61,7 +61,7 @@ class Game(Gtk.Box): game_cover = None version = 0 - def __init__(self, data, allow_side_effects=True, **kwargs): + def __init__(self, data, **kwargs): super().__init__(**kwargs) self.win = shared.win diff --git a/src/importer/sources/bottles_source.py b/src/importer/sources/bottles_source.py index 01e504b..2905fb3 100644 --- a/src/importer/sources/bottles_source.py +++ b/src/importer/sources/bottles_source.py @@ -54,7 +54,7 @@ class BottlesSourceIterator(SourceIterator): bottle_name=entry["bottle"]["name"], game_name=entry["name"] ), } - game = Game(values, allow_side_effects=False) + game = Game(values) # Get official cover path try: diff --git a/src/importer/sources/flatpak_source.py b/src/importer/sources/flatpak_source.py index 0609dae..c8f375e 100644 --- a/src/importer/sources/flatpak_source.py +++ b/src/importer/sources/flatpak_source.py @@ -100,7 +100,7 @@ class FlatpakSourceIterator(SourceIterator): flatpak_id=flatpak_id ), } - game = Game(values, allow_side_effects=False) + game = Game(values) additional_data = {} if icon_name := desktop_values["Icon"]: diff --git a/src/importer/sources/heroic_source.py b/src/importer/sources/heroic_source.py index a5583ed..ed501c2 100644 --- a/src/importer/sources/heroic_source.py +++ b/src/importer/sources/heroic_source.py @@ -90,7 +90,7 @@ class HeroicSourceIterator(SourceIterator): ), "executable": self.source.executable_format.format(app_name=app_name), } - game = Game(values, allow_side_effects=False) + game = Game(values) # Get the image path from the heroic cache # Filenames are derived from the URL that heroic used to get the file diff --git a/src/importer/sources/itch_source.py b/src/importer/sources/itch_source.py index 4c6cd23..0b11dcb 100644 --- a/src/importer/sources/itch_source.py +++ b/src/importer/sources/itch_source.py @@ -71,7 +71,7 @@ class ItchSourceIterator(SourceIterator): "executable": self.source.executable_format.format(cave_id=row[4]), } additional_data = {"online_cover_url": row[3] or row[2]} - game = Game(values, allow_side_effects=False) + game = Game(values) yield (game, additional_data) # Cleanup diff --git a/src/importer/sources/legendary_source.py b/src/importer/sources/legendary_source.py index 65758b4..496a742 100644 --- a/src/importer/sources/legendary_source.py +++ b/src/importer/sources/legendary_source.py @@ -62,7 +62,7 @@ class LegendarySourceIterator(SourceIterator): except (JSONDecodeError, OSError, KeyError): pass - game = Game(values, allow_side_effects=False) + game = Game(values) return (game, data) def generator_builder(self) -> Generator[SourceIterationResult, None, None]: diff --git a/src/importer/sources/lutris_source.py b/src/importer/sources/lutris_source.py index f9a384e..17e4956 100644 --- a/src/importer/sources/lutris_source.py +++ b/src/importer/sources/lutris_source.py @@ -74,7 +74,7 @@ class LutrisSourceIterator(SourceIterator): ), "executable": self.source.executable_format.format(game_id=row[2]), } - game = Game(values, allow_side_effects=False) + game = Game(values) # Get official image path image_path = self.source.cache_location["coverart"] / f"{row[2]}.jpg" diff --git a/src/importer/sources/steam_source.py b/src/importer/sources/steam_source.py index 5b7820c..13d99a7 100644 --- a/src/importer/sources/steam_source.py +++ b/src/importer/sources/steam_source.py @@ -96,7 +96,7 @@ class SteamSourceIterator(SourceIterator): "game_id": self.source.game_id_format.format(game_id=appid), "executable": self.source.executable_format.format(game_id=appid), } - game = Game(values, allow_side_effects=False) + game = Game(values) # Add official cover image image_path = ( diff --git a/src/main.py b/src/main.py index 262a1b9..d0afd3e 100644 --- a/src/main.py +++ b/src/main.py @@ -138,7 +138,7 @@ class CartridgesApplication(Adw.Application): if shared.games_dir.is_dir(): for game_file in shared.games_dir.iterdir(): data = json.load(game_file.open()) - game = Game(data, allow_side_effects=False) + game = Game(data) shared.store.add_game(game, {"skip_save": True}) def on_about_action(self, *_args):