1 #pragma once |
|
2 #include <QMouseEvent> |
|
3 #include "../main.h" |
|
4 #include "../ui/canvas.h" |
|
5 |
|
6 class Document; |
|
7 |
|
8 class BaseTool : public QObject |
|
9 { |
|
10 Q_OBJECT |
|
11 |
|
12 public: |
|
13 BaseTool(Document* document); |
|
14 |
|
15 virtual QString name() const = 0; |
|
16 virtual QString toolTip() const = 0; |
|
17 virtual bool mouseClick(Canvas*, QMouseEvent*) { return false; } |
|
18 virtual bool mouseDoubleClicked(QMouseEvent*, QMouseEvent*) { return false; } |
|
19 virtual bool mouseMove(Document*, Canvas*, QMouseEvent*) { return false; } |
|
20 virtual bool keyReleased(Document*, Canvas*, QKeyEvent*) { return false; } |
|
21 virtual QWidget* toolWidget() { return nullptr; } |
|
22 virtual void selectionChanged(const QSet<ldraw::id_t>&) {} |
|
23 virtual void reset() {} |
|
24 virtual void overpaint(Canvas*, QPainter*) const {} |
|
25 virtual QString iconName() const; |
|
26 Q_SIGNALS: |
|
27 void desiredGridChange(const glm::mat4& matrix); |
|
28 protected: |
|
29 QWidget* const parentWidget; |
|
30 Document* const document; |
|
31 }; |
|
32 |
|