emmental/audio/seeker.py

36 lines
1008 B
Python

# Copyright 2021 (c) Anna Schumaker.
from gi.repository import Gtk
class Seeker(Gtk.Box):
def __init__(self):
Gtk.Box.__init__(self)
self.position = Gtk.Label.new(str="00:00")
self.remaining = Gtk.Label.new(str="00:00")
self.adjustment = Gtk.Adjustment()
self.adjustment.set_step_increment(10)
self.scale = Gtk.Scale()
self.scale.set_adjustment(self.adjustment)
self.append(self.position)
self.append(self.scale)
self.append(self.remaining)
def configure(self, position, duration):
self.adjustment.set_upper(duration)
self.adjustment.set_value(position)
(m, s) = divmod(int(position), 60)
self.position.set_text(f"{m:02}:{s:02}")
(m, s) = divmod(int(duration - position), 60)
self.remaining.set_text(f"{m:02}:{s:02}")
def connect(self, func):
self.scale.connect("change-value", func)
def get_position(self):
return self.scale.get_value()