Attr labels

I created labels that automatically update whenever a song is changed.
These labels are used for displaying the artist, album, and title of the
currently playing song.  They can also be used in the future fir
displaying any attribute of a song.
This commit is contained in:
Bryan Schumaker 2010-10-23 14:03:03 -04:00
parent 816d97e3ea
commit af8eb41589
2 changed files with 58 additions and 18 deletions

View File

@ -108,26 +108,26 @@ class NowPlaying(gtk.Table):
self.artist = gtk.Label("") self.artist = gtk.Label("")
self.album = gtk.Label("") self.album = gtk.Label("")
self.title = gtk.Label("") self.title = gtk.Label("")
self.attach(gtk.Label("Artist"), 0, 1, 0, 1, gtk.SHRINK, 5, 5) #self.attach(gtk.Label("Artist"), 0, 1, 0, 1, gtk.SHRINK, 5, 5)
self.attach(gtk.Label("Album"), 0, 1, 1, 2, gtk.SHRINK, 5, 5) #self.attach(gtk.Label("Album"), 0, 1, 1, 2, gtk.SHRINK, 5, 5)
self.attach(gtk.Label("Title"), 0, 1, 2, 3, gtk.SHRINK, 5, 5) #self.attach(gtk.Label("Title"), 0, 1, 2, 3, gtk.SHRINK, 5, 5)
self.attach(self.artist, 1, 2, 0, 1, gtk.SHRINK|gtk.EXPAND|gtk.FILL, 5, 5) self.attach(label.ArtistLabel(), 1, 2, 0, 1, gtk.SHRINK|gtk.EXPAND|gtk.FILL, 5, 5)
self.attach(self.album, 1, 2, 1, 2, gtk.SHRINK|gtk.EXPAND|gtk.FILL, 5, 5) self.attach(label.AlbumLabel(), 1, 2, 1, 2, gtk.SHRINK|gtk.EXPAND|gtk.FILL, 5, 5)
self.attach(self.title, 1, 2, 2, 3, gtk.SHRINK|gtk.EXPAND|gtk.FILL, 5, 5) self.attach(label.TitleLabel(), 1, 2, 2, 3, gtk.SHRINK|gtk.EXPAND|gtk.FILL, 5, 5)
self.artist.set_ellipsize(pango.ELLIPSIZE_END) self.artist.set_ellipsize(pango.ELLIPSIZE_END)
self.album.set_ellipsize(pango.ELLIPSIZE_END) self.album.set_ellipsize(pango.ELLIPSIZE_END)
self.title.set_ellipsize(pango.ELLIPSIZE_END) self.title.set_ellipsize(pango.ELLIPSIZE_END)
self.show_all() self.show_all()
libsaria.event.invite("POSTLOAD", self.change_labels) #libsaria.event.invite("POSTLOAD", self.change_labels)
def change_labels(self, filepath): #def change_labels(self, filepath):
id = libsaria.collection.lib_find_id(filepath) # id = libsaria.collection.lib_find_id(filepath)
if id: # if id:
self.title.set_text(lib_get_attr(id, "title")) # self.title.set_text(lib_get_attr(id, "title"))
self.artist.set_text(lib_get_attr(id, "artist")) # self.artist.set_text(lib_get_attr(id, "artist"))
self.album.set_text(lib_get_attr(id, "album")) # self.album.set_text(lib_get_attr(id, "album"))
class TwoWayPane(InfoBar): class TwoWayPane(InfoBar):

View File

@ -1,18 +1,26 @@
# Bryan Schumaker (10 / 18 / 2010) # Bryan Schumaker (10 / 18 / 2010)
import ocarina import ocarina
gtk = ocarina.gtk gtk = ocarina.gtk
gobject = ocarina.gobject gobject = ocarina.gobject
invite = ocarina.libsaria.event.invite
libsaria = ocarina.libsaria
#update = None #update = None
get_time = None get_time = None
lib_get_attr = None
lib_find_id = None
def set_fns(): def set_fns():
#global update #global update
global get_time global get_time
global lib_get_attr
global lib_find_id
#update = ocarina.libsaria.music.get_progress #update = ocarina.libsaria.music.get_progress
get_time = ocarina.libsaria.music.get_time get_time = ocarina.libsaria.music.get_time
ocarina.libsaria.event.invite("POSTSTART", set_fns) lib_get_attr = libsaria.collection.lib_get_attr
lib_find_id = libsaria.collection.lib_find_id
invite("POSTSTART", set_fns)
class TimeLabel(gtk.Label): class TimeLabel(gtk.Label):
@ -25,3 +33,35 @@ class TimeLabel(gtk.Label):
global get_time global get_time
self.set_text(get_time()) self.set_text(get_time())
return True return True
class AttrLabel(gtk.Label):
def __init__(self, attr, other = None):
gtk.Label.__init__(self)
self.attr = attr
self.other = other
self.show()
invite("POSTLOAD", self.update)
def update(self, filepath):
global lib_find_id
global lib_get_attr
id = lib_find_id(filepath)
if id:
text = str(lib_get_attr(id, self.attr))
if self.other:
text = "%s %s" % (self.other, text)
self.set_text(text)
else:
self.set_text("")
class TitleLabel(AttrLabel):
def __init__(self):
AttrLabel.__init__(self, "title")
class ArtistLabel(AttrLabel):
def __init__(self):
AttrLabel.__init__(self, "artist", "by")
class AlbumLabel(AttrLabel):
def __init__(self):
AttrLabel.__init__(self, "album", "from")