00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef UNDOBUFFER_H
00020 #define UNDOBUFFER_H
00021
00022 #include <qobject.h>
00023 #include <qlist.h>
00024 #include "Undo.h"
00025
00026 class MainWindow;
00027 class GState;
00028
00029
00034 class UndoBuffer
00035 {
00036 public:
00037 UndoBuffer(QObject* );
00038 ~UndoBuffer();
00039
00041 bool isEmpty() { return undolist.isEmpty(); };
00043 void clear() { tidyUp(); undolist.clear(); };
00044 void tidyUp();
00045
00046 void addState(Machine* m, GState* );
00047 void addTransition(GTransition* );
00048 void changeState(GState*, GState*, GITransition*);
00049 void changeTransition(GTransition* );
00050 void changeInitialTransition(GITransition*);
00051 void changeTransitions(QList<GTransition>*);
00052 void moveMultiple(QList<GState>*, QList<GTransition>*, double, double);
00053 void deleteSelection(QList<GState>*, QList<GTransition>*);
00054 void deleteState(GState* );
00055 void deleteTransition(GTransition* );
00056 void setInitialState(GITransition* );
00057 void setEndStates(const QList<GState>& sl);
00058 void changeMachine(Machine* );
00059 void paste(QList<GState>*, QList<GTransition>*, GState* oldistate,
00060 GState* newistate, GITransition* olditrans, GITransition* newitrans,
00061 int oldnumbits, int oldnumin, int oldnumout);
00062
00063 void undo();
00064
00065 void undoAddState(Undo*);
00066 void undoAddTransition(Undo*);
00067 void undoChangeState(Undo*);
00068 void undoChangeTransition(Undo*);
00069 void undoChangeInitialTransition(Undo*);
00070 void undoChangeTransitions(Undo*);
00071 void undoMoveMultiple(Undo*);
00072 void undoDeleteSelection(Undo*);
00073 void undoDeleteState(Undo*);
00074 void undoDeleteTransition(Undo*);
00075 void undoSetInitialState(Undo*);
00076 void undoSetEndStates(Undo*);
00077 void undoChangeMachine(Undo*);
00078 void undoPaste(Undo*);
00079
00080 private:
00082 Project* project;
00084 QList<Undo> undolist;
00085 };
00086
00087 #endif