X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor_audio_import.cc;h=e5ac8c6c725231b2666186f1742e9020e7d6d0aa;hb=f77f54a6e29feea04d5aa15969e73df84e020875;hp=da70df5c15a71c2e3ead386b9e43a85fb728f997;hpb=5399425f534e2d96d07cf29f427bfa0f39d904b7;p=ardour.git diff --git a/gtk2_ardour/editor_audio_import.cc b/gtk2_ardour/editor_audio_import.cc index da70df5c15..e5ac8c6c72 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 paths, bool multifile, SoundFileInfo finfo; int ret = 0; - set_canvas_cursor (_cursors->wait); - gdk_flush (); + push_canvas_cursor (_cursors->wait); + gdk_flush (); for (vector::iterator p = paths.begin(); p != paths.end(); ++p) { @@ -601,8 +600,6 @@ Editor::embed_sndfiles (vector 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 paths, bool multifile, boost::shared_ptr 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 ( SourceFactory::createExternal (DataType::AUDIO, *_session, @@ -644,7 +641,7 @@ Editor::embed_sndfiles (vector 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 paths, SourceList& sources, framepos_t& pos, uint32_t input_chan = 0; uint32_t output_chan = 0; bool use_timestamp; - + vector track_names; + use_timestamp = (pos == -1); // kludge (for MIDI we're abusing "channel" for "track" here) @@ -694,6 +692,11 @@ Editor::add_sources (vector 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,31 @@ Editor::add_sources (vector 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(); } + + if (SMFSource::safe_midi_file_extension (paths.front())) { + string track_name = string_compose ("%1-t%2", PBD::basename_nosuffix (fs->path()), (n + 1)); + track_names.push_back (track_name); + } else { + track_names.push_back (PBD::basename_nosuffix (paths[n])); + } } PropertyList plist; @@ -798,6 +803,12 @@ Editor::add_sources (vector 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 >::iterator r = regions.begin(); r != regions.end(); ++r, ++n) { boost::shared_ptr ar = boost::dynamic_pointer_cast (*r); @@ -830,9 +841,8 @@ Editor::add_sources (vector 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 +869,7 @@ Editor::add_sources (vector paths, SourceList& sources, framepos_t& pos, int Editor::finish_bringing_in_material (boost::shared_ptr region, uint32_t in_chans, uint32_t out_chans, framepos_t& pos, - ImportMode mode, boost::shared_ptr& existing_track) + ImportMode mode, boost::shared_ptr& existing_track, const string& new_track_name) { boost::shared_ptr ar = boost::dynamic_pointer_cast(region); boost::shared_ptr mr = boost::dynamic_pointer_cast(region); @@ -888,6 +898,9 @@ Editor::finish_bringing_in_material (boost::shared_ptr region, uint32_t boost::shared_ptr copy (RegionFactory::create (region, region->properties())); playlist->clear_changes (); playlist->add_region (copy, pos); + if (Config->get_edit_mode() == Ripple) + playlist->ripple (pos, copy->length(), copy); + _session->add_command (new StatefulDiffCommand (playlist)); break; } @@ -916,7 +929,11 @@ Editor::finish_bringing_in_material (boost::shared_ptr 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 = existing_track->playlist();