Remove unused method in RouteTimeAxisView. Fix bug with switching to layered region...
[ardour.git] / libs / ardour / audio_track_importer.cc
index 0f17323dc684a04c5c20107b0766ea6a4e01edf2..dd453f34c3a3c497331b8eb301192d50099d1901 100644 (file)
 
 */
 
-#include <ardour/audio_track_importer.h>
+#include "ardour/audio_track_importer.h"
 
-#include <ardour/audio_playlist_importer.h>
-#include <ardour/audio_diskstream.h>
-#include <ardour/session.h>
+#include "ardour/audio_playlist_importer.h"
+#include "ardour/audio_diskstream.h"
+#include "ardour/session.h"
 
-#include <pbd/failed_constructor.h>
-#include <pbd/convert.h>
+#include "pbd/failed_constructor.h"
+#include "pbd/convert.h"
 
 #include <sstream>
+#include <algorithm>
 
 #include "i18n.h"
 
+using namespace std;
 using namespace PBD;
 using namespace ARDOUR;
 
@@ -89,18 +91,18 @@ AudioTrackImporter::AudioTrackImporter (XMLTree const & source,
                throw failed_constructor();
        }
        
-       XMLNodeList const & controllables = node.children ("controllable");
+       XMLNodeList const & controllables = node.children ("Controllable");
        for (XMLNodeList::const_iterator it = controllables.begin(); it != controllables.end(); ++it) {
                parse_controllable (**it);
        }
        
-       XMLNode * remote_control = xml_track.child ("remote_control");
+       XMLNode * remote_control = xml_track.child ("RemoteControl");
        if (remote_control && (prop = remote_control->property ("id"))) {
                uint32_t control_id = session.ntracks() + session.nbusses() + 1;
                prop->set_value (to_string (control_id, std::dec));
        }
        
-       xml_track.remove_nodes_and_delete ("extra");
+       xml_track.remove_nodes_and_delete ("Extra");
 }
 
 AudioTrackImporter::~AudioTrackImporter ()
@@ -154,10 +156,6 @@ 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) {
@@ -172,9 +170,18 @@ AudioTrackImporter::parse_io ()
                        (*it)->set_value (id.to_s());
                        id_ok = true;
                } else if (!prop.compare("inputs")) {
-                       // TODO Let the IO class do it's thing for now...
+                       // TODO Handle this properly!
+                       /* Input and output ports are counted and added empty, so that no in/output connecting function fails. */
+                       uint32_t num_inputs = std::count ((*it)->value().begin(), (*it)->value().end(), '{');
+                       std::string value;
+                       for (uint32_t i = 0; i < num_inputs; i++) { value += "{}"; }
+                       (*it)->set_value (value);
                } else if (!prop.compare("outputs")) {
-                       // TODO Let the IO class do it's thing for now...
+                       // TODO See comments above
+                       uint32_t num_outputs = std::count ((*it)->value().begin(), (*it)->value().end(), '{');
+                       std::string value;
+                       for (uint32_t i = 0; i < num_outputs; i++) { value += "{}"; }
+                       (*it)->set_value (value);
                } else {
                        std::cerr << string_compose (X_("AudioTrackImporter: did not recognise XML-property \"%1\""), prop) << endmsg;
                }
@@ -190,7 +197,7 @@ AudioTrackImporter::parse_io ()
                return false;
        }
        
-       XMLNodeList const & controllables = io->children ("controllable");
+       XMLNodeList const & controllables = io->children ("Controllable");
        for (XMLNodeList::const_iterator it = controllables.begin(); it != controllables.end(); ++it) {
                parse_controllable (**it);
        }