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 ();
}
void add_routes (RouteList&, bool save);
uint32_t destructive_index;
- int load_routes (const XMLNode&);
boost::shared_ptr<Route> XMLRouteFactory (const XMLNode&);
/* mixer stuff */
#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>
AudioTrackImporter::AudioTrackImporter (XMLTree const & source,
Session & session,
- AudioTrackImportHandler & handler,
+ AudioTrackImportHandler & track_handler,
XMLNode const & node,
AudioPlaylistImportHandler & pl_handler) :
ElementImporter (source, session),
xml_track.remove_nodes_and_delete ("extra");
}
+AudioTrackImporter::~AudioTrackImporter ()
+{
+ playlists.clear ();
+}
+
bool
AudioTrackImporter::parse_route_xml ()
{
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) {
xml_track.child ("IO")->property ("name")->set_value (name);
track_handler.add_name (name);
- // TODO
return true;
}
{
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
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);
}