Mapper  0.9.0
API documentation
Classes | Public Member Functions | Protected Slots | Protected Member Functions | Protected Attributes | List of all members
OpenOrienteering::MapEditorToolBase Class Referenceabstract

Provides a simple interface to base tools on. More...

#include <tool_base.h>

Inheritance diagram for OpenOrienteering::MapEditorToolBase:
Inheritance graph
[legend]
Collaboration diagram for OpenOrienteering::MapEditorToolBase:
Collaboration graph
[legend]

Classes

class  ObjectsRange
 An accessor to the active objects in a std::vector<EditedItem>. More...
 

Public Member Functions

 MapEditorToolBase (const QCursor &cursor, MapEditorTool::Type type, MapEditorController *editor, QAction *tool_action)
 
 ~MapEditorToolBase () override
 
void init () override
 Performs initialization when the tool becomes active. More...
 
const QCursorgetCursor () const override
 Returns the cursor which should be used for the tool in the editor windows. More...
 
void mousePositionEvent (QMouseEvent *event, const MapCoordF &map_coord, MapWidget *widget)
 Updates the saved current position (raw and constrained), map widget, and modifiers. More...
 
bool mousePressEvent (QMouseEvent *event, const MapCoordF &map_coord, MapWidget *widget) override
 
bool mouseMoveEvent (QMouseEvent *event, const MapCoordF &map_coord, MapWidget *widget) override
 
bool mouseReleaseEvent (QMouseEvent *event, const MapCoordF &map_coord, MapWidget *widget) override
 
bool keyPressEvent (QKeyEvent *event) override
 
bool keyReleaseEvent (QKeyEvent *event) override
 
void draw (QPainter *painter, MapWidget *widget) override
 Draws the preview renderables. Should be overridden to draw custom elements. More...
 
void finishEditing () override
 Finishes editing if it is currently in progress. More...
 
- Public Member Functions inherited from OpenOrienteering::MapEditorTool
 MapEditorTool (MapEditorController *editor, Type type, QAction *tool_action=nullptr)
 Constructs a new MapEditorTool. More...
 
 ~MapEditorTool () override
 Destructs the MapEditorTool. 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 bool mouseDoubleClickEvent (QMouseEvent *event, const MapCoordF &map_coord, MapWidget *widget)
 
virtual void leaveEvent (QEvent *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)
 
Type toolType () const
 Returns the type of this tool. More...
 
QActiontoolAction () const
 Returns the action which represents this tool. More...
 
bool usesTouchCursor () const
 Returns whether to use the touch helper cursor for this tool. More...
 
Mapmap () const
 Returns the map being edited. More...
 
MapWidgetmapWidget () const
 Returns the map widget being operated on. More...
 
MainWindowmainWindow () const
 Returns the main window the controller is attached to. More...
 
QWidgetwindow () 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...
 
bool isDrawTool () const
 Returns true if the given tool is for drawing new objects. More...
 
const PointHandlespointHandles () 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 QMetaObjectmetaObject () 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)
 
QThreadthread () 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)
 
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 &regExp, Qt::FindChildOptions options) const const
 
QList< T > findChildren (const QRegularExpression &re, Qt::FindChildOptions options) const const
 
const QObjectListchildren () 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< QByteArraydynamicPropertyNames () const const
 
void destroyed (QObject *obj)
 
void objectNameChanged (const QString &objectName)
 
QObjectparent () const const
 
bool inherits (const char *className) const const
 
void deleteLater ()
 
 Q_DISABLE_COPY (Class)
 
 Q_DISABLE_MOVE (Class)
 
 Q_DISABLE_COPY_MOVE (Class)
 
qobject_cast (QObject *object)
 
qobject_cast (const QObject *object)
 
qFindChild (const QObject *obj, const QString &name)
 
QList< T > qFindChildren (const QObject *obj, const QString &name)
 
QList< T > qFindChildren (const QObject *obj, const QRegExp &regExp)
 
 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
 

Protected Slots

void updateDirtyRect ()
 
void objectSelectionChanged ()
 
void updatePreviewObjectsSlot ()
 

