diff options
author | Gonzalo Odiard <godiard@gmail.com> | 2012-01-02 00:17:43 (GMT) |
---|---|---|
committer | Gonzalo Odiard <godiard@gmail.com> | 2012-01-02 00:17:43 (GMT) |
commit | 4c75b90a8b2a2f9911af39a3f20d67e98f5ab98c (patch) | |
tree | bca7d53672ec381d1277790576222dab2acbe2c5 | |
parent | 376386a5044cbea5d139bce035e6fb3cc4cf8e77 (diff) |
Add capability of change the labelssugar-0.94
-rw-r--r-- | activity.py | 35 | ||||
-rwxr-xr-x | draw_piano.py | 4 | ||||
-rw-r--r-- | icons/do_key.svg | 34 | ||||
-rw-r--r-- | icons/q_key.svg | 40 |
4 files changed, 107 insertions, 6 deletions
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 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="55" + height="55" + viewBox="0 0 55 55" + id="svg3062" + xml:space="preserve"><metadata + id="metadata3079"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs + id="defs3077" /> + + + +<text + x="7.9110003" + y="32.999866" + transform="scale(0.82460939,1.2126954)" + id="text3857" + xml:space="preserve" + style="font-size:30.8579998px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="7.9110003" + y="32.999866" + id="tspan3859" + style="font-weight:bold;-inkscape-font-specification:Sans Bold">DO</tspan></text> +</svg> 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 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + version="1.1" + width="55" + height="55" + viewBox="0 0 55 55" + id="svg3062" + xml:space="preserve"><metadata + id="metadata3079"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs + id="defs3077" /> + + + +<rect + width="32.960995" + height="27.304964" + ry="4.4858155" + x="12.87234" + y="12.87234" + id="rect3024" + style="fill:none;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /><text + x="18.138298" + y="30.03546" + id="text3794" + xml:space="preserve" + style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"><tspan + x="18.138298" + y="30.03546" + id="tspan3796" + style="font-size:18px;font-weight:bold;-inkscape-font-specification:Sans Bold">Q</tspan></text> +</svg> |