From a64b07a5c0c541b85a4ea2851665fdae492d5ece Mon Sep 17 00:00:00 2001 From: Gonzalo Odiard Date: Tue, 27 Nov 2012 10:07:49 +0000 Subject: Add a iconview to change instruments Signed-off-by: Gonzalo Odiard --- diff --git a/activity.py b/activity.py index 870b767..79dc5b3 100644 --- a/activity.py +++ b/activity.py @@ -16,6 +16,7 @@ from gi.repository import Gtk from gi.repository import Gdk +from gi.repository import GdkPixbuf import logging from gettext import gettext as _ @@ -29,6 +30,7 @@ from sugar3.activity.widgets import StopButton from draw_piano import PianoKeyboard import math +import os import time import common.Util.Instruments @@ -149,15 +151,46 @@ class SimplePianoActivity(activity.Activity): self.piano.connect('key_released', self.__key_released_cb) vbox = Gtk.VBox() vbox.set_homogeneous(False) - label = Gtk.Label('') + self.load_instruments() vbox.pack_end(self.piano, True, True, 0) - vbox.pack_start(label, False, False, 0) + scrolled = Gtk.ScrolledWindow() + vbox.pack_start(scrolled, False, False, 0) + scrolled.add(self.instruments_iconview) vbox.show_all() self.set_canvas(vbox) piano_height = Gdk.Screen.width() / 2 - label.set_size_request(-1, + scrolled.set_size_request(-1, Gdk.Screen.height() - piano_height - style.GRID_CELL_SIZE) + def load_instruments(self): + self._instruments_store = Gtk.ListStore(str, GdkPixbuf.Pixbuf) + self._instruments_store.set_sort_column_id(0, Gtk.SortType.ASCENDING) + self.instruments_iconview = Gtk.IconView(self._instruments_store) + self.instruments_iconview.set_text_column(0) + self.instruments_iconview.set_pixbuf_column(1) + + # load the images + images_path = os.path.join(activity.get_bundle_path(), + 'instruments') + logging.error('Loading instrument images from %s', images_path) + for file_name in os.listdir(images_path): + image_file_name = os.path.join(images_path, file_name) + logging.error('Adding %s', image_file_name) + instrument_name = image_file_name[image_file_name.rfind('/'):] + pxb = GdkPixbuf.Pixbuf.new_from_file_at_size(image_file_name, + 75, 75) + instrument_name = image_file_name[image_file_name.rfind('/') + 1:] + instrument_name = instrument_name[:instrument_name.find('.')] + self._instruments_store.append([instrument_name, pxb]) + self.instruments_iconview.connect('selection-changed', + self.__instrument_iconview_activated_cb) + + def __instrument_iconview_activated_cb(self, widget): + item = widget.get_selected_items()[0] + model = widget.get_model() + instrument_name = model[item][0] + self.setInstrument(instrument_name) + def set_notes_labels_cb(self, widget): self.piano.font_size = 14 self.piano.set_labels(self.notes_labels) diff --git a/instruments/acguit.png b/instruments/acguit.png new file mode 100644 index 0000000..ed0e1ff --- /dev/null +++ b/instruments/acguit.png Binary files differ diff --git a/instruments/au_pipes.png b/instruments/au_pipes.png new file mode 100644 index 0000000..93524bd --- /dev/null +++ b/instruments/au_pipes.png Binary files differ diff --git a/instruments/banjo.png b/instruments/banjo.png new file mode 100644 index 0000000..f8478c3 --- /dev/null +++ b/instruments/banjo.png Binary files differ diff --git a/instruments/basse.png b/instruments/basse.png new file mode 100644 index 0000000..93d9a13 --- /dev/null +++ b/instruments/basse.png Binary files differ diff --git a/instruments/cello.png b/instruments/cello.png new file mode 100644 index 0000000..750a0bc --- /dev/null +++ b/instruments/cello.png Binary files differ diff --git a/instruments/chimes.png b/instruments/chimes.png new file mode 100644 index 0000000..5c0873a --- /dev/null +++ b/instruments/chimes.png Binary files differ diff --git a/instruments/clarinette.png b/instruments/clarinette.png new file mode 100644 index 0000000..a3729df --- /dev/null +++ b/instruments/clarinette.png Binary files differ diff --git a/instruments/clavinet.png b/instruments/clavinet.png new file mode 100644 index 0000000..04dda93 --- /dev/null +++ b/instruments/clavinet.png Binary files differ diff --git a/instruments/didjeridu.png b/instruments/didjeridu.png new file mode 100644 index 0000000..a14b863 --- /dev/null +++ b/instruments/didjeridu.png Binary files differ diff --git a/instruments/flugel.png b/instruments/flugel.png new file mode 100644 index 0000000..e53b6ea --- /dev/null +++ b/instruments/flugel.png Binary files differ diff --git a/instruments/flute.png b/instruments/flute.png new file mode 100644 index 0000000..43e128b --- /dev/null +++ b/instruments/flute.png Binary files differ diff --git a/instruments/guit.png b/instruments/guit.png new file mode 100644 index 0000000..0c2f667 --- /dev/null +++ b/instruments/guit.png Binary files differ diff --git a/instruments/guitshort.png b/instruments/guitshort.png new file mode 100644 index 0000000..c64b918 --- /dev/null +++ b/instruments/guitshort.png Binary files differ diff --git a/instruments/harmonica.png b/instruments/harmonica.png new file mode 100644 index 0000000..d8dd849 --- /dev/null +++ b/instruments/harmonica.png Binary files differ diff --git a/instruments/harmonium.png b/instruments/harmonium.png new file mode 100644 index 0000000..3d4a605 --- /dev/null +++ b/instruments/harmonium.png Binary files differ diff --git a/instruments/harpsichord.png b/instruments/harpsichord.png new file mode 100644 index 0000000..231f906 --- /dev/null +++ b/instruments/harpsichord.png Binary files differ diff --git a/instruments/kalimba.png b/instruments/kalimba.png new file mode 100644 index 0000000..b763869 --- /dev/null +++ b/instruments/kalimba.png Binary files differ diff --git a/instruments/koto.png b/instruments/koto.png new file mode 100644 index 0000000..716747d --- /dev/null +++ b/instruments/koto.png Binary files differ diff --git a/instruments/mando.png b/instruments/mando.png new file mode 100644 index 0000000..d97a2e1 --- /dev/null +++ b/instruments/mando.png Binary files differ diff --git a/instruments/marimba.png b/instruments/marimba.png new file mode 100644 index 0000000..f5eb4ac --- /dev/null +++ b/instruments/marimba.png Binary files differ diff --git a/instruments/ocarina.png b/instruments/ocarina.png new file mode 100644 index 0000000..3c8f794 --- /dev/null +++ b/instruments/ocarina.png Binary files differ diff --git a/instruments/piano.png b/instruments/piano.png new file mode 100644 index 0000000..dbd8e21 --- /dev/null +++ b/instruments/piano.png Binary files differ diff --git a/instruments/rhodes.png b/instruments/rhodes.png new file mode 100644 index 0000000..658991d --- /dev/null +++ b/instruments/rhodes.png Binary files differ diff --git a/instruments/sarangi.png b/instruments/sarangi.png new file mode 100644 index 0000000..666c129 --- /dev/null +++ b/instruments/sarangi.png Binary files differ diff --git a/instruments/saxo.png b/instruments/saxo.png new file mode 100644 index 0000000..cadf6fe --- /dev/null +++ b/instruments/saxo.png Binary files differ diff --git a/instruments/saxsoprano.png b/instruments/saxsoprano.png new file mode 100644 index 0000000..a480942 --- /dev/null +++ b/instruments/saxsoprano.png Binary files differ diff --git a/instruments/shenai.png b/instruments/shenai.png new file mode 100644 index 0000000..99eb91d --- /dev/null +++ b/instruments/shenai.png Binary files differ diff --git a/instruments/sitar.png b/instruments/sitar.png new file mode 100644 index 0000000..0a61628 --- /dev/null +++ b/instruments/sitar.png Binary files differ diff --git a/instruments/templebell.png b/instruments/templebell.png new file mode 100644 index 0000000..b84b499 --- /dev/null +++ b/instruments/templebell.png Binary files differ diff --git a/instruments/trumpet.png b/instruments/trumpet.png new file mode 100644 index 0000000..6876a92 --- /dev/null +++ b/instruments/trumpet.png Binary files differ diff --git a/instruments/tuba.png b/instruments/tuba.png new file mode 100644 index 0000000..5cdf2f1 --- /dev/null +++ b/instruments/tuba.png Binary files differ diff --git a/instruments/ukulele.png b/instruments/ukulele.png new file mode 100644 index 0000000..5e97f03 --- /dev/null +++ b/instruments/ukulele.png Binary files differ diff --git a/instruments/violin.png b/instruments/violin.png new file mode 100644 index 0000000..f13988f --- /dev/null +++ b/instruments/violin.png Binary files differ -- cgit v0.9.1