X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor_audio_import.cc;h=31ccdb7a533df0c93581feed8f6f5bb7317575ce;hb=8b5f990267622100b3a1a7ff6fa346282aca4dda;hp=46cd59dcd5fcf88ed8311992d70f479dfaa47ce6;hpb=49f353db5cdc5c977ddece857f5f95460eac9136;p=ardour.git diff --git a/gtk2_ardour/editor_audio_import.cc b/gtk2_ardour/editor_audio_import.cc index 46cd59dcd5..31ccdb7a53 100644 --- a/gtk2_ardour/editor_audio_import.cc +++ b/gtk2_ardour/editor_audio_import.cc @@ -80,7 +80,7 @@ Editor::add_external_audio_action (ImportMode mode_hint) } if (sfbrowser == 0) { - sfbrowser = new SoundFileOmega (*this, _("Add Existing Media"), _session, 0, true, mode_hint); + sfbrowser = new SoundFileOmega (_("Add Existing Media"), _session, 0, true, mode_hint); } else { sfbrowser->set_mode (mode_hint); } @@ -124,78 +124,12 @@ Editor::external_audio_dialog () } if (sfbrowser == 0) { - sfbrowser = new SoundFileOmega (*this, _("Add Existing Media"), _session, audio_track_cnt, midi_track_cnt, true); + sfbrowser = new SoundFileOmega (_("Add Existing Media"), _session, audio_track_cnt, midi_track_cnt, true); } else { sfbrowser->reset (audio_track_cnt, midi_track_cnt); } sfbrowser->show_all (); - - - bool keepRunning; - - do { - keepRunning = false; - - int response = sfbrowser->run (); - - switch (response) { - case RESPONSE_APPLY: - // leave the dialog open - break; - - case RESPONSE_OK: - sfbrowser->hide (); - break; - - default: - // cancel from the browser - we are done - sfbrowser->hide (); - return; - } - - /* lets do it */ - - vector upaths = sfbrowser->get_paths (); - for (vector::iterator x = upaths.begin(); x != upaths.end(); ++x) { - paths.push_back (*x); - } - - ImportPosition pos = sfbrowser->get_position (); - ImportMode mode = sfbrowser->get_mode (); - ImportDisposition chns = sfbrowser->get_channel_disposition (); - framepos_t where; - - switch (pos) { - case ImportAtEditPoint: - where = get_preferred_edit_position (); - break; - case ImportAtTimestamp: - where = -1; - break; - case ImportAtPlayhead: - where = playhead_cursor->current_frame; - break; - case ImportAtStart: - where = _session->current_start_frame(); - break; - } - - SrcQuality quality = sfbrowser->get_src_quality(); - - - if (sfbrowser->copy_files_btn.get_active()) { - do_import (paths, chns, mode, quality, where); - } else { - do_embed (paths, chns, mode, where); - } - - if (response == RESPONSE_APPLY) { - sfbrowser->clear_selection (); - keepRunning = true; - } - - } while (keepRunning); } void @@ -209,7 +143,7 @@ Editor::session_import_dialog () typedef std::map > SourceMap; /** - * Updating is still disabled, see note in libs/ardour/import.cc Session::import_audiofiles() + * Updating is still disabled, see note in libs/ardour/import.cc Session::import_files() * * all_or_nothing: * true = show "Update", "Import" and "Skip" @@ -546,7 +480,7 @@ Editor::import_sndfiles (vector paths, ImportMode mode, SrcQuality quali set_canvas_cursor (_cursors->wait); gdk_flush (); - /* start import thread for this spec. this will ultimately call Session::import_audiofiles() + /* start import thread for this spec. this will ultimately call Session::import_files() which, if successful, will add the files as regions to the region list. its up to us (the GUI) to direct additional steps after that. */ @@ -678,7 +612,7 @@ Editor::embed_sndfiles (vector paths, bool multifile, if ((s = _session->source_by_path_and_channel (path, n)) == 0) { source = boost::dynamic_pointer_cast ( - SourceFactory::createReadable (DataType::AUDIO, *_session, + SourceFactory::createExternal (DataType::AUDIO, *_session, path, n, (mode == ImportAsTapeTrack ? Source::Destructive @@ -788,7 +722,7 @@ Editor::add_sources (vector paths, SourceList& sources, framepos_t& pos, */ framecnt_t len = (*x)->length (pos); if (len == 0) { - len = (60 / 120) * _session->frame_rate (); + len = (60.0 / 120.0) * _session->frame_rate (); } plist.add (ARDOUR::Properties::start, 0); @@ -827,6 +761,8 @@ Editor::add_sources (vector paths, SourceList& sources, framepos_t& pos, int n = 0; framepos_t rlen = 0; + begin_reversible_command (Operations::insert_file); + for (vector >::iterator r = regions.begin(); r != regions.end(); ++r, ++n) { boost::shared_ptr ar = boost::dynamic_pointer_cast (*r); @@ -874,6 +810,8 @@ Editor::add_sources (vector paths, SourceList& sources, framepos_t& pos, } } + commit_reversible_command (); + /* setup peak file building in another thread */ for (SourceList::iterator x = sources.begin(); x != sources.end(); ++x) { @@ -885,7 +823,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) { boost::shared_ptr ar = boost::dynamic_pointer_cast(region); boost::shared_ptr mr = boost::dynamic_pointer_cast(region); @@ -912,11 +850,9 @@ Editor::finish_bringing_in_material (boost::shared_ptr region, uint32_t boost::shared_ptr playlist = existing_track->playlist(); boost::shared_ptr copy (RegionFactory::create (region, region->properties())); - begin_reversible_command (Operations::insert_file); playlist->clear_changes (); playlist->add_region (copy, pos); _session->add_command (new StatefulDiffCommand (playlist)); - commit_reversible_command (); break; } @@ -932,7 +868,10 @@ Editor::finish_bringing_in_material (boost::shared_ptr region, uint32_t existing_track = at.front(); } else if (mr) { - list > mt (_session->new_midi_track (boost::shared_ptr(), Normal, 0, 1)); + list > mt (_session->new_midi_track (ChanCount (DataType::MIDI, 1), + ChanCount (DataType::MIDI, 1), + boost::shared_ptr(), + Normal, 0, 1)); if (mt.empty()) { return -1; @@ -946,11 +885,9 @@ Editor::finish_bringing_in_material (boost::shared_ptr region, uint32_t boost::shared_ptr playlist = existing_track->playlist(); boost::shared_ptr copy (RegionFactory::create (region, true)); - begin_reversible_command (Operations::insert_file); playlist->clear_changes (); playlist->add_region (copy, pos); _session->add_command (new StatefulDiffCommand (playlist)); - commit_reversible_command (); break; } @@ -964,11 +901,9 @@ Editor::finish_bringing_in_material (boost::shared_ptr region, uint32_t if (!at.empty()) { boost::shared_ptr playlist = at.front()->playlist(); boost::shared_ptr copy (RegionFactory::create (region, true)); - begin_reversible_command (Operations::insert_file); playlist->clear_changes (); playlist->add_region (copy, pos); _session->add_command (new StatefulDiffCommand (playlist)); - commit_reversible_command (); } break; } @@ -989,7 +924,7 @@ Editor::_import_thread (void *arg) void * Editor::import_thread () { - _session->import_audiofiles (import_status); + _session->import_files (import_status); pthread_exit_pbd (0); /*NOTREACHED*/ return 0;