From 4c75b90a8b2a2f9911af39a3f20d67e98f5ab98c Mon Sep 17 00:00:00 2001 From: Gonzalo Odiard Date: Mon, 02 Jan 2012 00:17:43 +0000 Subject: Add capability of change the labels --- diff --git a/activity.py b/activity.py index 9a776eb..09a2345 100644 --- a/activity.py +++ b/activity.py @@ -22,6 +22,7 @@ from gettext import gettext as _ from sugar.activity import activity from sugar.graphics.toolbarbox import ToolbarBox from sugar.activity.widgets import ActivityToolbarButton +from sugar.graphics.radiotoolbutton import RadioToolButton from sugar.activity.widgets import StopButton from draw_piano import PianoKeyboard @@ -46,6 +47,20 @@ class SimplePianoActivity(activity.Activity): activity_button = ActivityToolbarButton(self) toolbar_box.toolbar.insert(activity_button, 0) + toolbar_box.toolbar.insert(gtk.SeparatorToolItem(), -1) + + keybord_labels = RadioToolButton() + keybord_labels.props.icon_name = 'q_key' + keybord_labels.props.group = keybord_labels + keybord_labels.connect('clicked', self.set_keyboard_labels_cb) + toolbar_box.toolbar.insert(keybord_labels, -1) + + notes_labels = RadioToolButton() + notes_labels.props.icon_name = 'do_key' + notes_labels.props.group = keybord_labels + notes_labels.connect('clicked', self.set_notes_labels_cb) + toolbar_box.toolbar.insert(notes_labels, -1) + separator = gtk.SeparatorToolItem() separator.props.draw = False separator.set_expand(True) @@ -64,14 +79,22 @@ class SimplePianoActivity(activity.Activity): notes = ['DO', 'DO#', 'RE', 'RE#', 'MI', 'FA', 'FA#', 'SOL', 'SOL#', 'LA', 'LA#', 'SI'] - labels_tamtam = [notes, notes, ['DO']] + self.notes_labels = [notes, notes, ['DO']] - piano = PianoKeyboard(octaves=2, add_c=True, + self.piano = PianoKeyboard(octaves=2, add_c=True, labels=self.keyboard_letters) - piano.connect('key_pressed', self.__key_pressed_cb) - piano.connect('key_released', self.__key_released_cb) - piano.show() - self.set_canvas(piano) + self.piano.connect('key_pressed', self.__key_pressed_cb) + self.piano.connect('key_released', self.__key_released_cb) + self.piano.show() + self.set_canvas(self.piano) + + def set_notes_labels_cb(self, widget): + self.piano.font_size = 14 + self.piano.set_labels(self.notes_labels) + + def set_keyboard_labels_cb(self, widget): + self.piano.font_size = 20 + self.piano.set_labels(self.keyboard_letters) def __key_pressed_cb(self, widget, octave_clicked, key_clicked, letter): logging.debug('Pressed Octave: %d Key: %d Letter: %s' % diff --git a/draw_piano.py b/draw_piano.py index 6f045c8..48df9eb 100755 --- a/draw_piano.py +++ b/draw_piano.py @@ -45,6 +45,10 @@ class PianoKeyboard(gtk.DrawingArea): gtk.gdk.BUTTON_RELEASE_MASK | gtk.gdk.POINTER_MOTION_MASK | \ gtk.gdk.POINTER_MOTION_HINT_MASK) + def set_labels(self, labels): + self._labels = labels + self.queue_draw() + def calculate_sizes(self, width): self._width = width self._height = self._width / 2 diff --git a/icons/do_key.svg b/icons/do_key.svg new file mode 100644 index 0000000..59eef91 --- /dev/null +++ b/icons/do_key.svg @@ -0,0 +1,34 @@ + + + +image/svg+xml + + + +DO + diff --git a/icons/q_key.svg b/icons/q_key.svg new file mode 100644 index 0000000..632c380 --- /dev/null +++ b/icons/q_key.svg @@ -0,0 +1,40 @@ + + + +image/svg+xml + + + +Q + -- cgit v0.9.1