ocarina/ocarina/body/footer/nowplaying.py

81 lines
2.0 KiB
Python

# Bryan Schumaker (4 / 21 / 2011)
import gtk
import gobject
from libsaria import controls
from ocarina.body import button
from ocarina.body import image
page = gtk.HBox(False, 5)
label = gtk.Label("Now Playing")
label.set_markup("<span size='x-large'>Now Playing</span>")
ARTWORK = image.Image()
page.pack_start(ARTWORK, False, False)
def pack_label(box, label):
a = gtk.Alignment(0, 0.5, 0, 0)
a.add(label)
box.pack_start(a)
TITLE = gtk.Label()
ARTIST = gtk.Label("by")
ALBUM = gtk.Label("from")
tag_box = gtk.VBox(True)
view = gtk.Viewport()
tags = gtk.ScrolledWindow()
view.set_shadow_type(gtk.SHADOW_NONE)
tags.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
pack_label(tag_box, TITLE)
pack_label(tag_box, ARTIST)
pack_label(tag_box, ALBUM)
view.add(tag_box)
tags.add(view)
page.pack_start(tags)
YEAR = gtk.Label("Year:")
LENGTH = gtk.Label("Length:")
COUNT = gtk.Label("Play count:")
attr_box = gtk.VBox(True)
pack_label(attr_box, YEAR)
pack_label(attr_box, LENGTH)
pack_label(attr_box, COUNT)
page.pack_start(attr_box)
LIKE = button.like_button(True)
DISLIKE = button.dislike_button(True)
page.show_all()
label.show()
sa_id = None
def resize_art(*args):
set_art(ARTWORK.get_file())
page.disconnect(sa_id)
sa_id = page.connect("size-allocate", resize_art)
def set_art(path):
ARTWORK.set_image(path, 128)
def on_like(like):
def _on_like1(like):
LIKE.set_active(like == True)
DISLIKE.set_active(like == False)
def _on_like0(like):
button.toggle_call_unconnected(DISLIKE, _on_like1, like)
button.toggle_call_unconnected(LIKE, _on_like0, like)
def set_tag(label, text):
markup = gobject.markup_escape_text(text)
label.set_markup("<span size='xx-large'>%s</span>" % markup)
def on_load(attrs):
set_tag(TITLE, attrs["title"])
set_tag(ARTIST, attrs["artist"])
set_tag(ALBUM, attrs["album"])
set_tag(YEAR, "Year: %s" % attrs["year"])
set_tag(LENGTH, "Length: %s" % attrs["lenstr"])
set_tag(COUNT, "Count: %s" % attrs["count"])
set_art(attrs["art"])
on_like(attrs["like"])