// -*- C++ -*-
/* This file is part of
* ======================================================
- *
+ *
* LyX, The Document Processor
- *
+ *
* Copyright 1995 Matthias Ettrich
- * Copyright 1995-1999 The LyX Team.
+ * Copyright 1995-2001 The LyX Team.
*
* ====================================================== */
#ifndef UNDO_H
#define UNDO_H
-#ifdef __GNUG__
-#pragma interface
-#endif
-
-#include <list>
-using std::list;
-
-#include "lyxparagraph.h"
-
+#include "ParagraphList.h"
///
class Undo {
///
undo_kind kind;
///
- int number_of_before_par;
+ int inset_id; // valid if >= 0, if < 0 then not in inset
///
- int number_of_behind_par;
+ int plist_id;
///
- int number_of_cursor_par;
+ int first_par_offset;
///
- int cursor_pos; // valid if >= 0
+ int last_par_offset;
///
- LyXParagraph * par;
+ int cursor_par_offset;
///
- Undo(undo_kind kind_arg,
- int number_before_arg, int number_behind_arg,
- int cursor_par_arg, int cursor_pos_arg,
- LyXParagraph * par_arg)
- {
- kind = kind_arg;
- number_of_before_par = number_before_arg;
- number_of_behind_par = number_behind_arg;
- number_of_cursor_par = cursor_par_arg;
- cursor_pos = cursor_pos_arg;
- par = par_arg;
- }
+ int cursor_pos; // valid if >= 0
///
- ~Undo() {
- LyXParagraph * tmppar;
- while (par) {
- tmppar = par;
- par = par->next;
- delete tmppar;
- }
- }
-};
+ ParagraphList pars;
-
-/// A limited Stack for the undo informations.
-class UndoStack{
-private:
- ///
- typedef list<Undo*> Stakk;
///
- Stakk stakk;
- /// the maximum number of undo steps stored.
- Stakk::size_type limit;
-public:
- ///
- UndoStack();
- ///
- Undo * pop();
- ///
- Undo * top();
- ///
- bool empty() const { return stakk.empty(); }
- ///
- ~UndoStack();
- ///
- void clear();
- ///
- void SetStackLimit(Stakk::size_type l);
- ///
- void push(Undo * undo_arg);
+ Undo(undo_kind kind, int inset_id, int plist_id,
+ int first, int last,
+ int cursor, int cursor_pos,
+ ParagraphList const & par_arg);
+
};
+
#endif