summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_ops.cc
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2010-12-22 23:45:04 +0000
committerCarl Hetherington <carl@carlh.net>2010-12-22 23:45:04 +0000
commit818f2cffd7b7c95319eb5728b2e519cd96c62dc4 (patch)
treefcb1fbc9641fa71e3deaf93e69d4bb07afec0411 /gtk2_ardour/editor_ops.cc
parent95bb346926e237b903059c83a70e58ed9253eaca (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.cc26
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 ();