Protected Member Functions

virtual void initImpl ()
 Can do additional initializations at a time where no other tool is active (in contrast to the constructor) More...
 
virtual int updateDirtyRectImpl (QRectF &rect)
 Must include the area of all custom drawings into the rect, which already contains the area of the selection preview and activated tool helpers when this method is called. More...
 
virtual void drawImpl (QPainter *painter, MapWidget *widget)
 Must draw the tool's graphics. More...
 
virtual void updateStatusText ()=0
 Must update the status bar text. More...
 
virtual void objectSelectionChangedImpl ()=0
 Called when the object selection in the map is changed. More...
 
virtual void clickPress ()
 Called when the left mouse button is pressed. More...
 
virtual void clickRelease ()
 Called when the left mouse button is released without a drag operation before. More...
 
virtual void mouseMove ()
 Called when the mouse is moved without the left mouse button being pressed. More...
 
void gestureStarted () override
 This is called to signal the start of a gesture. More...
 
void startDragging ()
 
void updateDragging ()
 
void finishDragging ()
 
void cancelDragging ()
 
bool isDragging () const
 Is the left mouse button pressed and has a drag move been started (by moving the mouse a minimum amount of pixels)? More...
 
virtual void dragStart ()
 Called when a drag operation is started. More...
 
virtual void dragMove ()
 Called when the mouse is moved with the left mouse button being pressed. More...
 
virtual void dragFinish ()
 Called when a drag operation is finished. More...
 
virtual void dragCanceled ()
 
virtual bool keyPress (QKeyEvent *event)
 Called when a key is pressed down. Return true if the key was processed by the tool. More...
 
virtual bool keyRelease (QKeyEvent *event)
 Called when a key is released. Return true if the key was processed by the tool. More...
 
void reapplyConstraintHelpers ()
 Applies the constraint helpers and generates a pointer event. More...
 
void startEditing ()
 Call this before editing the selected objects, and finish/abortEditing() afterwards. More...
 
void startEditing (Object *object)
 
void startEditing (const std::set< Object *> &objects)
 
void abortEditing ()
 
ObjectsRange editedObjects ()
 
bool editedObjectsModified () const
 
void resetEditedObjects ()
 
virtual void updatePreviewObjects ()
 Call this to display changes to the preview objects between startEditing() and finish/abortEditing(). More...
 
void updatePreviewObjectsAsynchronously ()
 Call this to display changes to the preview objects between startEditing() and finish/abortEditing(). More...
 
void drawSelectionOrPreviewObjects (QPainter *painter, MapWidget *widget, bool draw_opaque=false)
 If the tool created custom renderables (e.g. More...
 
void activateAngleHelperWhileEditing (bool enable=true)
 Activates or deactivates the angle helper, recalculates (un-)constrained cursor position, and calls mouseMove() or dragMove() to update the tool. More...
 
void activateSnapHelperWhileEditing (bool enable=true)
 Activates or deactivates the snap helper, recalculates (un-)constrained cursor position, and calls mouseMove() or dragMove() to update the tool. More...
 
void updateConstrainedPositions ()
 Calculates the constrained cursor position for the current position and map widget. More...
 
- Protected Member Functions inherited from OpenOrienteering::MapEditorTool
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
QObjectsender () 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)
 

Protected Attributes

QPoint click_pos
 Position where the left mouse button was pressed, with no constraints applied. More...
 
MapCoordF click_pos_map
 
QPointF constrained_click_pos
 Position where the left mouse button was pressed, constrained by tool helpers, if active. More...
 
MapCoordF constrained_click_pos_map
 
QPoint cur_pos
 Position where the cursor is currently. More...
 
MapCoordF cur_pos_map
 
QPointF constrained_pos
 Position where the cursor is currently, constrained by tool helpers, if active. More...
 
MapCoordF constrained_pos_map
 
bool snapped_to_pos
 This is set to true when constrained_pos(_map) is a snapped position. More...
 
int effective_start_drag_distance
 The amount of pixels the mouse has to be moved to start dragging. More...
 
