From a8cc30be5fe817d120d23ba72e6d75839085f81b Mon Sep 17 00:00:00 2001 From: Sakari Bergen Date: Sat, 29 Nov 2008 20:16:16 +0000 Subject: First revision with working track import git-svn-id: svn://localhost/ardour2/branches/3.0@4270 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/audio_track_importer.cc | 46 +++++++++++++++++++++++++++++++++---- 1 file changed, 41 insertions(+), 5 deletions(-) (limited to 'libs/ardour/audio_track_importer.cc') diff --git a/libs/ardour/audio_track_importer.cc b/libs/ardour/audio_track_importer.cc index 016f133bb0..0f17323dc6 100644 --- a/libs/ardour/audio_track_importer.cc +++ b/libs/ardour/audio_track_importer.cc @@ -21,6 +21,7 @@ #include #include +#include #include #include @@ -70,7 +71,7 @@ AudioTrackImportHandler::get_info () const AudioTrackImporter::AudioTrackImporter (XMLTree const & source, Session & session, - AudioTrackImportHandler & handler, + AudioTrackImportHandler & track_handler, XMLNode const & node, AudioPlaylistImportHandler & pl_handler) : ElementImporter (source, session), @@ -102,6 +103,11 @@ AudioTrackImporter::AudioTrackImporter (XMLTree const & source, xml_track.remove_nodes_and_delete ("extra"); } +AudioTrackImporter::~AudioTrackImporter () +{ + playlists.clear (); +} + bool AudioTrackImporter::parse_route_xml () { @@ -148,6 +154,10 @@ AudioTrackImporter::parse_io () return false; } + // TODO + io->remove_property ("inputs"); + io->remove_property ("outputs"); + XMLPropertyList const & props = io->properties(); for (XMLPropertyList::const_iterator it = props.begin(); it != props.end(); ++it) { @@ -232,7 +242,6 @@ AudioTrackImporter::_prepare_move () xml_track.child ("IO")->property ("name")->set_value (name); track_handler.add_name (name); - // TODO return true; } @@ -241,13 +250,40 @@ AudioTrackImporter::_cancel_move () { track_handler.remove_name (name); playlists.clear (); - // TODO } void AudioTrackImporter::_move () -{ - // TODO +{ + /* Add diskstream */ + + boost::shared_ptr ds_node_list; + string xpath = "/Session/DiskStreams/AudioDiskstream[@id='" + old_ds_id.to_s() + "']"; + ds_node_list = source.root()->find (xpath); + + if (ds_node_list->size() != 1) { + error << string_compose (_("Error Importing Audio track %1"), name) << endmsg; + return; + } + + boost::shared_ptr ds_node = ds_node_list->front(); + ds_node->property ("id")->set_value (new_ds_id.to_s()); + + boost::shared_ptr new_ds (new AudioDiskstream (session, *ds_node)); + new_ds->set_name (name); + session.add_diskstream (new_ds); + + /* Import playlists */ + + for (PlaylistList::const_iterator it = playlists.begin(); it != playlists.end(); ++it) { + (*it)->move (); + } + + /* Import track */ + + XMLNode routes ("Routes"); + routes.add_child_copy (xml_track); + session.load_routes (routes); } bool -- cgit v1.2.3