Merged with trunk R1612.
[ardour.git] / libs / pbd / pbd / undo.h
index eecd8ae49d59d46495a2577c4681614e33cde1f0..9539d8b41dc734fd8ac88bcc33c1186d177de734 100644 (file)
@@ -15,7 +15,6 @@
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-    $Id$
 */
 
 #ifndef __lib_pbd_undo_h__
@@ -40,8 +39,11 @@ class UndoTransaction : public Command
        ~UndoTransaction ();
 
        void clear ();
+       bool empty() const;
+       bool clearing () const { return _clearing; }
 
        void add_command (Command* const);
+       void remove_command (Command* const);
 
         void operator() ();
        void undo();
@@ -66,11 +68,12 @@ class UndoTransaction : public Command
        std::list<Command*>    actions;
        struct timeval        _timestamp;
        std::string           _name;
-       bool                   clearing;
-       void remove_command (Command* const);
+       bool                  _clearing;
+
+       friend void command_death (UndoTransaction*, Command *);
 };
 
-class UndoHistory
+class UndoHistory : public sigc::trackable
 {
   public:
        UndoHistory();
@@ -90,11 +93,13 @@ class UndoHistory
        void clear_undo ();
        void clear_redo ();
 
-        XMLNode &get_state();
+        XMLNode &get_state(uint32_t depth = 0);
         void save_state();
 
+       sigc::signal<void> Changed;
+
   private:
-       bool clearing;
+       bool _clearing;
        std::list<UndoTransaction*> UndoList;
        std::list<UndoTransaction*> RedoList;