source:
molecuilder/src/Actions/Action.cpp@
abd4a1
| Last change on this file since abd4a1 was abd4a1, checked in by , 16 years ago | |
|---|---|
|
|
| File size: 1.2 KB | |
| Rev | Line | |
|---|---|---|
| [d20ed5] | 1 | /* |
| 2 | * Action.cpp | |
| 3 | * | |
| 4 | * Created on: Dec 8, 2009 | |
| 5 | * Author: crueger | |
| 6 | */ | |
| 7 | ||
| [3e8325] | 8 | #include <string> |
| [d20ed5] | 9 | |
| [3e8325] | 10 | #include "Actions/Action.hpp" |
| 11 | #include "Actions/ActionRegistry.hpp" | |
| [8d9984] | 12 | #include "Actions/ActionHistory.hpp" |
| [3e8325] | 13 | |
| 14 | using namespace std; | |
| 15 | ||
| [521e29] | 16 | // An empty state to indicate success |
| 17 | Action::state_ptr Action::success = Action::state_ptr(new ActionState()); | |
| 18 | Action::state_ptr Action::failure = Action::state_ptr(new ActionState()); | |
| [0012e6] | 19 | |
| [3e8325] | 20 | Action::Action(std::string _name,bool _doRegister) : |
| 21 | name(_name) | |
| 22 | { | |
| 23 | if(_doRegister){ | |
| [8a4f12] | 24 | ActionRegistry::getInstance().registerAction(this); |
| [3e8325] | 25 | } |
| 26 | } | |
| [d20ed5] | 27 | |
| 28 | Action::~Action() | |
| [da09909] | 29 | {} |
| [3e8325] | 30 | |
| 31 | const string Action::getName(){ | |
| 32 | return name; | |
| 33 | } | |
| [0012e6] | 34 | |
| 35 | void Action::call(){ | |
| [abd4a1] | 36 | if(!isActive()){ |
| 37 | return; | |
| 38 | } | |
| [0012e6] | 39 | // forward to private virtual |
| [8d9984] | 40 | state_ptr state = performCall(); |
| 41 | if(shouldUndo() && state != failure){ | |
| 42 | if(canUndo()){ | |
| 43 | ActionHistory::getInstance().addElement(this,state); | |
| 44 | } | |
| 45 | else{ | |
| 46 | ActionHistory::getInstance().clear(); | |
| 47 | } | |
| 48 | } | |
| [0012e6] | 49 | } |
| [521e29] | 50 | Action::state_ptr Action::undo(state_ptr _state) { |
| [0012e6] | 51 | // forward to private virtual |
| 52 | return performUndo(_state); | |
| 53 | } | |
| [521e29] | 54 | Action::state_ptr Action::redo(state_ptr _state) { |
| [0012e6] | 55 | // forward to private virtual |
| 56 | return performRedo(_state); | |
| 57 | } | |
| [770138] | 58 | |
| 59 | ||
| 60 | bool Action::isActive(){ | |
| 61 | return true; | |
| 62 | } |
Note:
See TracBrowser
for help on using the repository browser.
