#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"
{
string wave_name (Glib::path_get_basename(path));
- SourceMap all_sources = _session->get_sources();
bool already_exists = false;
uint32_t existing;
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) {
}
}
- set_canvas_cursor (_cursors->wait);
-
for (int n = 0; n < finfo.channels; ++n) {
try {
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,
goto out;
}
- ARDOUR_UI::instance()->flush_pending ();
+ gtk_main_iteration();
}
}
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;
}
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)
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) {
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;
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);
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();
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);
boost::shared_ptr<Region> 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;
}
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();
Editor::import_thread ()
{
_session->import_files (import_status);
- pthread_exit_pbd (0);
- /*NOTREACHED*/
return 0;
}