From 984249c05bbbfec6e9c7fc0277899cbd1bbd72c0 Mon Sep 17 00:00:00 2001 From: kramo <93832451+kra-mo@users.noreply.github.com> Date: Tue, 11 Apr 2023 19:03:16 +0200 Subject: [PATCH] Remove animated covers properly --- src/game_cover.py | 11 ++++++---- src/preferences.py | 54 +++++++++++++--------------------------------- 2 files changed, 22 insertions(+), 43 deletions(-) diff --git a/src/game_cover.py b/src/game_cover.py index eec30ab..2156e48 100644 --- a/src/game_cover.py +++ b/src/game_cover.py @@ -53,12 +53,12 @@ class GameCover: self.pixbuf = pixbuf if path: + self.path = path + if str(path).rsplit(".", maxsplit=1)[-1] == "gif": - self.path = path - task = Gio.Task.new(None, None, None) + task = Gio.Task.new() task.run_in_thread(self.create_func(self.path)) else: - self.path = path self.pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale( str(path), 200, 300, False ) @@ -76,7 +76,10 @@ class GameCover: return self.path if self.animation else None def set_pixbuf(self, pixbuf): - self.picture.set_pixbuf(pixbuf) + if self.picture.is_visible(): + self.picture.set_pixbuf(pixbuf) + else: + self.animation = None def update_animation(self, data): if self.animation == data[1]: diff --git a/src/preferences.py b/src/preferences.py index 102756e..9c9659a 100644 --- a/src/preferences.py +++ b/src/preferences.py @@ -351,75 +351,51 @@ class PreferencesWindow(Adw.PreferencesWindow): self.file_chooser.select_folder(self.parent_widget, None, function, None) def undo_remove_all(self, _widget, _unused): + covers_dir = self.parent_widget.data_dir / "cartridges" / "covers" deleted_covers_dir = ( self.parent_widget.cache_dir / "cartridges" / "deleted_covers" ) - deleted_animated_covers_dir = ( - self.parent_widget.cache_dir / "cartridges" / "deleted_animated_covers" - ) for game_id in self.removed_games: data = get_games(self.parent_widget, [game_id])[game_id] if "removed" in data: data.pop("removed") save_game(self.parent_widget, data) - if (deleted_covers_dir / f"{game_id}.tiff").is_file(): - move( - deleted_covers_dir / f"{game_id}.tiff", - self.parent_widget.data_dir - / "cartridges" - / "covers" - / f"{game_id}.tiff", - ) - if (deleted_animated_covers_dir / f"{game_id}.gif").is_file(): - move( - deleted_animated_covers_dir / f"{game_id}.gif", - self.parent_widget.data_dir - / "cartridges" - / "animated_covers" - / f"{game_id}.gif", - ) + + cover_path = deleted_covers_dir / f"{game_id}.tiff" + animated_cover_path = deleted_covers_dir / f"{game_id}.gif" + + if cover_path.is_file(): + move(cover_path, covers_dir / f"{game_id}.tiff") + elif animated_cover_path.is_file(): + move(animated_cover_path, covers_dir / f"{game_id}.gif") + self.parent_widget.update_games(self.removed_games) self.removed_games = [] self.toast.dismiss() def remove_all_games(self, _widget): + covers_dir = self.parent_widget.data_dir / "cartridges" / "covers" deleted_covers_dir = ( self.parent_widget.cache_dir / "cartridges" / "deleted_covers" ) deleted_covers_dir.mkdir(parents=True, exist_ok=True) - deleted_animated_covers_dir = ( - self.parent_widget.cache_dir / "cartridges" / "deleted_animated_covers" - ) - deleted_animated_covers_dir.mkdir(parents=True, exist_ok=True) - for game in get_games(self.parent_widget).values(): if "removed" not in game: self.removed_games.append(game["game_id"]) game["removed"] = True save_game(self.parent_widget, game) - cover_path = ( - self.parent_widget.data_dir - / "cartridges" - / "covers" - / f'{game["game_id"]}.tiff' - ) - - animated_cover_path = ( - self.parent_widget.data_dir - / "cartridges" - / "animated_covers" - / f'{game["game_id"]}.gif' - ) + cover_path = covers_dir / f'{game["game_id"]}.tiff' + animated_cover_path = covers_dir / f'{game["game_id"]}.gif' if cover_path.is_file(): move(cover_path, deleted_covers_dir / f'{game["game_id"]}.tiff') - if animated_cover_path.is_file(): + elif animated_cover_path.is_file(): move( animated_cover_path, - deleted_animated_covers_dir / f'{game["game_id"]}.gif', + deleted_covers_dir / f'{game["game_id"]}.gif', ) self.parent_widget.update_games(self.parent_widget.games)