QGIS/python/gui/qgsmaptooladvanceddigitizing.sip
Denis Rouzaud 93971d5ed3 [sip] align pointer and reference in blacklisted files
this will facilitate sip diff checking
2017-05-01 17:49:43 +02:00

116 lines
4.5 KiB
Plaintext

/***************************************************************************
qgsmaptooladvanceddigitizing.h - map tool with event in map coordinates
----------------------
begin : October 2014
copyright : (C) Denis Rouzaud
email : denis.rouzaud@gmail.com
***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
/**
* @brief The QgsMapToolAdvancedDigitizing class is a QgsMapTool which gives event directly in map coordinates and allows filtering its events.
* Events from QgsMapTool are caught and their QMouseEvent are transformed into QgsMapMouseEvent (with map coordinates).
* Events are then forwarded to corresponding virtual methods which can be reimplemented in subclasses.
* An event filter can be set on the map tool to filter and modify the events in map coordinates (@see QgsMapToolMapEventFilter).
* @note at the moment, the event filter is used by the CAD tools (@see QgsCadDocWidget).
* @note the event filter definition is not exposed in python API to avoid any unexpected behavior.
*/
class QgsMapToolAdvancedDigitizing : QgsMapToolEdit
{
%TypeHeaderCode
#include "qgsmaptooladvanceddigitizing.h"
%End
public:
//! Different capture modes
enum CaptureMode
{
CaptureNone, //!< Do not capture
CapturePoint, //!< Capture points
CaptureSegment, //!< Capture a segment (i.e. 2 points)
CaptureLine, //!< Capture lines
CapturePolygon //!< Capture polygons
};
/**
* Creates an advanced digitizing maptool
* @param canvas The map canvas on which the tool works
* @param cadDockWidget The cad dock widget which will be used to adjust mouse events
*/
explicit QgsMapToolAdvancedDigitizing( QgsMapCanvas *canvas, QgsAdvancedDigitizingDockWidget *cadDockWidget );
~QgsMapToolAdvancedDigitizing();
//! catch the mouse press event, filters it, transforms it to map coordinates and send it to virtual method
virtual void canvasPressEvent( QgsMapMouseEvent *e );
//! catch the mouse release event, filters it, transforms it to map coordinates and send it to virtual method
virtual void canvasReleaseEvent( QgsMapMouseEvent *e );
//! catch the mouse move event, filters it, transforms it to map coordinates and send it to virtual method
virtual void canvasMoveEvent( QgsMapMouseEvent *e );
/**
* The capture mode
*
* @return Capture mode
*/
CaptureMode mode() const;
/**
* Set capture mode. This should correspond to the layer on which the digitizing
* happens.
*
* @param mode Capture Mode
*/
void setMode( CaptureMode mode );
/**
* Registers this maptool with the cad dock widget
*/
virtual void activate();
/**
* Unregisters this maptool from the cad dock widget
*/
virtual void deactivate();
QgsAdvancedDigitizingDockWidget *cadDockWidget() const;
protected:
/**
* Override this method when subclassing this class.
* This will receive adapted events from the cad system whenever a
* canvasPressEvent is triggered and it's not hidden by the cad's
* construction mode.
*
* @param e Mouse events prepared by the cad system
*/
virtual void cadCanvasPressEvent( QgsMapMouseEvent *e );
/**
* Override this method when subclassing this class.
* This will receive adapted events from the cad system whenever a
* canvasReleaseEvent is triggered and it's not hidden by the cad's
* construction mode.
*
* @param e Mouse events prepared by the cad system
*/
virtual void cadCanvasReleaseEvent( QgsMapMouseEvent *e );
/**
* Override this method when subclassing this class.
* This will receive adapted events from the cad system whenever a
* canvasMoveEvent is triggered and it's not hidden by the cad's
* construction mode.
*
* @param e Mouse events prepared by the cad system
*/
virtual void cadCanvasMoveEvent( QgsMapMouseEvent *e );
};