QGIS API Documentation  3.13.0-Master (740be229cb)
qgsmaptooladvanceddigitizing.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsmaptooladvanceddigitizing.h - map tool with event in map coordinates
3  ----------------------
4  begin : October 2014
5  copyright : (C) Denis Rouzaud
6  email : [email protected]
7  ***************************************************************************
8  * *
9  * This program is free software; you can redistribute it and/or modify *
10  * it under the terms of the GNU General Public License as published by *
11  * the Free Software Foundation; either version 2 of the License, or *
12  * (at your option) any later version. *
13  * *
14  ***************************************************************************/
15 
16 
17 #ifndef QGSMAPTOOLADVANCEDDIGITIZE_H
18 #define QGSMAPTOOLADVANCEDDIGITIZE_H
19 
20 #include "qgsmaptooledit.h"
21 #include "qgis_gui.h"
22 
23 class QgsMapMouseEvent;
26 
37 {
38  Q_OBJECT
39  public:
40 
47 
49  void canvasPressEvent( QgsMapMouseEvent *e ) override;
51  void canvasReleaseEvent( QgsMapMouseEvent *e ) override;
53  void canvasMoveEvent( QgsMapMouseEvent *e ) override;
54 
58  void activate() override;
59 
63  void deactivate() override;
64 
65  QgsAdvancedDigitizingDockWidget *cadDockWidget() const { return mCadDockWidget; }
66 
80  bool isAdvancedDigitizingAllowed() const { return mAdvancedDigitizingAllowed; }
81 
90  bool isAutoSnapEnabled() const { return mAutoSnapEnabled; }
91 
92  protected:
93 
100  void setAdvancedDigitizingAllowed( bool allowed ) { mAdvancedDigitizingAllowed = allowed; }
101 
108  void setAutoSnapEnabled( bool enabled ) { mAutoSnapEnabled = enabled; }
109 
110 
111  QgsAdvancedDigitizingDockWidget *mCadDockWidget = nullptr;
112 
113  public:
114 
123  virtual void cadCanvasPressEvent( QgsMapMouseEvent *e ) { Q_UNUSED( e ) }
124 
125 
134  virtual void cadCanvasReleaseEvent( QgsMapMouseEvent *e ) { Q_UNUSED( e ) }
135 
136 
145  virtual void cadCanvasMoveEvent( QgsMapMouseEvent *e ) { Q_UNUSED( e ) }
146 
153  bool snapToLayerGridEnabled() const;
154 
161  void setSnapToLayerGridEnabled( bool snapToLayerGridEnabled );
162 
163  private slots:
164 
173  void cadPointChanged( const QgsPointXY &point );
174 
175  void onCurrentLayerChanged();
176 
177  private:
178 
180  bool mAdvancedDigitizingAllowed = true;
182  bool mAutoSnapEnabled = true;
184  bool mSnapToLayerGridEnabled = true;
185  QgsSnapToGridCanvasItem *mSnapToGridCanvasItem = nullptr;
186 };
187 
188 #endif // QGSMAPTOOLADVANCEDDIGITIZE_H
virtual void canvasMoveEvent(QgsMapMouseEvent *e)
Mouse move event for overriding. Default implementation does nothing.
Definition: qgsmaptool.cpp:157
A class to represent a 2D point.
Definition: qgspointxy.h:43
A QgsMapMouseEvent is the result of a user interaction with the mouse on a QgsMapCanvas.
bool isAutoSnapEnabled() const
Returns whether mouse events (press/move/release) should automatically try to snap mouse position (ac...
The QgsMapToolAdvancedDigitizing class is a QgsMapTool which gives event directly in map coordinates ...
bool isAdvancedDigitizingAllowed() const
Returns whether functionality of advanced digitizing dock widget is currently allowed.
Base class for map tools that edit vector geometry.
Map canvas is a class for displaying all GIS data types on a canvas.
Definition: qgsmapcanvas.h:78
virtual void canvasPressEvent(QgsMapMouseEvent *e)
Mouse press event for overriding. Default implementation does nothing.
Definition: qgsmaptool.cpp:167
virtual void activate()
called when set as currently active map tool
Definition: qgsmaptool.cpp:83
void setAdvancedDigitizingAllowed(bool allowed)
Sets whether functionality of advanced digitizing dock widget is currently allowed.
Shows a grid on the map canvas given a spatial resolution.
virtual void deactivate()
called when map tool is being deactivated
Definition: qgsmaptool.cpp:99
QgsAdvancedDigitizingDockWidget * cadDockWidget() const
virtual void cadCanvasPressEvent(QgsMapMouseEvent *e)
Override this method when subclassing this class.
virtual void cadCanvasMoveEvent(QgsMapMouseEvent *e)
Override this method when subclassing this class.
virtual void cadCanvasReleaseEvent(QgsMapMouseEvent *e)
Override this method when subclassing this class.
The QgsAdvancedDigitizingDockWidget class is a dockable widget used to handle the CAD tools on top of...
void setAutoSnapEnabled(bool enabled)
Sets whether mouse events (press/move/release) should automatically try to snap mouse position This m...
virtual void canvasReleaseEvent(QgsMapMouseEvent *e)
Mouse release event for overriding. Default implementation does nothing.
Definition: qgsmaptool.cpp:172