diff options
Diffstat (limited to 'gtk2_ardour/editor_audio_import.cc')
-rw-r--r-- | gtk2_ardour/editor_audio_import.cc | 57 |
1 files changed, 33 insertions, 24 deletions
diff --git a/gtk2_ardour/editor_audio_import.cc b/gtk2_ardour/editor_audio_import.cc index 7a5f3982bf..339249260e 100644 --- a/gtk2_ardour/editor_audio_import.cc +++ b/gtk2_ardour/editor_audio_import.cc @@ -52,7 +52,6 @@ #include "audio_time_axis.h" #include "midi_time_axis.h" #include "session_import_dialog.h" -#include "utils.h" #include "gui_thread.h" #include "interthread_progress_window.h" #include "mouse_cursors.h" @@ -528,8 +527,8 @@ Editor::embed_sndfiles (vector<string> paths, bool multifile, SoundFileInfo finfo; int ret = 0; - set_canvas_cursor (_cursors->wait); - gdk_flush (); + push_canvas_cursor (_cursors->wait); + gdk_flush (); for (vector<string>::iterator p = paths.begin(); p != paths.end(); ++p) { @@ -601,8 +600,6 @@ Editor::embed_sndfiles (vector<string> paths, bool multifile, } } - set_canvas_cursor (_cursors->wait); - for (int n = 0; n < finfo.channels; ++n) { try { @@ -611,7 +608,7 @@ Editor::embed_sndfiles (vector<string> paths, bool multifile, boost::shared_ptr<Source> s; - if ((s = _session->source_by_path_and_channel (path, n)) == 0) { + if ((s = _session->audio_source_by_path_and_channel (path, n)) == 0) { source = boost::dynamic_pointer_cast<AudioFileSource> ( SourceFactory::createExternal (DataType::AUDIO, *_session, @@ -644,7 +641,7 @@ Editor::embed_sndfiles (vector<string> paths, bool multifile, ret = add_sources (paths, sources, pos, disposition, mode, target_regions, target_tracks, track, true); out: - set_canvas_cursor (current_canvas_cursor); + pop_canvas_cursor (); return ret; } @@ -657,7 +654,8 @@ Editor::add_sources (vector<string> paths, SourceList& sources, framepos_t& pos, uint32_t input_chan = 0; uint32_t output_chan = 0; bool use_timestamp; - + vector<string> track_names; + use_timestamp = (pos == -1); // kludge (for MIDI we're abusing "channel" for "track" here) @@ -694,6 +692,11 @@ Editor::add_sources (vector<string> paths, SourceList& sources, framepos_t& pos, regions.push_back (r); + /* if we're creating a new track, name it after the cleaned-up + * and "merged" region name. + */ + + track_names.push_back (region_name); } else if (target_regions == -1 || target_regions > 1) { @@ -724,29 +727,26 @@ Editor::add_sources (vector<string> paths, SourceList& sources, framepos_t& pos, region_name = (*x)->name(); } - switch (sources.size()) { - /* zero and one channel handled - by previous if() condition - */ - case 2: + if (sources.size() == 2) { if (n == 0) { region_name += "-L"; } else { region_name += "-R"; } - break; - default: - region_name += (char) '-'; - region_name += (char) ('1' + n); - break; + } else if (sources.size() > 2) { + region_name += string_compose ("-%1", n+1); } + track_names.push_back (region_name); + } else { if (fs) { region_name = region_name_from_path (fs->path(), false, false, sources.size(), n); - } else{ + } else { region_name = (*x)->name(); } + + track_names.push_back (PBD::basename_nosuffix (paths[n])); } PropertyList plist; @@ -798,6 +798,12 @@ Editor::add_sources (vector<string> paths, SourceList& sources, framepos_t& pos, framepos_t rlen = 0; begin_reversible_command (Operations::insert_file); + + /* we only use tracks names when importing to new tracks, but we + * require that one is defined for every region, just to keep + * the API simpler. + */ + assert (regions.size() == track_names.size()); for (vector<boost::shared_ptr<Region> >::iterator r = regions.begin(); r != regions.end(); ++r, ++n) { boost::shared_ptr<AudioRegion> ar = boost::dynamic_pointer_cast<AudioRegion> (*r); @@ -830,9 +836,8 @@ Editor::add_sources (vector<string> paths, SourceList& sources, framepos_t& pos, pos = get_preferred_edit_position (); } } - - - finish_bringing_in_material (*r, input_chan, output_chan, pos, mode, track); + + finish_bringing_in_material (*r, input_chan, output_chan, pos, mode, track, track_names[n]); rlen = (*r)->length(); @@ -859,7 +864,7 @@ Editor::add_sources (vector<string> paths, SourceList& sources, framepos_t& pos, int Editor::finish_bringing_in_material (boost::shared_ptr<Region> region, uint32_t in_chans, uint32_t out_chans, framepos_t& pos, - ImportMode mode, boost::shared_ptr<Track>& existing_track) + ImportMode mode, boost::shared_ptr<Track>& existing_track, const string& new_track_name) { boost::shared_ptr<AudioRegion> ar = boost::dynamic_pointer_cast<AudioRegion>(region); boost::shared_ptr<MidiRegion> mr = boost::dynamic_pointer_cast<MidiRegion>(region); @@ -919,7 +924,11 @@ Editor::finish_bringing_in_material (boost::shared_ptr<Region> region, uint32_t existing_track = mt.front(); } - existing_track->set_name (region->name()); + if (!new_track_name.empty()) { + existing_track->set_name (new_track_name); + } else { + existing_track->set_name (region->name()); + } } boost::shared_ptr<Playlist> playlist = existing_track->playlist(); |