Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/toolkit/temposlider.py
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/temposlider.py')
-rw-r--r--toolkit/temposlider.py32
1 files changed, 23 insertions, 9 deletions
diff --git a/toolkit/temposlider.py b/toolkit/temposlider.py
index 44b23d2..d8e633d 100644
--- a/toolkit/temposlider.py
+++ b/toolkit/temposlider.py
@@ -14,30 +14,35 @@
# Widget was copy&pasted from TamTam activities
-import gtk
+import gi
+from gi.repository import Gtk
+from gi.repository import GdkPixbuf
+
import rsvg
import cairo
-from sugar.graphics import style
+from sugar3.graphics import style
-class TempoSlider(gtk.HBox):
+class TempoSlider(Gtk.HBox):
+
def __init__(self, min_value, max_value):
- gtk.HBox.__init__(self)
+
+ Gtk.HBox.__init__(self)
self._pixbuf = [None] * 8
- self._image = gtk.Image()
+ self._image = Gtk.Image()
self._image.show()
# used to store tempo updates while the slider is active
self._delayed = 0
self._active = False
- self.adjustment = gtk.Adjustment(min_value, min_value, max_value,
- (max_value - min_value) / 8, (max_value - min_value) / 8, 0)
+ self.adjustment = Gtk.Adjustment(min_value, min_value, max_value,
+ (max_value - min_value) / 8, (max_value - min_value) / 8, 0)
self._adjustment_h = self.adjustment.connect('value-changed',
self._changed_cb)
- slider = gtk.HScale(adjustment = self.adjustment)
+ slider = Gtk.HScale(adjustment = self.adjustment)
slider.show()
slider.set_draw_value(False)
slider.connect("button-press-event", self._press_cb)
@@ -47,13 +52,16 @@ class TempoSlider(gtk.HBox):
self.pack_end(self._image, False, False)
def set_value(self, tempo, quiet = False):
+
if self._active:
self._delayed = tempo
+
elif quiet:
self.adjustment.handler_block(self._adjustment_h)
self.adjustment.set_value(tempo)
self._update(tempo)
self.adjustment.handler_unblock(self._adjustment_h)
+
else:
self.adjustment.set_value(tempo)
@@ -61,9 +69,11 @@ class TempoSlider(gtk.HBox):
self._update(widget.get_value())
def _update(self, tempo):
+
def map_range(value, ilower, iupper, olower, oupper):
if value == iupper:
return oupper
+
return olower + int((oupper-olower+1) * (value-ilower) /
float(iupper-ilower))
@@ -82,6 +92,7 @@ class TempoSlider(gtk.HBox):
self._active = True
def _release_cb(self, widget, event):
+
self._active = False
if self._delayed != 0:
self.set_value(self._delayed, True)
@@ -104,12 +115,15 @@ def _from_svg_at_size(filename=None, width=None, height=None, handle=None,
if keep_ratio:
ratio = min(ratio_width, ratio_height)
+
if ratio_width != ratio:
ratio_width = ratio
width = int(icon_width * ratio)
+
elif ratio_height != ratio:
ratio_height = ratio
height = int(icon_height * ratio)
+
else:
ratio_width = 1
ratio_height = 1
@@ -119,7 +133,7 @@ def _from_svg_at_size(filename=None, width=None, height=None, handle=None,
context.scale(ratio_width, ratio_height)
handle.render_cairo(context)
- loader = gtk.gdk.pixbuf_loader_new_with_mime_type('image/png')
+ loader = GdkPixbuf.PixbufLoader.new_with_mime_type('image/png')
surface.write_to_png(loader)
loader.close()