64 lines
1.3 KiB
C++
64 lines
1.3 KiB
C++
#ifndef MAPTOOL_H
|
|
#define MAPTOOL_H
|
|
|
|
#include <QObject>
|
|
#include <QCursor>
|
|
#include <QMouseEvent>
|
|
#include <QAction>
|
|
|
|
class Mapcavas;
|
|
class QAction;
|
|
|
|
class MapTool : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
enum Flag
|
|
{
|
|
NoFlags = 0,
|
|
Transient = 1 << 1,
|
|
};
|
|
Q_DECLARE_FLAGS(Flags, Flag)
|
|
|
|
MapTool(QObject* parent = nullptr);
|
|
virtual ~MapTool();
|
|
|
|
virtual Flags flags() const { return NoFlags; }
|
|
|
|
QAction* action() const;
|
|
void setAction(QAction* action);
|
|
|
|
void setMapcavas(Mapcavas* canvas);
|
|
Mapcavas* canvas() const;
|
|
|
|
virtual void setCursor(const QCursor& cursor);
|
|
QCursor cursor() const;
|
|
|
|
virtual void activate();
|
|
virtual void deactivate();
|
|
bool isActive() const;
|
|
|
|
virtual void canvasMousePressEvent(QMouseEvent* e);
|
|
virtual void canvasMouseReleaseEvent(QMouseEvent* e);
|
|
virtual void canvasMouseMoveEvent(QMouseEvent* e);
|
|
virtual void canvasMouseDoubleClickEvent(QMouseEvent* e);
|
|
virtual void canvasWheelEvent(QWheelEvent* e);
|
|
|
|
signals:
|
|
void activated();
|
|
void deactivated();
|
|
|
|
protected:
|
|
Mapcavas* m_canvas = nullptr;
|
|
|
|
private:
|
|
QAction* m_action = nullptr;
|
|
QCursor m_cursor;
|
|
bool m_isActive = false;
|
|
};
|
|
|
|
Q_DECLARE_OPERATORS_FOR_FLAGS(MapTool::Flags)
|
|
|
|
#endif // MAPTOOL_H
|