std::unique_ptr< ConstrainAngleToolHelperangle_helper
 Angle tool helper. If activated, it is included in the dirty rect and drawn automatically. More...
 
std::unique_ptr< SnappingToolHelpersnap_helper
 Snapping tool helper. If a non-null filter is set, it is included in the dirty rect and drawn automatically. More...
 
Objectsnap_exclude_object = nullptr
 An object to exclude from snapping, or nullptr to snap to all objects. More...
 
Qt::KeyboardModifiers active_modifiers
 Bitmask containing active modifiers. More...
 
MapWidgetcur_map_widget
 The map widget in which the tool was last used. More...
 
QPointer< KeyButtonBarkey_button_bar
 Must be set by derived classes if a key button bar is used. More...
 
- Protected Attributes inherited from OpenOrienteering::MapEditorTool
MapEditorController *const editor
 The map editor which uses this tool. More...
 

Additional Inherited Members

- Public Types inherited from OpenOrienteering::MapEditorTool
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...
 
- 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
 
- Static Public Attributes inherited from OpenOrienteering::MapEditorTool
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...
 
- Static Protected Member Functions inherited from OpenOrienteering::MapEditorTool
static QCursor scaledToScreen (const QCursor &unscaled_cursor)
 Returns a cursor which is scaled to the screen's resolution. More...
 
- Properties inherited from QObject
 objectName
 

Detailed Description

Provides a simple interface to base tools on.

Look at the top of the protected section for the methods to override, and below that for some helper methods.

Constructor & Destructor Documentation

◆ MapEditorToolBase()

OpenOrienteering::MapEditorToolBase::MapEditorToolBase ( const QCursor cursor,
MapEditorTool::Type  type,
MapEditorController editor,
QAction tool_action 
)

◆ ~MapEditorToolBase()

OpenOrienteering::MapEditorToolBase::~MapEditorToolBase ( )
override

Member Function Documentation

◆ abortEditing()

void OpenOrienteering::MapEditorToolBase::abortEditing ( )
protected

◆ activateAngleHelperWhileEditing()

void OpenOrienteering::MapEditorToolBase::activateAngleHelperWhileEditing ( bool  enable = true)
protected

Activates or deactivates the angle helper, recalculates (un-)constrained cursor position, and calls mouseMove() or dragMove() to update the tool.

◆ activateSnapHelperWhileEditing()

void OpenOrienteering::MapEditorToolBase::activateSnapHelperWhileEditing ( bool  enable = true)
protected

Activates or deactivates the snap helper, recalculates (un-)constrained cursor position, and calls mouseMove() or dragMove() to update the tool.

◆ cancelDragging()

void OpenOrienteering::MapEditorToolBase::cancelDragging ( )
protected

◆ clickPress()

void OpenOrienteering::MapEditorToolBase::clickPress ( )
protectedvirtual

◆ clickRelease()

void OpenOrienteering::MapEditorToolBase::clickRelease ( )
protectedvirtual

◆ dragCanceled()

void OpenOrienteering::MapEditorToolBase::dragCanceled ( )
protectedvirtual

◆ dragFinish()

void OpenOrienteering::MapEditorToolBase::dragFinish ( )
protectedvirtual

Called when a drag operation is finished.

There is no need to update the edit operation with the current cursor coordinates in this call as it is ensured that dragMove() is called before.

Reimplemented in OpenOrienteering::CutoutTool, OpenOrienteering::DrawPointTool, OpenOrienteering::CutTool, OpenOrienteering::DrawTextTool, OpenOrienteering::EditPointTool, OpenOrienteering::EditLineTool, OpenOrienteering::RotateTool, OpenOrienteering::ScaleTool, OpenOrienteering::RotatePatternTool, and OpenOrienteering::PanTool.

◆ dragMove()

void OpenOrienteering::MapEditorToolBase::dragMove ( )
protectedvirtual

◆ dragStart()

void OpenOrienteering::MapEditorToolBase::dragStart ( )
protectedvirtual

Called when a drag operation is started.

This happens when dragging the mouse some pixels away from the mouse press position. The distance is determined by start_drag_distance. dragMove() is called immediately after this call to account for the already moved distance.

