source:
src/Actions/ActionHistory.hpp@
3c9ac3
Last change on this file since 3c9ac3 was 6367dd, checked in by , 11 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.