source:
src/Actions/ActionHistory.hpp@
e59735
| Last change on this file since e59735 was 6367dd, checked in by , 12 years ago | |
|---|---|
|
|
| File size: 1.2 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 | ||
| [b5b01e] | 45 | void addElement(Action*,ActionState::ptr); |
| [d56640] | 46 | void clear(); |
| [6367dd] | 47 | |
| [d56640] | 48 | private: |
| 49 | std::deque<HistoryElement> history; | |
| 50 | std::deque<HistoryElement> yrotsih; | |
| 51 | ||
| 52 | public: | |
| 53 | // when constructing the actions we need the Actionregistry Singleton | |
| 54 | // Singletons need static variables to work, but we cannot access statics | |
| 55 | // inside a static initialization, so we have this init function that | |
| 56 | // needs to be called at a non-static point at the start of the program | |
| [6367dd] | 57 | // static void init(); |
| [d56640] | 58 | }; |
| 59 | ||
| [ce7fdc] | 60 | } |
| 61 | ||
| [d56640] | 62 | #endif /* ACTIONHISTORY_HPP_ */ |
Note:
See TracBrowser
for help on using the repository browser.
