summaryrefslogtreecommitdiff
path: root/libs/ardour/audio_track_importer.cc
diff options
context:
space:
mode:
authorSakari Bergen <sakari.bergen@beatwaves.net>2008-11-29 20:16:16 +0000
committerSakari Bergen <sakari.bergen@beatwaves.net>2008-11-29 20:16:16 +0000
commita8cc30be5fe817d120d23ba72e6d75839085f81b (patch)
tree1aea260f517ddcc96f1357328dbc68f21ebca041 /libs/ardour/audio_track_importer.cc
parent4af523ca38eb99e910d8de93867dde069105f1d1 (diff)
First revision with working track import
git-svn-id: svn://localhost/ardour2/branches/3.0@4270 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/audio_track_importer.cc')
-rw-r--r--libs/ardour/audio_track_importer.cc46
1 files changed, 41 insertions, 5 deletions
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 <ardour/audio_track_importer.h>
#include <ardour/audio_playlist_importer.h>
+#include <ardour/audio_diskstream.h>
#include <ardour/session.h>
#include <pbd/failed_constructor.h>
@@ -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<XMLSharedNodeList> 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<XMLNode> ds_node = ds_node_list->front();
+ ds_node->property ("id")->set_value (new_ds_id.to_s());
+
+ boost::shared_ptr<Diskstream> 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