diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2006-10-05 01:49:32 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2006-10-05 01:49:32 +0000 |
commit | ffdf5ada616d285fafb58f45c2e3d37b212a328a (patch) | |
tree | eb4fa2dcd1db72bcbeffebf86fc40a3cf30cf4be /libs/pbd/controllable.cc | |
parent | 5ad68cf2c5a7df68b7cc3a3d5a4f76f03a54c32e (diff) |
Generic MIDI control now saves+restores its state; PBD::ID now requires a buffer size for its print() method
git-svn-id: svn://localhost/ardour2/trunk@949 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/pbd/controllable.cc')
-rw-r--r-- | libs/pbd/controllable.cc | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/libs/pbd/controllable.cc b/libs/pbd/controllable.cc index b1176c64a5..80c6811e6a 100644 --- a/libs/pbd/controllable.cc +++ b/libs/pbd/controllable.cc @@ -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; + } +} |