diff options
Diffstat (limited to 'gtk2_ardour/patch_change.h')
-rw-r--r-- | gtk2_ardour/patch_change.h | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/gtk2_ardour/patch_change.h b/gtk2_ardour/patch_change.h new file mode 100644 index 0000000000..fe54426e5f --- /dev/null +++ b/gtk2_ardour/patch_change.h @@ -0,0 +1,79 @@ +/* + Copyright (C) 2000-2010 Paul Davis + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#ifndef __PATCH_CHANGE_H__ +#define __PATCH_CHANGE_H__ + +#include "canvas/flag.h" + +class MidiRegionView; + +namespace MIDI { + namespace Name { + struct PatchPrimaryKey; + } +} + +class PatchChange +{ +public: + PatchChange( + MidiRegionView& region, + ArdourCanvas::Group* parent, + const string& text, + double height, + double x, + double y, + string& model_name, + string& custom_device_mode, + ARDOUR::MidiModel::PatchChangePtr patch + ); + + ~PatchChange(); + + string model_name () const { return _model_name; } + string custom_device_mode () const { return _custom_device_mode; } + ARDOUR::MidiModel::PatchChangePtr patch () const { return _patch; } + + void initialize_popup_menus(); + + void on_patch_menu_selected(const MIDI::Name::PatchPrimaryKey& key); + + ArdourCanvas::Item* canvas_item () const { + return _flag; + } + + void move (ArdourCanvas::Duple); + void set_height (ArdourCanvas::Distance); + void hide (); + void show (); + +private: + bool event_handler (GdkEvent *); + + MidiRegionView& _region; + string _model_name; + string _custom_device_mode; + ARDOUR::MidiModel::PatchChangePtr _patch; + Gtk::Menu _popup; + bool _popup_initialized; + ArdourCanvas::Flag* _flag; +}; + +#endif /* __PATCH_CHANGE_H__ */ |