47 lines
1.3 KiB
Python
47 lines
1.3 KiB
Python
# Copyright 2021 (c) Anna Schumaker.
|
|
from gi.repository import Gtk, GdkPixbuf, Gst
|
|
|
|
class Artwork(Gtk.AspectFrame):
|
|
def __init__(self):
|
|
Gtk.AspectFrame.__init__(self)
|
|
self.picture = Gtk.Picture()
|
|
|
|
self.frame = Gtk.Frame()
|
|
self.frame.set_child(self.picture)
|
|
|
|
self.set_child(self.frame)
|
|
self.set_obey_child(False)
|
|
self.set_margin_start(5)
|
|
self.set_margin_end(5)
|
|
self.set_margin_top(5)
|
|
self.set_margin_bottom(5)
|
|
self.set_ratio(1.0)
|
|
self.reset()
|
|
|
|
def get_default_path(self):
|
|
display = self.picture.get_display()
|
|
theme = Gtk.IconTheme.get_for_display(display)
|
|
icon = theme.lookup_icon("emmental", [ ], 1024, 1, 0, 0)
|
|
return icon.get_file().get_path()
|
|
|
|
def set_from_data(self, data):
|
|
loader = GdkPixbuf.PixbufLoader()
|
|
loader.write(data)
|
|
|
|
pixbuf = loader.get_pixbuf()
|
|
self.picture.set_pixbuf(pixbuf)
|
|
loader.close()
|
|
|
|
def set_from_sample(self, sample):
|
|
buffer = sample.get_buffer()
|
|
|
|
(res, map) = buffer.map(Gst.MapFlags.READ)
|
|
if res == True:
|
|
self.set_from_data(map.data)
|
|
buffer.unmap(map)
|
|
else:
|
|
self.reset()
|
|
|
|
def reset(self):
|
|
self.picture.set_filename(self.get_default_path())
|