Reimplemented in OpenOrienteering::CutoutTool, OpenOrienteering::DrawPointTool, OpenOrienteering::CutTool, OpenOrienteering::EditPointTool, OpenOrienteering::EditLineTool, OpenOrienteering::RotateTool, OpenOrienteering::ScaleTool, OpenOrienteering::RotatePatternTool, and OpenOrienteering::PanTool.

◆ draw()

void OpenOrienteering::MapEditorToolBase::draw ( QPainter painter,
MapWidget widget 
)
overridevirtual

Draws the preview renderables. Should be overridden to draw custom elements.

Reimplemented from OpenOrienteering::MapEditorTool.

◆ drawImpl()

void OpenOrienteering::MapEditorToolBase::drawImpl ( QPainter painter,
MapWidget widget 
)
protectedvirtual

Must draw the tool's graphics.

The implementation draws the preview renderables. MapEditorToolBase::draw() draws the activated tool helpers afterwards. If this is not desired, you can override draw() directly.

Reimplemented in OpenOrienteering::CutTool, OpenOrienteering::EditPointTool, OpenOrienteering::DrawTextTool, OpenOrienteering::DrawPointTool, OpenOrienteering::EditLineTool, OpenOrienteering::CutoutTool, OpenOrienteering::DrawPointGPSTool, OpenOrienteering::RotateTool, OpenOrienteering::ScaleTool, and OpenOrienteering::RotatePatternTool.

◆ drawSelectionOrPreviewObjects()

void OpenOrienteering::MapEditorToolBase::drawSelectionOrPreviewObjects ( QPainter painter,
MapWidget widget,
bool  draw_opaque = false 
)
protected

If the tool created custom renderables (e.g.

with updatePreviewObjects()), draws the preview renderables, else draws the renderables of the selected map objects.

◆ editedObjects()

ObjectsRange OpenOrienteering::MapEditorToolBase::editedObjects ( )
inlineprotected

◆ editedObjectsModified()

bool OpenOrienteering::MapEditorToolBase::editedObjectsModified ( ) const
protected

◆ finishDragging()

void OpenOrienteering::MapEditorToolBase::finishDragging ( )
protected

◆ finishEditing()

void OpenOrienteering::MapEditorToolBase::finishEditing ( )
overridevirtual

Finishes editing if it is currently in progress.

Deriving functions shall call this class' implementation (which calls setEditingInProgress(false)).

Reimplemented from OpenOrienteering::MapEditorTool.

◆ gestureStarted()

void OpenOrienteering::MapEditorToolBase::gestureStarted ( )
overrideprotectedvirtual

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 from OpenOrienteering::MapEditorTool.

◆ getCursor()

const QCursor & OpenOrienteering::MapEditorToolBase::getCursor ( ) const
overridevirtual

Returns the cursor which should be used for the tool in the editor windows.

Todo:
How to change the cursor for all map widgets while a tool is active?

Implements OpenOrienteering::MapEditorTool.

◆ init()

void OpenOrienteering::MapEditorToolBase::init ( )
overridevirtual

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 from OpenOrienteering::MapEditorTool.

◆ initImpl()

void OpenOrienteering::MapEditorToolBase::initImpl ( )
protectedvirtual

◆ isDragging()

bool OpenOrienteering::MapEditorToolBase::isDragging ( ) const
inlineprotected

Is the left mouse button pressed and has a drag move been started (by moving the mouse a minimum amount of pixels)?

◆ keyPress()

bool OpenOrienteering::MapEditorToolBase::keyPress ( QKeyEvent event)
protectedvirtual

◆ keyPressEvent()

bool OpenOrienteering::MapEditorToolBase::keyPressEvent ( QKeyEvent event)
overridevirtual

Reimplemented from OpenOrienteering::MapEditorTool.

◆ keyRelease()

bool OpenOrienteering::MapEditorToolBase::keyRelease ( QKeyEvent event)
protectedvirtual

◆ keyReleaseEvent()

bool OpenOrienteering::MapEditorToolBase::keyReleaseEvent ( QKeyEvent event)
overridevirtual

