Ocarina: Added progress slider

Click to seek
This commit is contained in:
Bryan Schumaker 2011-04-22 22:30:19 -04:00
parent f9c1538a58
commit 3fa902186b
3 changed files with 37 additions and 1 deletions

View File

@ -20,6 +20,7 @@ footer.show()
def update_pos():
time = audio.get_time()
tiny.update_pos(time)
detailed.update_pos(time)
return True
gobject.timeout_add(500, update_pos)

View File

@ -3,6 +3,7 @@
import gtk
from ocarina.body import button
import libsaria
from libsaria import audio
import nowplaying
detailed = gtk.Notebook()
@ -11,6 +12,36 @@ 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(value / 100.0)
def slider_clicked(slider, event):
prcnt = event.x / float(slider.get_allocation().width)
audio.seek(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(150, 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
@ -26,6 +57,10 @@ action.show()
detailed.set_action_widget(action, gtk.PACK_END)
detailed.append_page(nowplaying.page, nowplaying.label)
def update_pos(time):
slider_update(slider)
cur_pos.set_text(time)
def on_play():
PLAY.hide()
PAUSE.show()

View File

@ -41,7 +41,7 @@ DISLIKE = button.dislike_button(True)
buttons = gtk.HBox(True)
buttons.pack_start( LIKE, False, False)
buttons.pack_start(DISLIKE, False, False)
page.pack_start(buttons, False)
page.pack_start(buttons, False, False)
page.show_all()
label.show()