X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=libs%2Fpbd%2Fcontrollable.cc;h=2264a955ae1accfda27633482b812beea5f0de35;hb=17469ea0e3607ef954f415cb2429893315d49898;hp=b1176c64a52a59dac2c6544940ce35572c2712b4;hpb=8b46567e0677eb25c965ed46b80da8808fa33b2b;p=ardour.git diff --git a/libs/pbd/controllable.cc b/libs/pbd/controllable.cc index b1176c64a5..2264a955ae 100644 --- a/libs/pbd/controllable.cc +++ b/libs/pbd/controllable.cc @@ -1,26 +1,40 @@ #include #include +#include #include "i18n.h" using namespace PBD; -sigc::signal Controllable::Created; -sigc::signal Controllable::GoingAway; +sigc::signal Controllable::Destroyed; sigc::signal Controllable::StartLearning; sigc::signal 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; + } +}