summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor_export_audio.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2012-05-23 20:32:55 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2012-05-23 20:32:55 +0000
commite0d0735fa2c2543c6995e9128dbd16c799f4ec8f (patch)
tree92545c38f9232e2c96ade32d2c582253c45922c6 /gtk2_ardour/editor_export_audio.cc
parent7873fdb55cf8db4bfe9aaf4f4ed311ac91f7e248 (diff)
add basic, not terribly glossy MIDI region export
git-svn-id: svn://localhost/ardour2/branches/3.0@12402 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/editor_export_audio.cc')
-rw-r--r--gtk2_ardour/editor_export_audio.cc32
1 files changed, 23 insertions, 9 deletions
diff --git a/gtk2_ardour/editor_export_audio.cc b/gtk2_ardour/editor_export_audio.cc
index ac0c3f67c4..9521f6a0c6 100644
--- a/gtk2_ardour/editor_export_audio.cc
+++ b/gtk2_ardour/editor_export_audio.cc
@@ -46,6 +46,7 @@
#include "audio_time_axis.h"
#include "editor.h"
#include "export_dialog.h"
+#include "midi_export_dialog.h"
#include "midi_region_view.h"
#include "public_editor.h"
#include "selection.h"
@@ -110,20 +111,33 @@ Editor::export_region ()
return;
}
- try {
- boost::shared_ptr<Region> r = selection->regions.front()->region();
- AudioRegion & region (dynamic_cast<AudioRegion &> (*r));
-
+ boost::shared_ptr<Region> r = selection->regions.front()->region();
+ boost::shared_ptr<AudioRegion> audio_region = boost::dynamic_pointer_cast<AudioRegion>(r);
+ boost::shared_ptr<MidiRegion> midi_region = boost::dynamic_pointer_cast<MidiRegion>(r);
+
+ if (audio_region) {
+
RouteTimeAxisView & rtv (dynamic_cast<RouteTimeAxisView &> (selection->regions.front()->get_time_axis_view()));
AudioTrack & track (dynamic_cast<AudioTrack &> (*rtv.route()));
+
+ ExportRegionDialog dialog (*this, *(audio_region.get()), track);
+ dialog.set_session (_session);
+ dialog.run ();
+
+ } else if (midi_region) {
- ExportRegionDialog dialog (*this, region, track);
+ MidiExportDialog dialog (*this, midi_region);
dialog.set_session (_session);
- dialog.run();
+ int ret = dialog.run ();
+ switch (ret) {
+ case Gtk::RESPONSE_ACCEPT:
+ break;
+ default:
+ return;
+ }
- } catch (std::bad_cast & e) {
- error << "Exporting Region failed!" << endmsg;
- return;
+ string path = dialog.get_path ();
+ (void) midi_region->clone (path);
}
}