summaryrefslogtreecommitdiff
path: root/gtk2_ardour/midi_time_axis.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour/midi_time_axis.cc')
-rw-r--r--gtk2_ardour/midi_time_axis.cc43
1 files changed, 31 insertions, 12 deletions
diff --git a/gtk2_ardour/midi_time_axis.cc b/gtk2_ardour/midi_time_axis.cc
index 89ca218ea2..8f76220304 100644
--- a/gtk2_ardour/midi_time_axis.cc
+++ b/gtk2_ardour/midi_time_axis.cc
@@ -90,6 +90,8 @@ MidiTimeAxisView::MidiTimeAxisView (PublicEditor& ed, Session& sess, boost::shar
, _note_mode(Sustained)
, _note_mode_item(NULL)
, _percussion_mode_item(NULL)
+ , _channel_selector(0)
+ , _midi_expander("MIDI")
{
subplugin_menu.set_name ("ArdourContextMenu");
@@ -100,18 +102,6 @@ MidiTimeAxisView::MidiTimeAxisView (PublicEditor& ed, Session& sess, boost::shar
mute_button->set_active (false);
solo_button->set_active (false);
- // add channel selection button
- _channel_selection_button.add(*manage(new Label("c")));
- controls_table.property_n_rows() = 3;
- controls_table.attach(_channel_selection_button, 1, 2, 2, 3);
- _channel_selection_button.show_all();
-
- // add channel selector
- controls_vbox.pack_end(_channel_selector);
- _channel_selector.selection_changed.connect(
- mem_fun(*midi_track()->midi_diskstream(), &MidiDiskstream::set_channel_mask));
- _channel_selector.show_all();
-
if (is_midi_track()) {
controls_ebox.set_name ("MidiTimeAxisViewControlsBaseUnselected");
_note_mode = midi_track()->note_mode();
@@ -146,6 +136,18 @@ MidiTimeAxisView::MidiTimeAxisView (PublicEditor& ed, Session& sess, boost::shar
_view->RegionViewAdded.connect (mem_fun(*this, &MidiTimeAxisView::region_view_added));
_view->attach ();
}
+
+ // add channel selector
+ _channel_selector = manage(new MidiMultipleChannelSelector(0xFFFF));
+ HBox *channel_selector_box = manage(new HBox());
+ channel_selector_box->pack_start(*_channel_selector, SHRINK, 0);
+ _midi_expander.add(*channel_selector_box);
+ _midi_expander.property_expanded().signal_changed().connect(
+ mem_fun(this, &MidiTimeAxisView::channel_selector_toggled));
+ controls_vbox.pack_end(_midi_expander, SHRINK, 0);
+ _channel_selector->selection_changed.connect(
+ mem_fun(*midi_track()->midi_diskstream(), &MidiDiskstream::set_channel_mask));
+
}
MidiTimeAxisView::~MidiTimeAxisView ()
@@ -382,3 +384,20 @@ MidiTimeAxisView::route_active_changed ()
}
}
}
+
+void
+MidiTimeAxisView::channel_selector_toggled()
+{
+ static TimeAxisView::TrackHeight previous_height;
+ assert(_channel_selector);
+
+ if(_midi_expander.property_expanded()) {
+ previous_height = height_style;
+ if(previous_height != TimeAxisView::Largest) {
+ TimeAxisView::set_height(TimeAxisView::Large);
+ }
+ } else {
+ TimeAxisView::set_height(previous_height);
+ }
+}
+