X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fexport_range_markers_dialog.cc;h=df612a340d1a6df22e3fd1544eb04e61a1bda64f;hb=ae6dbb836cc1ab1bcbc21883f282361c43f10883;hp=c91e1c101a25514e0fe6f3156942ed27904eea95;hpb=93c7aeba048f19df5abee5e4325ef8b0ef62c279;p=ardour.git diff --git a/gtk2_ardour/export_range_markers_dialog.cc b/gtk2_ardour/export_range_markers_dialog.cc index c91e1c101a..df612a340d 100644 --- a/gtk2_ardour/export_range_markers_dialog.cc +++ b/gtk2_ardour/export_range_markers_dialog.cc @@ -22,8 +22,8 @@ #include -#include -#include +#include "ardour/audioengine.h" +#include "ardour/sndfile_helpers.h" #include "ardour_ui.h" #include "export_range_markers_dialog.h" @@ -38,15 +38,23 @@ using namespace std; ExportRangeMarkersDialog::ExportRangeMarkersDialog (PublicEditor& editor) : ExportDialog(editor) { + set_title (_("ardour: export ranges")); + file_frame.set_label (_("Export to Directory")); + do_not_allow_export_cd_markers(); total_duration = 0; current_range_marker_index = 0; } - + +Gtk::FileChooserAction +ExportRangeMarkersDialog::browse_action () const +{ + return Gtk::FILE_CHOOSER_ACTION_CREATE_FOLDER; +} void -ExportRangeMarkersDialog::export_audio_data () +ExportRangeMarkersDialog::export_data () { getSession().locations()->apply(*this, &ExportRangeMarkersDialog::process_range_markers_export); } @@ -57,7 +65,7 @@ ExportRangeMarkersDialog::process_range_markers_export(Locations::LocationList& Locations::LocationList::iterator locationIter; current_range_marker_index = 0; init_progress_computing(locations); - + for (locationIter = locations.begin(); locationIter != locations.end(); ++locationIter) { Location *currentLocation = (*locationIter); @@ -73,16 +81,15 @@ ExportRangeMarkersDialog::process_range_markers_export(Locations::LocationList& spec.start_frame = currentLocation->start(); spec.end_frame = currentLocation->end(); - getSession().request_locate(spec.start_frame, false); - - if (getSession().start_audio_export(spec)){ + if (getSession().start_export(spec)){ // if export fails return; } // wait until export of this range finished gtk_main_iteration(); - while(spec.running){ + + while (spec.running){ if(gtk_events_pending()){ gtk_main_iteration(); }else { @@ -90,8 +97,9 @@ ExportRangeMarkersDialog::process_range_markers_export(Locations::LocationList& } } - getSession().engine().freewheel (false); current_range_marker_index++; + + getSession().stop_export (spec); } } @@ -123,7 +131,6 @@ ExportRangeMarkersDialog::get_target_filepath(string path, string filename, stri return target_filepath; } - bool ExportRangeMarkersDialog::is_filepath_valid(string &filepath) { @@ -140,11 +147,10 @@ ExportRangeMarkersDialog::is_filepath_valid(string &filepath) if ( (stat (filepath.c_str(), &statbuf) != 0) || (!S_ISDIR (statbuf.st_mode)) ) { - string txt = _("Please select an existing target directory. Files\n" - "are not allowed!"); - MessageDialog msg (*this, txt, false, MESSAGE_ERROR, BUTTONS_OK, true); - msg.run(); - return false; + string txt = _("Please select an existing target directory. Files are not allowed!"); + MessageDialog msg (*this, txt, false, MESSAGE_ERROR, BUTTONS_OK, true); + msg.run(); + return false; } // directory needs to exist and be writable @@ -159,7 +165,6 @@ ExportRangeMarkersDialog::is_filepath_valid(string &filepath) return true; } - void ExportRangeMarkersDialog::init_progress_computing(Locations::LocationList& locations) { @@ -173,13 +178,11 @@ ExportRangeMarkersDialog::init_progress_computing(Locations::LocationList& locat Location *currentLocation = (*locationIter); if(currentLocation->is_range_marker()){ - range_markers_durations_aggregated.push_back( - duration_before_current_location); + range_markers_durations_aggregated.push_back (duration_before_current_location); - nframes_t duration = - currentLocation->end() - currentLocation->start(); + nframes_t duration = currentLocation->end() - currentLocation->start(); - range_markers_durations.push_back(duration); + range_markers_durations.push_back (duration); duration_before_current_location += duration; } } @@ -192,14 +195,12 @@ gint ExportRangeMarkersDialog::progress_timeout () { double progress = 0.0; - - if(current_range_marker_index >= range_markers_durations.size()){ + + if (current_range_marker_index >= range_markers_durations.size()){ progress = 1.0; - } - else{ - progress = - ((double) range_markers_durations_aggregated[current_range_marker_index] + - (spec.progress * (double) range_markers_durations[current_range_marker_index])) / + } else{ + progress = ((double) range_markers_durations_aggregated[current_range_marker_index] + + (spec.progress * (double) range_markers_durations[current_range_marker_index])) / (double) total_duration; }