ocarina/ocarina/body/footer/detailed.py

77 lines
1.9 KiB
Python

# Bryan Schumaker (4 / 21 / 2011)
import gtk
from ocarina.body import button
import libsaria
from libsaria import audio
import nowplaying
detailed = gtk.Notebook()
hide = detailed.hide
show = detailed.show
action = gtk.HBox()
cur_pos = gtk.Label()
cur_pos.show()
action.pack_start(cur_pos, False, False)
def slider_update(slider):
slider.set_value(audio.get_progress() * 100)
def slider_scrolled(slider, type, value):
audio.seek_prcnt(value / 100.0)
def slider_clicked(slider, event):
prcnt = event.x / float(slider.get_allocation().width)
audio.seek_prcnt(prcnt)
slider_update(slider)
def slider_tooltip(slider, event):
prcnt = event.x / float(slider.get_allocation().width)
slider.set_tooltip_text(audio.get_time_at(prcnt))
slider = gtk.HScale( gtk.Adjustment(0.0, 0.0, 100.0, 0.1, 1.0, 1.0) )
slider.set_size_request(800, 20)
slider.set_draw_value(False)
slider.set_range(0, 101)
slider.set_update_policy(gtk.UPDATE_DISCONTINUOUS)
slider.connect("change-value", slider_scrolled)
slider.connect("button-press-event", slider_clicked)
slider.connect("motion-notify-event", slider_tooltip)
slider.show()
action.pack_start(slider, True, True)
def add_button(name, button_func, show = True):
b = button_func(show)
globals()[name] = b
action.pack_start(b, False, False)
add_button( "PLAY", button.play_button)
add_button( "PAUSE", button.pause_button, False)
add_button( "STOP", button.stop_button)
add_button( "NEXT", button.next_button)
action.show()
detailed.set_action_widget(action, gtk.PACK_END)
detailed.append_page(nowplaying.page, nowplaying.label)
def set_art(path):
nowplaying.set_art(path)
def update_pos(time):
slider_update(slider)
cur_pos.set_markup("<span size='x-large'>%s</span>" % time)
def on_play():
PLAY.hide()
PAUSE.show()
def on_pause():
PLAY.show()
PAUSE.hide()
load_attrs = ("title", "artist", "album", "year", "lenstr", "count", "like")
def on_load(attrs):
nowplaying.on_load(attrs)