Remove animated covers properly
This commit is contained in:
@@ -53,12 +53,12 @@ class GameCover:
|
|||||||
self.pixbuf = pixbuf
|
self.pixbuf = pixbuf
|
||||||
|
|
||||||
if path:
|
if path:
|
||||||
|
self.path = path
|
||||||
|
|
||||||
if str(path).rsplit(".", maxsplit=1)[-1] == "gif":
|
if str(path).rsplit(".", maxsplit=1)[-1] == "gif":
|
||||||
self.path = path
|
task = Gio.Task.new()
|
||||||
task = Gio.Task.new(None, None, None)
|
|
||||||
task.run_in_thread(self.create_func(self.path))
|
task.run_in_thread(self.create_func(self.path))
|
||||||
else:
|
else:
|
||||||
self.path = path
|
|
||||||
self.pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(
|
self.pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(
|
||||||
str(path), 200, 300, False
|
str(path), 200, 300, False
|
||||||
)
|
)
|
||||||
@@ -76,7 +76,10 @@ class GameCover:
|
|||||||
return self.path if self.animation else None
|
return self.path if self.animation else None
|
||||||
|
|
||||||
def set_pixbuf(self, pixbuf):
|
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):
|
def update_animation(self, data):
|
||||||
if self.animation == data[1]:
|
if self.animation == data[1]:
|
||||||
|
|||||||
@@ -351,75 +351,51 @@ class PreferencesWindow(Adw.PreferencesWindow):
|
|||||||
self.file_chooser.select_folder(self.parent_widget, None, function, None)
|
self.file_chooser.select_folder(self.parent_widget, None, function, None)
|
||||||
|
|
||||||
def undo_remove_all(self, _widget, _unused):
|
def undo_remove_all(self, _widget, _unused):
|
||||||
|
covers_dir = self.parent_widget.data_dir / "cartridges" / "covers"
|
||||||
deleted_covers_dir = (
|
deleted_covers_dir = (
|
||||||
self.parent_widget.cache_dir / "cartridges" / "deleted_covers"
|
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:
|
for game_id in self.removed_games:
|
||||||
data = get_games(self.parent_widget, [game_id])[game_id]
|
data = get_games(self.parent_widget, [game_id])[game_id]
|
||||||
if "removed" in data:
|
if "removed" in data:
|
||||||
data.pop("removed")
|
data.pop("removed")
|
||||||
save_game(self.parent_widget, data)
|
save_game(self.parent_widget, data)
|
||||||
if (deleted_covers_dir / f"{game_id}.tiff").is_file():
|
|
||||||
move(
|
cover_path = deleted_covers_dir / f"{game_id}.tiff"
|
||||||
deleted_covers_dir / f"{game_id}.tiff",
|
animated_cover_path = deleted_covers_dir / f"{game_id}.gif"
|
||||||
self.parent_widget.data_dir
|
|
||||||
/ "cartridges"
|
if cover_path.is_file():
|
||||||
/ "covers"
|
move(cover_path, covers_dir / f"{game_id}.tiff")
|
||||||
/ f"{game_id}.tiff",
|
elif animated_cover_path.is_file():
|
||||||
)
|
move(animated_cover_path, covers_dir / f"{game_id}.gif")
|
||||||
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",
|
|
||||||
)
|
|
||||||
self.parent_widget.update_games(self.removed_games)
|
self.parent_widget.update_games(self.removed_games)
|
||||||
self.removed_games = []
|
self.removed_games = []
|
||||||
self.toast.dismiss()
|
self.toast.dismiss()
|
||||||
|
|
||||||
def remove_all_games(self, _widget):
|
def remove_all_games(self, _widget):
|
||||||
|
covers_dir = self.parent_widget.data_dir / "cartridges" / "covers"
|
||||||
deleted_covers_dir = (
|
deleted_covers_dir = (
|
||||||
self.parent_widget.cache_dir / "cartridges" / "deleted_covers"
|
self.parent_widget.cache_dir / "cartridges" / "deleted_covers"
|
||||||
)
|
)
|
||||||
deleted_covers_dir.mkdir(parents=True, exist_ok=True)
|
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():
|
for game in get_games(self.parent_widget).values():
|
||||||
if "removed" not in game:
|
if "removed" not in game:
|
||||||
self.removed_games.append(game["game_id"])
|
self.removed_games.append(game["game_id"])
|
||||||
game["removed"] = True
|
game["removed"] = True
|
||||||
save_game(self.parent_widget, game)
|
save_game(self.parent_widget, game)
|
||||||
|
|
||||||
cover_path = (
|
cover_path = covers_dir / f'{game["game_id"]}.tiff'
|
||||||
self.parent_widget.data_dir
|
animated_cover_path = covers_dir / f'{game["game_id"]}.gif'
|
||||||
/ "cartridges"
|
|
||||||
/ "covers"
|
|
||||||
/ f'{game["game_id"]}.tiff'
|
|
||||||
)
|
|
||||||
|
|
||||||
animated_cover_path = (
|
|
||||||
self.parent_widget.data_dir
|
|
||||||
/ "cartridges"
|
|
||||||
/ "animated_covers"
|
|
||||||
/ f'{game["game_id"]}.gif'
|
|
||||||
)
|
|
||||||
|
|
||||||
if cover_path.is_file():
|
if cover_path.is_file():
|
||||||
move(cover_path, deleted_covers_dir / f'{game["game_id"]}.tiff')
|
move(cover_path, deleted_covers_dir / f'{game["game_id"]}.tiff')
|
||||||
if animated_cover_path.is_file():
|
elif animated_cover_path.is_file():
|
||||||
move(
|
move(
|
||||||
animated_cover_path,
|
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)
|
self.parent_widget.update_games(self.parent_widget.games)
|
||||||
|
|||||||
Reference in New Issue
Block a user