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.album = gtk.Label("")
self.title = gtk.Label("")
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("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(self.album, 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(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("Title"), 0, 1, 2, 3, gtk.SHRINK, 5, 5)
self.attach(label.ArtistLabel(), 1, 2, 0, 1, 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(label.TitleLabel(), 1, 2, 2, 3, gtk.SHRINK|gtk.EXPAND|gtk.FILL, 5, 5)
self.artist.set_ellipsize(pango.ELLIPSIZE_END)
self.album.set_ellipsize(pango.ELLIPSIZE_END)
self.title.set_ellipsize(pango.ELLIPSIZE_END)
self.show_all()
libsaria.event.invite("POSTLOAD", self.change_labels)
#libsaria.event.invite("POSTLOAD", self.change_labels)
def change_labels(self, filepath):
id = libsaria.collection.lib_find_id(filepath)
if id:
self.title.set_text(lib_get_attr(id, "title"))
self.artist.set_text(lib_get_attr(id, "artist"))
self.album.set_text(lib_get_attr(id, "album"))
#def change_labels(self, filepath):
# id = libsaria.collection.lib_find_id(filepath)
# if id:
# self.title.set_text(lib_get_attr(id, "title"))
# self.artist.set_text(lib_get_attr(id, "artist"))
# self.album.set_text(lib_get_attr(id, "album"))
class TwoWayPane(InfoBar):

View File

@ -1,18 +1,26 @@
# Bryan Schumaker (10 / 18 / 2010)
import ocarina
gtk = ocarina.gtk
gobject = ocarina.gobject
gtk = ocarina.gtk
gobject = ocarina.gobject
invite = ocarina.libsaria.event.invite
libsaria = ocarina.libsaria
#update = None
get_time = None
get_time = None
lib_get_attr = None
lib_find_id = None
def set_fns():
#global update
global get_time
global lib_get_attr
global lib_find_id
#update = ocarina.libsaria.music.get_progress
get_time = ocarina.libsaria.music.get_time
ocarina.libsaria.event.invite("POSTSTART", set_fns)
get_time = ocarina.libsaria.music.get_time
lib_get_attr = libsaria.collection.lib_get_attr
lib_find_id = libsaria.collection.lib_find_id
invite("POSTSTART", set_fns)
class TimeLabel(gtk.Label):
@ -25,3 +33,35 @@ class TimeLabel(gtk.Label):
global get_time
self.set_text(get_time())
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")