diff options
Diffstat (limited to 'gtk2_ardour/editor_export_audio.cc')
-rw-r--r-- | gtk2_ardour/editor_export_audio.cc | 32 |
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); } } |