Move game_cover away from GdkPixbuf
This commit is contained in:
@@ -71,7 +71,7 @@ class DetailsWindow(Adw.Window):
|
|||||||
self.apply_button.set_label(_("Apply"))
|
self.apply_button.set_label(_("Apply"))
|
||||||
|
|
||||||
self.game_cover.new_cover(self.game.get_cover_path())
|
self.game_cover.new_cover(self.game.get_cover_path())
|
||||||
if self.game_cover.get_pixbuf():
|
if self.game_cover.get_texture():
|
||||||
self.cover_button_delete_revealer.set_reveal_child(True)
|
self.cover_button_delete_revealer.set_reveal_child(True)
|
||||||
else:
|
else:
|
||||||
self.set_title(_("Add New Game"))
|
self.set_title(_("Add New Game"))
|
||||||
@@ -205,7 +205,7 @@ class DetailsWindow(Adw.Window):
|
|||||||
|
|
||||||
# TODO: this is fucked up (less than before)
|
# TODO: this is fucked up (less than before)
|
||||||
# Get a cover from SGDB if none is present
|
# Get a cover from SGDB if none is present
|
||||||
if not self.game_cover.get_pixbuf():
|
if not self.game_cover.get_texture():
|
||||||
self.game.set_loading(1)
|
self.game.set_loading(1)
|
||||||
sgdb_manager: SGDBManager = shared.store.managers[SGDBManager]
|
sgdb_manager: SGDBManager = shared.store.managers[SGDBManager]
|
||||||
sgdb_manager.reset_cancellable()
|
sgdb_manager.reset_cancellable()
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ from src import shared
|
|||||||
|
|
||||||
|
|
||||||
class GameCover:
|
class GameCover:
|
||||||
pixbuf = None
|
texture = None
|
||||||
blurred = None
|
blurred = None
|
||||||
luminance = None
|
luminance = None
|
||||||
path = None
|
path = None
|
||||||
@@ -54,7 +54,7 @@ class GameCover:
|
|||||||
|
|
||||||
def new_cover(self, path=None):
|
def new_cover(self, path=None):
|
||||||
self.animation = None
|
self.animation = None
|
||||||
self.pixbuf = None
|
self.texture = None
|
||||||
self.blurred = None
|
self.blurred = None
|
||||||
self.luminance = None
|
self.luminance = None
|
||||||
self.path = path
|
self.path = path
|
||||||
@@ -64,13 +64,17 @@ class GameCover:
|
|||||||
task = Gio.Task.new()
|
task = Gio.Task.new()
|
||||||
task.run_in_thread(self.create_func(self.path))
|
task.run_in_thread(self.create_func(self.path))
|
||||||
else:
|
else:
|
||||||
self.pixbuf = GdkPixbuf.Pixbuf.new_from_file(str(path))
|
self.texture = Gdk.Texture.new_from_filename(str(path))
|
||||||
|
|
||||||
if not self.animation:
|
if not self.animation:
|
||||||
self.set_pixbuf(self.pixbuf)
|
self.set_texture(self.texture)
|
||||||
|
|
||||||
def get_pixbuf(self):
|
def get_texture(self):
|
||||||
return self.animation.get_static_image() if self.animation else self.pixbuf
|
return (
|
||||||
|
Gdk.Texture.new_for_pixbuf(self.animation.get_static_image())
|
||||||
|
if self.animation
|
||||||
|
else self.texture
|
||||||
|
)
|
||||||
|
|
||||||
def get_blurred(self):
|
def get_blurred(self):
|
||||||
if not self.blurred:
|
if not self.blurred:
|
||||||
@@ -103,9 +107,9 @@ class GameCover:
|
|||||||
def add_picture(self, picture):
|
def add_picture(self, picture):
|
||||||
self.pictures.add(picture)
|
self.pictures.add(picture)
|
||||||
if not self.animation:
|
if not self.animation:
|
||||||
self.set_pixbuf(self.pixbuf)
|
self.set_texture(self.texture)
|
||||||
|
|
||||||
def set_pixbuf(self, pixbuf):
|
def set_texture(self, texture):
|
||||||
self.pictures.discard(
|
self.pictures.discard(
|
||||||
picture for picture in self.pictures if not picture.is_visible()
|
picture for picture in self.pictures if not picture.is_visible()
|
||||||
)
|
)
|
||||||
@@ -113,16 +117,13 @@ class GameCover:
|
|||||||
self.animation = None
|
self.animation = None
|
||||||
else:
|
else:
|
||||||
for picture in self.pictures:
|
for picture in self.pictures:
|
||||||
if pixbuf:
|
picture.set_paintable(texture or self.placeholder)
|
||||||
picture.set_pixbuf(pixbuf)
|
|
||||||
else:
|
|
||||||
picture.set_paintable(self.placeholder)
|
|
||||||
|
|
||||||
def update_animation(self, data):
|
def update_animation(self, data):
|
||||||
if self.animation == data[1]:
|
if self.animation == data[1]:
|
||||||
self.anim_iter.advance()
|
self.anim_iter.advance()
|
||||||
|
|
||||||
self.set_pixbuf(self.anim_iter.get_pixbuf())
|
self.set_texture(Gdk.Texture.new_for_pixbuf(self.anim_iter.get_pixbuf()))
|
||||||
|
|
||||||
delay_time = self.anim_iter.get_delay_time()
|
delay_time = self.anim_iter.get_delay_time()
|
||||||
GLib.timeout_add(
|
GLib.timeout_add(
|
||||||
|
|||||||
Reference in New Issue
Block a user