summaryrefslogtreecommitdiff
path: root/gtk2_ardour/midi_channel_selector.h
diff options
context:
space:
mode:
authorHans Baier <hansfbaier@googlemail.com>2008-04-21 09:39:05 +0000
committerHans Baier <hansfbaier@googlemail.com>2008-04-21 09:39:05 +0000
commitf31abc5eaf30ea9ed099279cbc2b7c41c131acd6 (patch)
tree1135298690fd1feb273ed8c0259d0e479cb51182 /gtk2_ardour/midi_channel_selector.h
parente8c2b6f371b1d01f208bce8f831a82f9668f3e60 (diff)
* UI fixes for track channel selection
* implemented 'forcing midi events into a single channel' * see http://www.flickr.com/photos/24012642@N02/2430165889/ git-svn-id: svn://localhost/ardour2/branches/3.0@3273 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/midi_channel_selector.h')
-rw-r--r--gtk2_ardour/midi_channel_selector.h25
1 files changed, 21 insertions, 4 deletions
diff --git a/gtk2_ardour/midi_channel_selector.h b/gtk2_ardour/midi_channel_selector.h
index 33eb3f6b75..901296903c 100644
--- a/gtk2_ardour/midi_channel_selector.h
+++ b/gtk2_ardour/midi_channel_selector.h
@@ -19,6 +19,7 @@ protected:
virtual void button_toggled(Gtk::ToggleButton *button, uint8_t button_nr) = 0;
Gtk::Label _button_labels[4][4];
Gtk::ToggleButton _buttons[4][4];
+ int _recursion_counter;
};
class SingleMidiChannelSelector : public MidiChannelSelector
@@ -33,7 +34,7 @@ public:
protected:
virtual void button_toggled(Gtk::ToggleButton *button, uint8_t button_nr);
- Gtk::ToggleButton *_active_button;
+ Gtk::ToggleButton *_last_active_button;
uint8_t _active_channel;
};
@@ -41,13 +42,30 @@ class MidiMultipleChannelSelector : public MidiChannelSelector
{
public:
MidiMultipleChannelSelector(uint16_t initial_selection = 1);
+ virtual ~MidiMultipleChannelSelector();
- const uint16_t get_selected_channels() const { return _selected_channels; }
+ /**
+ * @return each bit in the returned word represents a midi channel, eg.
+ * bit 0 represents channel 0 and bit 15 represents channel 15
+ *
+ */
+ const uint16_t get_selected_channels() const;
+ void set_selected_channels(uint16_t selected_channels);
sigc::signal<void, uint16_t> selection_changed;
-
+ sigc::signal<void, int8_t> force_channel_changed;
+
+ const int8_t get_force_channel() const;
protected:
+ enum Mode {
+ FILTERING_MULTIPLE_CHANNELS,
+ FORCING_SINGLE_CHANNEL
+ };
+
+ Mode _mode;
+
virtual void button_toggled(Gtk::ToggleButton *button, uint8_t button_nr);
+ void force_channels_button_toggled();
void select_all(bool on);
void invert_selection(void);
@@ -56,7 +74,6 @@ protected:
Gtk::Button _select_none;
Gtk::Button _invert_selection;
Gtk::ToggleButton _force_channel;
- uint16_t _selected_channels;
};
#endif /*__ardour_ui_midi_channel_selector_h__*/