source:
src/Actions/ActionHistory.hpp@
0ec9f5
| Last change on this file since 0ec9f5 was 0ec9f5, checked in by , 5 years ago | |
|---|---|
|
|
| File size: 1.3 KB | |
| Rev | Line | |
|---|---|---|
| [d56640] | 1 | /* |
| 2 | * ActionHistory.hpp | |
| 3 | * | |
| 4 | * Created on: Mar 25, 2010 | |
| 5 | * Author: crueger | |
| 6 | */ | |
| 7 | ||
| 8 | #ifndef ACTIONHISTORY_HPP_ | |
| 9 | #define ACTIONHISTORY_HPP_ | |
| 10 | ||
| [56f73b] | 11 | // include config.h |
| 12 | #ifdef HAVE_CONFIG_H | |
| 13 | #include <config.h> | |
| 14 | #endif | |
| 15 | ||
| [d56640] | 16 | #include <deque> |
| 17 | ||
| 18 | #include "Actions/Action.hpp" | |
| [e4afb4] | 19 | #include "Actions/RedoAction.hpp" |
| 20 | #include "Actions/UndoAction.hpp" | |
| [d56640] | 21 | |
| [ce7fdc] | 22 | namespace MoleCuilder { |
| [d56640] | 23 | |
| [6367dd] | 24 | class ActionHistory |
| [d56640] | 25 | { |
| 26 | struct HistoryElement { | |
| [b5b01e] | 27 | HistoryElement(Action *_action, ActionState::ptr _state) : |
| [d56640] | 28 | action(_action), |
| 29 | state(_state) | |
| 30 | {} | |
| 31 | Action *action; | |
| [b5b01e] | 32 | ActionState::ptr state; |
| [d56640] | 33 | }; |
| 34 | ||
| 35 | public: | |
| [6367dd] | 36 | ActionHistory(); |
| 37 | ~ActionHistory(); | |
| [d56640] | 38 | |
| 39 | void undoLast(); | |
| 40 | void redoLast(); | |
| 41 | ||
| [f9352d] | 42 | bool hasUndo(); |
| 43 | bool hasRedo(); | |
| 44 | ||
| [0ec9f5] | 45 | void setMark(); |
| 46 | void unsetMark(); | |
| 47 | void undoTillMark(); | |
| 48 | ||
| [b5b01e] | 49 | void addElement(Action*,ActionState::ptr); |
| [d56640] | 50 | void clear(); |
| [6367dd] | 51 | |
| [d56640] | 52 | private: |
| 53 | std::deque<HistoryElement> history; | |
| 54 | std::deque<HistoryElement> yrotsih; | |
| 55 | ||
| [0ec9f5] | 56 | //!> marks a specific state in the history to allow undoing directly till that |
| 57 | HistoryElement * mark; | |
| 58 | ||
| [d56640] | 59 | public: |
| 60 | // when constructing the actions we need the Actionregistry Singleton | |
| 61 | // Singletons need static variables to work, but we cannot access statics | |
| 62 | // inside a static initialization, so we have this init function that | |
| 63 | // needs to be called at a non-static point at the start of the program | |
| [6367dd] | 64 | // static void init(); |
| [d56640] | 65 | }; |
| 66 | ||
| [ce7fdc] | 67 | } |
| 68 | ||
| [d56640] | 69 | #endif /* ACTIONHISTORY_HPP_ */ |
Note:
See TracBrowser
for help on using the repository browser.
