diff options
Diffstat (limited to 'gtk2_ardour/patch_change_widget.cc')
-rw-r--r-- | gtk2_ardour/patch_change_widget.cc | 32 |
1 files changed, 12 insertions, 20 deletions
diff --git a/gtk2_ardour/patch_change_widget.cc b/gtk2_ardour/patch_change_widget.cc index 0e5ad911ab..51cae03f7e 100644 --- a/gtk2_ardour/patch_change_widget.cc +++ b/gtk2_ardour/patch_change_widget.cc @@ -57,8 +57,6 @@ PatchChangeWidget::PatchChangeWidget (boost::shared_ptr<ARDOUR::Route> r) , _audition_end_spin (*manage (new Adjustment (60, 0, 127, 1, 16))) , _audition_velocity (*manage (new Adjustment (100, 1, 127, 1, 16))) , _audition_note_on (false) - , _piano ((PianoKeyboard*)piano_keyboard_new()) - , _pianomm (Glib::wrap((GtkWidget*)_piano)) { Box* box; box = manage (new HBox ()); @@ -114,11 +112,12 @@ PatchChangeWidget::PatchChangeWidget (boost::shared_ptr<ARDOUR::Route> r) _channel_select.AddMenuElem (MenuElemNoMnemonic (buf, sigc::bind (sigc::mem_fun (*this, &PatchChangeWidget::select_channel), chn))); } - piano_keyboard_set_monophonic (_piano, TRUE); - g_signal_connect (G_OBJECT (_piano), "note-on", G_CALLBACK (PatchChangeWidget::_note_on_event_handler), this); - g_signal_connect (G_OBJECT (_piano), "note-off", G_CALLBACK (PatchChangeWidget::_note_off_event_handler), this); - _pianomm->set_flags(Gtk::CAN_FOCUS); - pack_start (*_pianomm, false, false); + _piano.set_monophonic (true); + _piano.NoteOn.connect (sigc::mem_fun (*this, &PatchChangeWidget::_note_on_event_handler)); + _piano.NoteOff.connect (sigc::mem_fun (*this, &PatchChangeWidget::note_off_event_handler)); + + _piano.set_flags(Gtk::CAN_FOCUS); + pack_start (_piano, false, false); _audition_start_spin.set_sensitive (false); _audition_end_spin.set_sensitive (false); @@ -145,7 +144,6 @@ PatchChangeWidget::PatchChangeWidget (boost::shared_ptr<ARDOUR::Route> r) PatchChangeWidget::~PatchChangeWidget () { cancel_audition (); - delete _pianomm; } void @@ -434,7 +432,7 @@ PatchChangeWidget::cancel_audition () if (_audition_note_on) { note_off_event_handler (_audition_note_num); - piano_keyboard_set_note_off (_piano, _audition_note_num); + _piano.set_note_off (_audition_note_num); } } @@ -467,25 +465,19 @@ PatchChangeWidget::audition_next () { if (_audition_note_on) { note_off_event_handler (_audition_note_num); - piano_keyboard_set_note_off (_piano, _audition_note_num); + _piano.set_note_off (_audition_note_num); return ++_audition_note_num <= _audition_end_spin.get_value_as_int() && _audition_enable.get_active (); } else { note_on_event_handler (_audition_note_num, true); - piano_keyboard_set_note_on (_piano, _audition_note_num); + _piano.set_note_on (_audition_note_num); return true; } } void -PatchChangeWidget::_note_on_event_handler(GtkWidget*, int note, int, gpointer arg) -{ - ((PatchChangeWidget*)arg)->note_on_event_handler(note, false); -} - -void -PatchChangeWidget::_note_off_event_handler(GtkWidget*, int note, gpointer arg) +PatchChangeWidget::_note_on_event_handler (int note, int) { - ((PatchChangeWidget*)arg)->note_off_event_handler(note); + note_on_event_handler(note, false); } void @@ -493,7 +485,7 @@ PatchChangeWidget::note_on_event_handler (int note, bool for_audition) { if (!for_audition) { cancel_audition (); - _pianomm->grab_focus (); + _piano.grab_focus (); } uint8_t event[3]; event[0] = (MIDI_CMD_NOTE_ON | _channel); |