Walls And Holes  1
toolmanager.h
Go to the documentation of this file.
1 #ifndef TOOLMANAGER_H
2 #define TOOLMANAGER_H
3 
4 #include "abstracttool.h"
5 
6 #include <QVector>
7 #include <QMap>
8 #include <QObject>
9 #include <QMouseEvent>
10 #include <QWheelEvent>
11 #include <QSharedPointer>
12 #include <QAction>
13 #include <QToolBar>
14 
28 class ToolManager : public QObject {
29 
30  Q_OBJECT
31 
32 public:
33  ToolManager(QObject *parent = nullptr);
34 
43  QAction *registerTool(AbstractTool *tool, QString name, QIcon icon = QIcon(), QKeySequence ks = QKeySequence());
44 
50  QAction *getAction(QString name);
51 
52 public slots:
59  void activateTool(QString name);
60 
67  void deactivateTool(QString name);
71  QToolBar *contextToolBar();
72 
73 
74  void mousePressEvent(QMouseEvent *event);
75  void mouseReleaseEvent(QMouseEvent *event);
76  void mouseMoveEvent(QMouseEvent *event);
77  void wheelEvent(QWheelEvent *event);
78 
79 signals:
80 
86  void toolWasActivated(AbstractTool *tool, QString name);
87 
88 protected:
89  QMap<QString, AbstractTool *> mTools;
90  QMap<QString, QAction *> mToolActions;
91 
92  QActionGroup *mActionGroup;
93 
95 
96  QToolBar *mContextToolBar;
97 };
98 
99 #endif // TOOLMANAGER_H
void toolWasActivated(AbstractTool *tool, QString name)
Signal emitted when a new tool is activated.
void mouseReleaseEvent(QMouseEvent *event)
Definition: toolmanager.cpp:104
QToolBar * contextToolBar()
Returns the context toolBar of the current active tool.
Definition: toolmanager.cpp:93
QAction * registerTool(AbstractTool *tool, QString name, QIcon icon=QIcon(), QKeySequence ks=QKeySequence())
Registers the tool with the given identifier.
Definition: toolmanager.cpp:14
QToolBar * mContextToolBar
The active tool.
Definition: toolmanager.h:96
QMap< QString, QAction * > mToolActions
A map from tool names to tool objects.
Definition: toolmanager.h:90
ToolManager(QObject *parent=nullptr)
Definition: toolmanager.cpp:7
void wheelEvent(QWheelEvent *event)
Definition: toolmanager.cpp:116
void deactivateTool(QString name)
Deactivates the tool if it is active. NOTE: A ToolManager is exclusive, so activateTool() automatical...
Definition: toolmanager.cpp:76
The AbstractTool class represents a UI tool. A UI tool can be activated or deactivated.
Definition: abstracttool.h:24
void mousePressEvent(QMouseEvent *event)
Definition: toolmanager.cpp:98
QMap< QString, AbstractTool * > mTools
Definition: toolmanager.h:89
QAction * getAction(QString name)
Finds the action associated with the name.
Definition: toolmanager.cpp:47
void activateTool(QString name)
Activates the desired tool.
Definition: toolmanager.cpp:55
void mouseMoveEvent(QMouseEvent *event)
Definition: toolmanager.cpp:110
AbstractTool * mActiveTool
The action group containing all of the ToolManager&#39;s actions.
Definition: toolmanager.h:94
QActionGroup * mActionGroup
The actions associated to each tool. All pointers delete selves when the ToolManager is destructed...
Definition: toolmanager.h:92
The ToolManager class represents a group of mutually exclusive tools out of which only one can be act...
Definition: toolmanager.h:28