Reimplemented from OpenOrienteering::MapEditorTool.

◆ mouseMove()

void OpenOrienteering::MapEditorToolBase::mouseMove ( )
protectedvirtual

◆ mouseMoveEvent()

bool OpenOrienteering::MapEditorToolBase::mouseMoveEvent ( QMouseEvent event,
const MapCoordF map_coord,
MapWidget widget 
)
overridevirtual

Reimplemented from OpenOrienteering::MapEditorTool.

◆ mousePositionEvent()

void OpenOrienteering::MapEditorToolBase::mousePositionEvent ( QMouseEvent event,
const MapCoordF map_coord,
MapWidget widget 
)

Updates the saved current position (raw and constrained), map widget, and modifiers.

This function is called by the other mouse*Event handlers of this class. Derived classes which override the handlers may wish to call this, too.

◆ mousePressEvent()

bool OpenOrienteering::MapEditorToolBase::mousePressEvent ( QMouseEvent event,
const MapCoordF map_coord,
MapWidget widget 
)
overridevirtual

Reimplemented from OpenOrienteering::MapEditorTool.

◆ mouseReleaseEvent()

bool OpenOrienteering::MapEditorToolBase::mouseReleaseEvent ( QMouseEvent event,
const MapCoordF map_coord,
MapWidget widget 
)
overridevirtual

Reimplemented from OpenOrienteering::MapEditorTool.

◆ objectSelectionChanged

void OpenOrienteering::MapEditorToolBase::objectSelectionChanged ( )
protectedslot

◆ objectSelectionChangedImpl()

virtual void OpenOrienteering::MapEditorToolBase::objectSelectionChangedImpl ( )
protectedpure virtual

◆ reapplyConstraintHelpers()

void OpenOrienteering::MapEditorToolBase::reapplyConstraintHelpers ( )
protected

Applies the constraint helpers and generates a pointer event.

This function re-applies the constraint helpers to the current pointer position. Then it calls either mouseMove() or dragMove(), depending on the current state.

◆ resetEditedObjects()

void OpenOrienteering::MapEditorToolBase::resetEditedObjects ( )
protected

◆ startDragging()

void OpenOrienteering::MapEditorToolBase::startDragging ( )
protected

◆ startEditing() [1/3]

void OpenOrienteering::MapEditorToolBase::startEditing ( )
protected

Call this before editing the selected objects, and finish/abortEditing() afterwards.

Takes care of the preview renderables handling, map dirty flag, and objects edited signal.

◆ startEditing() [2/3]

void OpenOrienteering::MapEditorToolBase::startEditing ( Object object)
protected

◆ startEditing() [3/3]

void OpenOrienteering::MapEditorToolBase::startEditing ( const std::set< Object *> &  objects)
protected

◆ updateConstrainedPositions()

void OpenOrienteering::MapEditorToolBase::updateConstrainedPositions ( )
protected

Calculates the constrained cursor position for the current position and map widget.

Key event handlers which change constraint helper activation must call this to be able to visualize the effect of the change. Overrides of mouse*Event handlers shall call mousePositionEvent() instead. This is also done by the default implementation of these handlers. Thus it is not necessary to call this explicitly from clickPress(), clickRelease(), mouseMove(), dragStart(), dragMove(), or dragFinish() handlers.

◆ updateDirtyRect

void OpenOrienteering::MapEditorToolBase::updateDirtyRect ( )
protectedslot

◆ updateDirtyRectImpl()

int OpenOrienteering::MapEditorToolBase::updateDirtyRectImpl ( QRectF rect)
protectedvirtual

Must include the area of all custom drawings into the rect, which already contains the area of the selection preview and activated tool helpers when this method is called.

Must return the size of the pixel border, or -1 to clear the drawing.

Reimplemented in OpenOrienteering::CutTool, OpenOrienteering::EditPointTool, OpenOrienteering::DrawTextTool, OpenOrienteering::DrawPointTool, OpenOrienteering::CutoutTool, OpenOrienteering::EditLineTool, OpenOrienteering::DrawPointGPSTool, OpenOrienteering::RotateTool, OpenOrienteering::ScaleTool, and OpenOrienteering::RotatePatternTool.

