diff options
author | Carl Hetherington <carl@carlh.net> | 2010-12-22 23:45:04 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2010-12-22 23:45:04 +0000 |
commit | 818f2cffd7b7c95319eb5728b2e519cd96c62dc4 (patch) | |
tree | fcb1fbc9641fa71e3deaf93e69d4bb07afec0411 /gtk2_ardour/editor_ops.cc | |
parent | 95bb346926e237b903059c83a70e58ed9253eaca (diff) |
Add menu option to insert program changes.
git-svn-id: svn://localhost/ardour2/branches/3.0@8330 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/editor_ops.cc')
-rw-r--r-- | gtk2_ardour/editor_ops.cc | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index fa096dc42b..6c5c250fa3 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -84,6 +84,7 @@ #include "normalize_dialog.h" #include "editor_cursors.h" #include "mouse_cursors.h" +#include "program_change_dialog.h" #include "i18n.h" @@ -4705,6 +4706,31 @@ Editor::quantize_region () } void +Editor::insert_program_change () +{ + RegionSelection rs = get_regions_from_selection_and_entered (); + if (rs.empty ()) { + return; + } + + ProgramChangeDialog d; + if (d.run() == RESPONSE_CANCEL) { + return; + } + + framepos_t const p = get_preferred_edit_position (false); + + for (RegionSelection::iterator i = rs.begin (); i != rs.end(); ++i) { + MidiRegionView* const mrv = dynamic_cast<MidiRegionView*> (*i); + if (mrv) { + if (p >= mrv->region()->first_frame() && p <= mrv->region()->last_frame()) { + mrv->add_program_change (p - mrv->region()->position(), d.channel (), d.program ()); + } + } + } +} + +void Editor::apply_filter (Filter& filter, string command, ProgressReporter* progress) { RegionSelection rs = get_regions_from_selection_and_entered (); |