Merged with trunk R992.
[ardour.git] / libs / pbd / controllable.cc
index b1176c64a52a59dac2c6544940ce35572c2712b4..80c6811e6aed84be96ec20fb8c1f1c375fda648b 100644 (file)
@@ -1,26 +1,40 @@
 #include <pbd/controllable.h>
 #include <pbd/xml++.h>
+#include <pbd/error.h>
 
 #include "i18n.h"
 
 using namespace PBD;
 
-sigc::signal<void,Controllable*> Controllable::Created;
 sigc::signal<void,Controllable*> Controllable::GoingAway;
 sigc::signal<bool,Controllable*> Controllable::StartLearning;
 sigc::signal<void,Controllable*> Controllable::StopLearning;
 
-Controllable::Controllable ()
+Controllable::Controllable (std::string name)
+       : _name (name)
 {
-       Created (this);
 }
 
 XMLNode&
 Controllable::get_state ()
 {
-       XMLNode* node = new XMLNode (X_("Controllable"));
+       XMLNode* node = new XMLNode (_name);
        char buf[64];
-       _id.print (buf);
+       _id.print (buf, sizeof (buf));
        node->add_property (X_("id"), buf);
        return *node;
 }
+
+int
+Controllable::set_state (const XMLNode& node)
+{
+       const XMLProperty* prop = node.property (X_("id"));
+
+       if (prop) {
+               _id = prop->value();
+               return 0;
+       } else {
+               error << _("Controllable state node has no ID property") << endmsg;
+               return -1;
+       }
+}