◆ updateDragging()

void OpenOrienteering::MapEditorToolBase::updateDragging ( )
protected

◆ updatePreviewObjects()

void OpenOrienteering::MapEditorToolBase::updatePreviewObjects ( )
protectedvirtual

Call this to display changes to the preview objects between startEditing() and finish/abortEditing().

Todo:
get rid of force if possible;

Reimplemented in OpenOrienteering::EditPointTool, OpenOrienteering::CutTool, and OpenOrienteering::EditLineTool.

◆ updatePreviewObjectsAsynchronously()

void OpenOrienteering::MapEditorToolBase::updatePreviewObjectsAsynchronously ( )
protected

Call this to display changes to the preview objects between startEditing() and finish/abortEditing().

This method delays the actual redraw by a short amount of time to reduce the load when editing many objects.

◆ updatePreviewObjectsSlot

void OpenOrienteering::MapEditorToolBase::updatePreviewObjectsSlot ( )
protectedslot

◆ updateStatusText()

virtual void OpenOrienteering::MapEditorToolBase::updateStatusText ( )
protectedpure virtual

Member Data Documentation

◆ active_modifiers

Qt::KeyboardModifiers OpenOrienteering::MapEditorToolBase::active_modifiers
protected

Bitmask containing active modifiers.

◆ angle_helper

std::unique_ptr<ConstrainAngleToolHelper> OpenOrienteering::MapEditorToolBase::angle_helper
protected

Angle tool helper. If activated, it is included in the dirty rect and drawn automatically.

◆ click_pos

QPoint OpenOrienteering::MapEditorToolBase::click_pos
protected

Position where the left mouse button was pressed, with no constraints applied.

◆ click_pos_map

MapCoordF OpenOrienteering::MapEditorToolBase::click_pos_map
protected

◆ constrained_click_pos

QPointF OpenOrienteering::MapEditorToolBase::constrained_click_pos
protected

Position where the left mouse button was pressed, constrained by tool helpers, if active.

◆ constrained_click_pos_map

MapCoordF OpenOrienteering::MapEditorToolBase::constrained_click_pos_map
protected

◆ constrained_pos

QPointF OpenOrienteering::MapEditorToolBase::constrained_pos
protected

Position where the cursor is currently, constrained by tool helpers, if active.

◆ constrained_pos_map

MapCoordF OpenOrienteering::MapEditorToolBase::constrained_pos_map
protected

◆ cur_map_widget

MapWidget* OpenOrienteering::MapEditorToolBase::cur_map_widget
protected

The map widget in which the tool was last used.

◆ cur_pos

QPoint OpenOrienteering::MapEditorToolBase::cur_pos
protected

Position where the cursor is currently.

◆ cur_pos_map

MapCoordF OpenOrienteering::MapEditorToolBase::cur_pos_map
protected

◆ effective_start_drag_distance

int OpenOrienteering::MapEditorToolBase::effective_start_drag_distance
protected

The amount of pixels the mouse has to be moved to start dragging.

Defaults to Settings::getInstance().getStartDragDistancePx(), but can be modified.

◆ key_button_bar

QPointer<KeyButtonBar> OpenOrienteering::MapEditorToolBase::key_button_bar
protected

Must be set by derived classes if a key button bar is used.

MapEditorToolBase will take care of including its modifiers into active_modifiers and destruct it when the tool is destructed.

◆ snap_exclude_object

Object* OpenOrienteering::MapEditorToolBase::snap_exclude_object = nullptr
protected

An object to exclude from snapping, or nullptr to snap to all objects.

◆ snap_helper

std::unique_ptr<SnappingToolHelper> OpenOrienteering::MapEditorToolBase::snap_helper
protected

Snapping tool helper. If a non-null filter is set, it is included in the dirty rect and drawn automatically.

◆ snapped_to_pos

bool OpenOrienteering::MapEditorToolBase::snapped_to_pos
protected

This is set to true when constrained_pos(_map) is a snapped position.


The documentation for this class was generated from the following files: