Changes in src/Actions/Action.hpp [bfce50:f9352d]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Actions/Action.hpp
rbfce50 rf9352d 10 10 11 11 #include <string> 12 #include <boost/shared_ptr.hpp> 13 14 // forward declaration 15 16 class ActionState; 17 class ActionSequence; 12 18 13 19 /** … … 21 27 class Action 22 28 { 23 protected: 29 friend class ActionSequence; 24 30 public: 31 32 typedef boost::shared_ptr<ActionState> state_ptr; 33 25 34 Action(std::string _name,bool _doRegister=true); 26 35 virtual ~Action(); 27 36 28 virtual void call()=0; 29 virtual void undo()=0; 37 // this method only handles the infrastructure 38 // actuall action is passed on to a private virtual 39 void call(); 40 state_ptr undo(state_ptr); 41 state_ptr redo(state_ptr); 42 30 43 virtual bool canUndo()=0; 31 //virtual bool shouldUndo()=0; 44 virtual bool shouldUndo()=0; 45 46 virtual bool isActive(); 32 47 33 48 virtual const std::string getName(); 34 49 50 protected: 51 static state_ptr success; 52 static state_ptr failure; 53 35 54 private: 55 virtual state_ptr performCall()=0; 56 virtual state_ptr performUndo(state_ptr)=0; 57 virtual state_ptr performRedo(state_ptr)=0; 58 36 59 std::string name; 37 60 }; 38 61 62 /** 63 * This class can be used by actions to save the state. 64 * 65 * It is implementing a memento pattern. The base class is completely empty, 66 * since no general state internals can be given. The Action performing 67 * the Undo should downcast to the apropriate type. 68 */ 69 class ActionState{ 70 public: 71 ActionState(){} 72 virtual ~ActionState(){} 73 }; 74 39 75 #endif /* ACTION_H_ */
Note:
See TracChangeset
for help on using the changeset viewer.