Resize images asynchronously in the edit dialog
This commit is contained in:
@@ -35,10 +35,12 @@ from .steamgriddb import SGDBSave
|
||||
class DetailsWindow(Adw.Window):
|
||||
__gtype_name__ = "DetailsWindow"
|
||||
|
||||
cover_overlay = Gtk.Template.Child()
|
||||
cover = Gtk.Template.Child()
|
||||
cover_button_edit = Gtk.Template.Child()
|
||||
cover_button_delete_revealer = Gtk.Template.Child()
|
||||
cover_button_delete = Gtk.Template.Child()
|
||||
spinner = Gtk.Template.Child()
|
||||
|
||||
name = Gtk.Template.Child()
|
||||
developer = Gtk.Template.Child()
|
||||
@@ -222,6 +224,11 @@ class DetailsWindow(Adw.Window):
|
||||
def focus_executable(self, *_args):
|
||||
self.set_focus(self.executable)
|
||||
|
||||
def toggle_loading(self):
|
||||
self.apply_button.set_sensitive(not self.apply_button.get_sensitive())
|
||||
self.spinner.set_spinning(not self.spinner.get_spinning())
|
||||
self.cover_overlay.set_opacity(not self.cover_overlay.get_opacity())
|
||||
|
||||
def set_cover(self, _source, result, *_args):
|
||||
try:
|
||||
path = self.file_dialog.open_finish(result).get_path()
|
||||
@@ -231,7 +238,12 @@ class DetailsWindow(Adw.Window):
|
||||
self.cover_button_delete_revealer.set_reveal_child(True)
|
||||
self.cover_changed = True
|
||||
|
||||
self.game_cover.new_cover(resize_cover(self.win, path))
|
||||
def resize():
|
||||
self.game_cover.new_cover(resize_cover(self.win, path))
|
||||
self.toggle_loading()
|
||||
|
||||
self.toggle_loading()
|
||||
GLib.Thread.new(None, resize)
|
||||
|
||||
def choose_cover(self, *_args):
|
||||
self.file_dialog.open(self, None, self.set_cover)
|
||||
|
||||
@@ -36,8 +36,7 @@ def resize_cover(win, cover_path=None, pixbuf=None):
|
||||
with Image.open(cover_path) as image:
|
||||
if getattr(image, "is_animated", False):
|
||||
frames = tuple(
|
||||
frame.copy().resize((200, 300))
|
||||
for frame in ImageSequence.Iterator(image)
|
||||
frame.resize((200, 300)) for frame in ImageSequence.Iterator(image)
|
||||
)
|
||||
|
||||
tmp_path = Path(Gio.File.new_tmp("XXXXXX.gif")[0].get_path())
|
||||
|
||||
Reference in New Issue
Block a user