X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fpbd%2Fpbd%2Fcommand.h;h=db4d2bbd814774d0910b1f59786c25a6d21f43c2;hb=0aac62e013e15e380001dafae39d554f8765a4a1;hp=7c367e7462598f501cd7263662905ef52db79568;hpb=ce234f363e95c38fc92728e520bf5ba240a89aa7;p=ardour.git diff --git a/libs/pbd/pbd/command.h b/libs/pbd/pbd/command.h index 7c367e7462..db4d2bbd81 100644 --- a/libs/pbd/pbd/command.h +++ b/libs/pbd/pbd/command.h @@ -1,5 +1,7 @@ + /* - Copyright (C) 2006 Hans Fugal & Paul Davis + Copyright (C) 2006 Paul Davis + Author: Hans Fugal This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -15,24 +17,41 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id: /local/undo/libs/pbd3/pbd/undo.h 80 2006-06-22T22:37:01.079855Z fugalh $ */ #ifndef __lib_pbd_command_h__ #define __lib_pbd_command_h__ -#include -#include +#include + +#include "pbd/signals.h" +#include "pbd/statefuldestructible.h" -class Command : public Stateful, public PBD::Destructible +class Command : public PBD::StatefulDestructible, public PBD::ScopedConnectionList { - public: - virtual ~Command() {} +public: + virtual ~Command() { /* NOTE: derived classes must call drop_references() */ } + virtual void operator() () = 0; - virtual void undo() = 0; - virtual void redo() { (*this)(); } - virtual XMLNode &get_state(); - virtual int set_state(const XMLNode&) { /* noop */ return 0; } + + void set_name (const std::string& str) { _name = str; } + const std::string& name() const { return _name; } + + virtual void undo() = 0; + virtual void redo() { (*this)(); } + + virtual XMLNode &get_state(); + virtual int set_state(const XMLNode&, int /*version*/) { /* noop */ return 0; } + + virtual bool empty () const { + return false; + } + +protected: + Command() {} + Command(const std::string& name) : _name(name) {} + + std::string _name; }; #endif // __lib_pbd_command_h_