23 #ifndef __lib_pbd_memento_command_h__
24 #define __lib_pbd_memento_command_h__
33 #include <sigc++/slot.h>
54 template <
class obj_T>
69 template <
class obj_T>
79 void set_state (
XMLNode const & node ,
int version)
const { _object.set_state (node, version); }
103 template <
class obj_T>
115 : _binder (b), before (a_before), after (a_after)
134 _binder->set_state(*after, Stateful::current_state_version);
140 _binder->set_state(*before, Stateful::current_state_version);
146 if (before && after) {
147 name =
"MementoCommand";
149 name =
"MementoUndoCommand";
151 name =
"MementoRedoCommand";
155 _binder->add_state (node);
157 node->
set_property (
"type-name", _binder->type_name ());
virtual void add_state(XMLNode *)=0
virtual void set_state(XMLNode const &, int version) const =0
virtual std::string type_name() const =0
virtual XMLNode & get_state() const =0
MementoCommand(MementoCommandBinder< obj_T > *b, XMLNode *a_before, XMLNode *a_after)
virtual XMLNode & get_state() const
PBD::ScopedConnection _binder_death_connection
MementoCommandBinder< obj_T > * _binder
MementoCommand(obj_T &a_object, XMLNode *a_before, XMLNode *a_after)
virtual void drop_references()
std::string type_name() const
SimpleMementoCommandBinder(obj_T &o)
void add_state(XMLNode *node)
void set_state(XMLNode const &node, int version) const
XMLNode & get_state() const
PBD::ScopedConnection _object_death_connection
bool set_property(const char *name, const std::string &value)
XMLNode * add_child_copy(const XMLNode &)
GtkImageIconNameData name
#define LIBPBD_TEMPLATE_API
std::string demangled_name(T const &obj)