File: ActionManager.h

package info (click to toggle)
mygui 3.2.2%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 36,224 kB
  • sloc: cpp: 118,031; ansic: 30,202; xml: 15,544; cs: 12,602; tcl: 776; python: 417; makefile: 34
file content (60 lines) | stat: -rw-r--r-- 994 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/*!
	@file
	@author		Albert Semenov
	@date		07/2012
*/
#ifndef _897c30fe_12de_4067_91d0_a2a336a18f83_
#define _897c30fe_12de_4067_91d0_a2a336a18f83_

#include <list>
#include "Action.h"
#include "sigslot.h"

namespace tools
{
	class ActionManager
	{
	public:
		ActionManager();
		~ActionManager();

		static ActionManager& getInstance();
		static ActionManager* getInstancePtr();

		void initialise();
		void shutdown();

		void doAction(Action* _command);

		void undoAction();
		void redoAction();

		void resetChanges();
		bool getChanges();

		void setMaxActions(size_t _value);
		size_t getMaxActions() const;

		void reset();

		sigslot::signal0<> eventChanges;

	private:
		void clear();

		bool updateMaxActions();
		void removeRedo();

		void onChangeActions();

	private:
		static ActionManager* mInstance;
		typedef std::list<Action*> ListAction;
		ListAction mActions;
		ListAction::iterator mCurrentAction;
		ListAction::iterator mActionAsSave;
		size_t mMaxActions;
	};
}

#endif