diff options
-rw-r--r-- | libs/ardour/ardour/audio_playlist_importer.h | 1 | ||||
-rw-r--r-- | libs/ardour/ardour/audio_region_importer.h | 1 | ||||
-rw-r--r-- | libs/ardour/ardour/audio_track_importer.h | 1 | ||||
-rw-r--r-- | libs/ardour/ardour/element_import_handler.h | 5 | ||||
-rw-r--r-- | libs/ardour/ardour/session.h | 2 | ||||
-rw-r--r-- | libs/ardour/audio_playlist_importer.cc | 5 | ||||
-rw-r--r-- | libs/ardour/audio_region_importer.cc | 4 | ||||
-rw-r--r-- | libs/ardour/audio_track_importer.cc | 46 | ||||
-rw-r--r-- | libs/ardour/element_import_handler.cc | 9 | ||||
-rw-r--r-- | libs/ardour/element_importer.cc | 1 |
10 files changed, 60 insertions, 15 deletions
diff --git a/libs/ardour/ardour/audio_playlist_importer.h b/libs/ardour/ardour/audio_playlist_importer.h index b94523128f..3a54367495 100644 --- a/libs/ardour/ardour/audio_playlist_importer.h +++ b/libs/ardour/ardour/audio_playlist_importer.h @@ -72,6 +72,7 @@ class AudioPlaylistImporter : public ElementImporter public: AudioPlaylistImporter (XMLTree const & source, Session & session, AudioPlaylistImportHandler & handler, XMLNode const & node); AudioPlaylistImporter (AudioPlaylistImporter const & other); + ~AudioPlaylistImporter (); string get_info () const; diff --git a/libs/ardour/ardour/audio_region_importer.h b/libs/ardour/ardour/audio_region_importer.h index 8123f89e42..c968fc8129 100644 --- a/libs/ardour/ardour/audio_region_importer.h +++ b/libs/ardour/ardour/audio_region_importer.h @@ -72,6 +72,7 @@ class AudioRegionImporter : public ElementImporter { public: AudioRegionImporter (XMLTree const & source, Session & session, AudioRegionImportHandler & handler, XMLNode const & node); + ~AudioRegionImporter (); // Interface implementation string get_info () const; diff --git a/libs/ardour/ardour/audio_track_importer.h b/libs/ardour/ardour/audio_track_importer.h index 6beee4a408..87b3b25177 100644 --- a/libs/ardour/ardour/audio_track_importer.h +++ b/libs/ardour/ardour/audio_track_importer.h @@ -54,6 +54,7 @@ class AudioTrackImporter : public ElementImporter AudioTrackImportHandler & track_handler, XMLNode const & node, AudioPlaylistImportHandler & pl_handler); + ~AudioTrackImporter (); string get_info () const; diff --git a/libs/ardour/ardour/element_import_handler.h b/libs/ardour/ardour/element_import_handler.h index 9393c31559..f56d3ce76d 100644 --- a/libs/ardour/ardour/element_import_handler.h +++ b/libs/ardour/ardour/element_import_handler.h @@ -23,6 +23,7 @@ #include <string> #include <list> +#include <set> #include <boost/shared_ptr.hpp> @@ -101,8 +102,8 @@ class ElementImportHandler static bool _errors; private: - /// List of names for duplicate checking - std::list<string> names; + /// Set of names for duplicate checking + std::set<string> names; }; } // namespace ARDOUR diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index 14e8c6d841..a5245b73f8 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -307,6 +307,7 @@ class Session : public PBD::StatefulDestructible typedef std::list<boost::shared_ptr<Diskstream> > DiskstreamList; typedef std::list<boost::shared_ptr<Route> > RouteList; + int load_routes (const XMLNode&); boost::shared_ptr<RouteList> get_routes() const { return routes.reader (); } @@ -1446,7 +1447,6 @@ class Session : public PBD::StatefulDestructible void add_routes (RouteList&, bool save); uint32_t destructive_index; - int load_routes (const XMLNode&); boost::shared_ptr<Route> XMLRouteFactory (const XMLNode&); /* mixer stuff */ diff --git a/libs/ardour/audio_playlist_importer.cc b/libs/ardour/audio_playlist_importer.cc index 0318a4ed54..50aa6f2225 100644 --- a/libs/ardour/audio_playlist_importer.cc +++ b/libs/ardour/audio_playlist_importer.cc @@ -134,6 +134,11 @@ AudioPlaylistImporter::AudioPlaylistImporter (AudioPlaylistImporter const & othe populate_region_list (); } +AudioPlaylistImporter::~AudioPlaylistImporter () +{ + +} + string AudioPlaylistImporter::get_info () const { diff --git a/libs/ardour/audio_region_importer.cc b/libs/ardour/audio_region_importer.cc index 142b96bcad..714446bfe2 100644 --- a/libs/ardour/audio_region_importer.cc +++ b/libs/ardour/audio_region_importer.cc @@ -118,6 +118,10 @@ AudioRegionImporter::AudioRegionImporter (XMLTree const & source, Session & sess handler.register_id (old_id, id); } +AudioRegionImporter::~AudioRegionImporter () +{ +} + string AudioRegionImporter::get_info () const { 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 diff --git a/libs/ardour/element_import_handler.cc b/libs/ardour/element_import_handler.cc index 013dd3fe44..3169da436e 100644 --- a/libs/ardour/element_import_handler.cc +++ b/libs/ardour/element_import_handler.cc @@ -36,20 +36,17 @@ ElementImportHandler::~ElementImportHandler () bool ElementImportHandler::check_name (const string & name) const { - return std::find (names.begin(), names.end(), name) == names.end(); + return !names.count (name); } void ElementImportHandler::add_name (string name) { - names.push_back (name); + names.insert (name); } void ElementImportHandler::remove_name (const string & name) { - std::list<string>::iterator it = std::find (names.begin(), names.end(), name); - if (it != names.end()) { - names.erase(it); - } + names.erase (name); } diff --git a/libs/ardour/element_importer.cc b/libs/ardour/element_importer.cc index af8dd770da..580c2876ad 100644 --- a/libs/ardour/element_importer.cc +++ b/libs/ardour/element_importer.cc @@ -51,7 +51,6 @@ ElementImporter::ElementImporter (XMLTree const & source, ARDOUR::Session & sess ElementImporter::~ElementImporter () { - cancel_move (); } void |