Mapper
0.9.0
API documentation
|
An abstract tool for editing a map. More...
#include <tool.h>
Public Types | |
enum | Type { EditPoint = 1, EditLine = 2, DrawPoint = 3, DrawPath = 4, DrawCircle = 5, DrawRectangle = 6, DrawText = 7, DrawFreehand = 8, Pan = 9, Scribble = 10, Other = 0 } |
Types of tool. More... | |
Public Member Functions | |
MapEditorTool (MapEditorController *editor, Type type, QAction *tool_action=nullptr) | |
Constructs a new MapEditorTool. More... | |
~MapEditorTool () override | |
Destructs the MapEditorTool. More... | |
virtual void | init () |
Performs initialization when the tool becomes active. More... | |
virtual void | deactivate () |
Makes this tool inactive in the editor. More... | |
virtual void | switchToDefaultDrawTool (const Symbol *symbol) const |
Switch to a default draw tool for the given symbol. More... | |
virtual const QCursor & | getCursor () const =0 |
Returns the cursor which should be used for the tool in the editor windows. More... | |
virtual void | draw (QPainter *painter, MapWidget *widget) |
Draws the tool's visualisation for a map widget. More... | |
virtual bool | mousePressEvent (QMouseEvent *event, const MapCoordF &map_coord, MapWidget *widget) |
virtual bool | mouseMoveEvent (QMouseEvent *event, const MapCoordF &map_coord, MapWidget *widget) |
virtual bool | mouseReleaseEvent (QMouseEvent *event, const MapCoordF &map_coord, MapWidget *widget) |
virtual bool | mouseDoubleClickEvent (QMouseEvent *event, const MapCoordF &map_coord, MapWidget *widget) |
virtual void | leaveEvent (QEvent *event) |
virtual bool | keyPressEvent (QKeyEvent *event) |
virtual bool | keyReleaseEvent (QKeyEvent *event) |
virtual void | focusOutEvent (QFocusEvent *event) |
virtual bool | inputMethodEvent (QInputMethodEvent *event) |
virtual QVariant | inputMethodQuery (Qt::InputMethodQuery property, const QVariant &argument) const |
virtual bool | gestureEvent (QGestureEvent *event, MapWidget *widget) |
virtual void | gestureStarted () |
This is called to signal the start of a gesture. More... | |
Type | toolType () const |
Returns the type of this tool. More... | |
QAction * | toolAction () const |
Returns the action which represents this tool. More... | |
bool | usesTouchCursor () const |
Returns whether to use the touch helper cursor for this tool. More... | |
Map * | map () const |
Returns the map being edited. More... | |
MapWidget * | mapWidget () const |
Returns the map widget being operated on. More... | |
MainWindow * | mainWindow () const |
Returns the main window the controller is attached to. More... | |
QWidget * | window () const |
Returns the main window the controller is attached to as a QWidget. More... | |
bool | drawOnRightClickEnabled () const |
Returns true if Mapper is configured to finish drawing on right click. More... | |
bool | editingInProgress () const |
Returns whether an editing operation is currently in progress. More... | |
virtual void | finishEditing () |
Finishes editing if it is currently in progress. More... | |
bool | isDrawTool () const |
Returns true if the given tool is for drawing new objects. More... | |
const PointHandles & | pointHandles () const |
Returns the point handles utility for this tool. More... | |
unsigned int | scaleFactor () const |
The factor by which all drawing shall be scaled. More... | |
qreal | clickTolerance () const |
A value representing how close the user must click or hover to select a point. More... | |
int | startDragDistance () const |
The number of pixels the mouse has to be moved to start dragging. More... | |
Public Member Functions inherited from QObject | |
virtual const QMetaObject * | metaObject () const const |
QObject (QObject *parent) | |
virtual | ~QObject () |
virtual bool | event (QEvent *e) |
virtual bool | eventFilter (QObject *watched, QEvent *event) |
QString | objectName () const const |
void | setObjectName (const QString &name) |
bool | isWidgetType () const const |
bool | isWindowType () const const |
bool | signalsBlocked () const const |
bool | blockSignals (bool block) |
QThread * | thread () const const |
void | moveToThread (QThread *targetThread) |
int | startTimer (int interval, Qt::TimerType timerType) |
int | startTimer (std::chrono::milliseconds time, Qt::TimerType timerType) |
void | killTimer (int id) |
T | findChild (const QString &name, Qt::FindChildOptions options) const const |
QList< T > | findChildren (const QString &name, Qt::FindChildOptions options) const const |
QList< T > | findChildren (const QRegExp ®Exp, Qt::FindChildOptions options) const const |
QList< T > | findChildren (const QRegularExpression &re, Qt::FindChildOptions options) const const |
const QObjectList & | children () const const |
void | setParent (QObject *parent) |
void | installEventFilter (QObject *filterObj) |
void | removeEventFilter (QObject *obj) |
QMetaObject::Connection | connect (const QObject *sender, const char *signal, const char *method, Qt::ConnectionType type) const const |
bool | disconnect (const char *signal, const QObject *receiver, const char *method) const const |
bool | disconnect (const QObject *receiver, const char *method) const const |
void | dumpObjectTree () |
void | dumpObjectInfo () |
void | dumpObjectTree () const const |
void | dumpObjectInfo () const const |
bool | setProperty (const char *name, const QVariant &value) |
QVariant | property (const char *name) const const |
QList< QByteArray > | dynamicPropertyNames () const const |
void | destroyed (QObject *obj) |
void | objectNameChanged (const QString &objectName) |
QObject * | parent () const const |
bool | inherits (const char *className) const const |
void | deleteLater () |
Q_DISABLE_COPY (Class) | |
Q_DISABLE_MOVE (Class) | |
Q_DISABLE_COPY_MOVE (Class) | |
T | qobject_cast (QObject *object) |
T | qobject_cast (const QObject *object) |
T | qFindChild (const QObject *obj, const QString &name) |
QList< T > | qFindChildren (const QObject *obj, const QString &name) |
QList< T > | qFindChildren (const QObject *obj, const QRegExp ®Exp) |
Q_CLASSINFO (Name, Value) | |
Q_INTERFACES (...) | |
Q_PROPERTY (...) | |
Q_ENUMS (...) | |
Q_FLAGS (...) | |
Q_ENUM (...) | |
Q_FLAG (...) | |
Q_ENUM_NS (...) | |
Q_FLAG_NS (...) | |
Q_OBJECT Q_OBJECT | |
Q_GADGET Q_GADGET | |
Q_NAMESPACE Q_NAMESPACE | |
Q_SIGNALS Q_SIGNALS | |
Q_SIGNAL Q_SIGNAL | |
Q_SLOTS Q_SLOTS | |
Q_SLOT Q_SLOT | |
Q_EMIT Q_EMIT | |
Q_INVOKABLE Q_INVOKABLE | |
Q_REVISION Q_REVISION | |
Q_SET_OBJECT_NAME (Object) | |
QT_NO_NARROWING_CONVERSIONS_IN_CONNECT QT_NO_NARROWING_CONVERSIONS_IN_CONNECT | |
Static Public Attributes | |
static const QRgb | inactive_color = qRgb(0, 0, 255) |
Color for normal (not active) elements. More... | |
static const QRgb | active_color = qRgb(255, 150, 0) |
Color for active elements (which are hovered over by the cursor) More... | |
static const QRgb | selection_color = qRgb(210, 0, 229) |
Color for selected elements. More... | |
Protected Member Functions | |
void | useTouchCursor (bool enabled) |
Sets the flag which indicates whether the touch cursor shall be used. More... | |
void | setEditingInProgress (bool state) |
Sets a flag which indicates an active editing operation. More... | |
void | setStatusBarText (const QString &text) |
Sends text to the window's status bar. More... | |
void | drawSelectionBox (QPainter *painter, MapWidget *widget, const MapCoordF &corner1, const MapCoordF &corner2) const |
Draws a selection box for the given corner points. More... | |
MapCoordVector::size_type | findHoverPoint (const QPointF &cursor, const MapWidget *widget, const Object *object, bool include_curve_handles, MapCoordF *out_handle_pos=nullptr) const |
Finds and returns the point of the given object over which the cursor hovers. More... | |
bool | containsDrawingButtons (Qt::MouseButtons buttons) const |
Checks if the given buttons contain one which controls drawing. More... | |
bool | isDrawingButton (Qt::MouseButton button) const |
Checks if the given event was triggered by press or release of a mouse button for drawing. More... | |
Protected Member Functions inherited from QObject | |
QObject * | sender () const const |
int | senderSignalIndex () const const |
int | receivers (const char *signal) const const |
bool | isSignalConnected (const QMetaMethod &signal) const const |
virtual void | timerEvent (QTimerEvent *event) |
virtual void | childEvent (QChildEvent *event) |
virtual void | customEvent (QEvent *event) |
virtual void | connectNotify (const QMetaMethod &signal) |
virtual void | disconnectNotify (const QMetaMethod &signal) |
Static Protected Member Functions | |
static QCursor | scaledToScreen (const QCursor &unscaled_cursor) |
Returns a cursor which is scaled to the screen's resolution. More... | |
Protected Attributes | |
MapEditorController *const | editor |
The map editor which uses this tool. More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from QObject | |
QString | tr (const char *sourceText, const char *disambiguation, int n) |
QString | trUtf8 (const char *sourceText, const char *disambiguation, int n) |
QMetaObject::Connection | connect (const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type) |
QMetaObject::Connection | connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type) |
QMetaObject::Connection | connect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type) |
QMetaObject::Connection | connect (const QObject *sender, PointerToMemberFunction signal, Functor functor) |
QMetaObject::Connection | connect (const QObject *sender, PointerToMemberFunction signal, const QObject *context, Functor functor, Qt::ConnectionType type) |
bool | disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *method) |
bool | disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method) |
bool | disconnect (const QMetaObject::Connection &connection) |
bool | disconnect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method) |
Public Attributes inherited from QObject | |
typedef | QObjectList |
Properties inherited from QObject | |
objectName | |
An abstract tool for editing a map.
A map editor tool uses mouse and key input to modify a map.
The given tool_button is unchecked when the tool is destroyed.
When deriving from MapEditorTool, do not make changes on the map editor or window (e.g. status bar text) in the constructor. Another tool might still be active at that point in time! Instead, reimplement the init() method.
This class provides a general but cumbersome interface. If you want to write a simple tool and can live with some limitations, consider using MapEditorToolBase instead.
OpenOrienteering::MapEditorTool::MapEditorTool | ( | MapEditorController * | editor, |
Type | type, | ||
QAction * | tool_action = nullptr |
||
) |
Constructs a new MapEditorTool.
editor | The MapEditorController in which the tool is used. |
type | The type of the tool. It is safe to use Other if it is not necessary to query for this type somewhere. |
tool_action | Optional button which will be unchecked on destruction of this tool. |
|
override |
Destructs the MapEditorTool.
|
inline |
A value representing how close the user must click or hover to select a point.
|
protected |
Checks if the given buttons contain one which controls drawing.
To be used for mouse move events.
|
virtual |
Makes this tool inactive in the editor.
Remplementations shall call parent implementations.
This implementation will always schedule the tool's deletion. But marking the tool's action as not checked is left to the destructor
Draws the tool's visualisation for a map widget.
All dynamic drawing must be done here using the given painter. Drawing is only possible in the area specified by calling map->setDrawingBoundingBox().
Reimplemented in OpenOrienteering::TemplateAdjustAddTool, OpenOrienteering::TemplateAdjustEditTool, OpenOrienteering::MapEditorToolBase, OpenOrienteering::PrintTool, OpenOrienteering::PaintOnTemplateTool, OpenOrienteering::CutHoleTool, OpenOrienteering::DrawPathTool, OpenOrienteering::DrawRectangleTool, OpenOrienteering::DrawFreehandTool, and OpenOrienteering::DrawCircleTool.
|
inline |
Returns true if Mapper is configured to finish drawing on right click.
|
protected |
Draws a selection box for the given corner points.
A selection box is drawn while selecting objects by dragging.
|
inline |
Returns whether an editing operation is currently in progress.
Some editing operation, such as drawing a path, need several user inputs over some period of time. This flag indicates that such an operation is currently active, limiting the number of other actions which may be triggered in this time.
|
protected |
Finds and returns the point of the given object over which the cursor hovers.
Returns no_point if not hovering over a point.
|
virtual |
Finishes editing if it is currently in progress.
Deriving functions shall call this class' implementation (which calls setEditingInProgress(false)).
Reimplemented in OpenOrienteering::MapEditorToolBase, OpenOrienteering::EditPointTool, OpenOrienteering::CutoutTool, OpenOrienteering::DrawTextTool, OpenOrienteering::CutHoleTool, and OpenOrienteering::DrawLineAndAreaTool.
|
virtual |
Reimplemented in OpenOrienteering::EditPointTool, OpenOrienteering::CutTool, and OpenOrienteering::CutHoleTool.
|
virtual |
|
virtual |
This is called to signal the start of a gesture.
Tools may reimplement this if they want to cancel ongoing interactions such as dragging.
Reimplemented in OpenOrienteering::MapEditorToolBase.
|
pure virtual |
Returns the cursor which should be used for the tool in the editor windows.
Implemented in OpenOrienteering::GeoreferencingTool, OpenOrienteering::TemplateAdjustDeleteTool, OpenOrienteering::TemplateAdjustMoveTool, OpenOrienteering::PointSymbolEditorTool, OpenOrienteering::TemplateAdjustAddTool, OpenOrienteering::MapEditorToolBase, OpenOrienteering::PaintOnTemplateTool, OpenOrienteering::DrawPathTool, OpenOrienteering::PrintTool, OpenOrienteering::CutHoleTool, OpenOrienteering::DrawRectangleTool, OpenOrienteering::DrawFreehandTool, OpenOrienteering::DrawCircleTool, and OpenOrienteering::TemplateMoveTool.
|
virtual |
Performs initialization when the tool becomes active.
This method is called by the map editor when the tool shall become active. Reimplementations may make changes to the map editor or window (e.g. set status bar text) which are not allowed in the constructor.
Note that this method by call several times, without any deinitialization in between.
Reimplementations shall call parent implementations.
The implementation in this class marks the tool's action as checked.
Reimplemented in OpenOrienteering::GeoreferencingTool, OpenOrienteering::TemplateAdjustDeleteTool, OpenOrienteering::TemplateAdjustMoveTool, OpenOrienteering::PointSymbolEditorTool, OpenOrienteering::TemplateAdjustAddTool, OpenOrienteering::MapEditorToolBase, OpenOrienteering::PaintOnTemplateTool, OpenOrienteering::DrawPathTool, OpenOrienteering::CutHoleTool, OpenOrienteering::PrintTool, OpenOrienteering::DrawRectangleTool, OpenOrienteering::DrawFreehandTool, OpenOrienteering::DrawCircleTool, and OpenOrienteering::TemplateMoveTool.
|
virtual |
Reimplemented in OpenOrienteering::EditPointTool, and OpenOrienteering::DrawTextTool.
|
virtual |
Reimplemented in OpenOrienteering::EditPointTool, and OpenOrienteering::DrawTextTool.
|
protected |
Checks if the given event was triggered by press or release of a mouse button for drawing.
To be used for press and release events.
bool OpenOrienteering::MapEditorTool::isDrawTool | ( | ) | const |
Returns true if the given tool is for drawing new objects.
Reimplemented in OpenOrienteering::TemplateAdjustAddTool, OpenOrienteering::MapEditorToolBase, OpenOrienteering::CutHoleTool, OpenOrienteering::DrawPathTool, OpenOrienteering::DrawRectangleTool, OpenOrienteering::DrawFreehandTool, OpenOrienteering::ScaleTool, OpenOrienteering::DrawCircleTool, and OpenOrienteering::RotatePatternTool.
|
virtual |
MainWindow * OpenOrienteering::MapEditorTool::mainWindow | ( | ) | const |
Returns the main window the controller is attached to.
Map * OpenOrienteering::MapEditorTool::map | ( | ) | const |
Returns the map being edited.
MapWidget * OpenOrienteering::MapEditorTool::mapWidget | ( | ) | const |
Returns the map widget being operated on.
|
virtual |
|
virtual |
Reimplemented in OpenOrienteering::TemplateAdjustDeleteTool, OpenOrienteering::TemplateAdjustMoveTool, OpenOrienteering::TemplateAdjustAddTool, OpenOrienteering::MapEditorToolBase, OpenOrienteering::EditPointTool, OpenOrienteering::PaintOnTemplateTool, OpenOrienteering::CutTool, OpenOrienteering::DrawTextTool, OpenOrienteering::PrintTool, OpenOrienteering::CutHoleTool, OpenOrienteering::DrawPathTool, OpenOrienteering::DrawRectangleTool, OpenOrienteering::DrawFreehandTool, OpenOrienteering::EditLineTool, OpenOrienteering::DrawCircleTool, and OpenOrienteering::TemplateMoveTool.
|
virtual |
Reimplemented in OpenOrienteering::GeoreferencingTool, OpenOrienteering::TemplateAdjustDeleteTool, OpenOrienteering::TemplateAdjustMoveTool, OpenOrienteering::PointSymbolEditorTool, OpenOrienteering::TemplateAdjustAddTool, OpenOrienteering::MapEditorToolBase, OpenOrienteering::EditPointTool, OpenOrienteering::PaintOnTemplateTool, OpenOrienteering::CutTool, OpenOrienteering::DrawTextTool, OpenOrienteering::PrintTool, OpenOrienteering::CutHoleTool, OpenOrienteering::DrawPathTool, OpenOrienteering::DrawRectangleTool, OpenOrienteering::DrawFreehandTool, OpenOrienteering::EditLineTool, OpenOrienteering::DrawCircleTool, and OpenOrienteering::TemplateMoveTool.
|
virtual |
Reimplemented in OpenOrienteering::GeoreferencingTool, OpenOrienteering::TemplateAdjustMoveTool, OpenOrienteering::MapEditorToolBase, OpenOrienteering::EditPointTool, OpenOrienteering::PaintOnTemplateTool, OpenOrienteering::CutTool, OpenOrienteering::DrawTextTool, OpenOrienteering::PrintTool, OpenOrienteering::CutHoleTool, OpenOrienteering::DrawPathTool, OpenOrienteering::DrawRectangleTool, OpenOrienteering::DrawFreehandTool, OpenOrienteering::EditLineTool, OpenOrienteering::DrawCircleTool, and OpenOrienteering::TemplateMoveTool.
|
inline |
Returns the point handles utility for this tool.
|
staticprotected |
Returns a cursor which is scaled to the screen's resolution.
Return standard cursor shapes unchanged, but scales pixmap cursors from (default) 96 dpi to the screen's physical dpi (according to the settings) if the difference is significant.
|
inline |
The factor by which all drawing shall be scaled.
|
protected |
Sets a flag which indicates an active editing operation.
This function takes care of informing the MapEditorController about the change.
|
protected |
Sends text to the window's status bar.
|
inline |
The number of pixels the mouse has to be moved to start dragging.
|
virtual |
Switch to a default draw tool for the given symbol.
Makes this tool inactive and schedules its deletion.
|
inline |
Returns the action which represents this tool.
|
inline |
Returns the type of this tool.
|
inline |
Returns whether to use the touch helper cursor for this tool.
|
protected |
Sets the flag which indicates whether the touch cursor shall be used.
QWidget * OpenOrienteering::MapEditorTool::window | ( | ) | const |
Returns the main window the controller is attached to as a QWidget.
This function can be used without the need to include main_window.h.
|
static |
Color for active elements (which are hovered over by the cursor)
|
protected |
The map editor which uses this tool.
|
static |
Color for normal (not active) elements.
|
static |
Color for selected elements.