QGIS API Documentation  3.22.4-Białowieża (ce8e65e95e)
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 
74  virtual QgsMapLayer *layer() const;
75 
89  bool isAdvancedDigitizingAllowed() const { return mAdvancedDigitizingAllowed; }
90 
99  bool isAutoSnapEnabled() const { return mAutoSnapEnabled; }
100 
101  protected:
102 
109  void setAdvancedDigitizingAllowed( bool allowed ) { mAdvancedDigitizingAllowed = allowed; }
110 
117  void setAutoSnapEnabled( bool enabled ) { mAutoSnapEnabled = enabled; }
118 
119 
120  QgsAdvancedDigitizingDockWidget *mCadDockWidget = nullptr;
121 
122  public:
123 
132  virtual void cadCanvasPressEvent( QgsMapMouseEvent *e ) { Q_UNUSED( e ) }
133 
134 
143  virtual void cadCanvasReleaseEvent( QgsMapMouseEvent *e ) { Q_UNUSED( e ) }
144 
145 
154  virtual void cadCanvasMoveEvent( QgsMapMouseEvent *e ) { Q_UNUSED( e ) }
155 
162  bool snapToLayerGridEnabled() const;
163 
170  void setSnapToLayerGridEnabled( bool snapToLayerGridEnabled );
171 
172  private slots:
173 
182  void cadPointChanged( const QgsPointXY &point );
183 
184  void onCurrentLayerChanged();
185 
186  private:
187 
189  bool mAdvancedDigitizingAllowed = true;
191  bool mAutoSnapEnabled = true;
193  bool mSnapToLayerGridEnabled = true;
194  QgsSnapToGridCanvasItem *mSnapToGridCanvasItem = nullptr;
195 };
196 
197 #endif // QGSMAPTOOLADVANCEDDIGITIZE_H
The QgsAdvancedDigitizingDockWidget class is a dockable widget used to handle the CAD tools on top of...
Map canvas is a class for displaying all GIS data types on a canvas.
Definition: qgsmapcanvas.h:89
Base class for all map layer types.
Definition: qgsmaplayer.h:73
A QgsMapMouseEvent is the result of a user interaction with the mouse on a QgsMapCanvas.
The QgsMapToolAdvancedDigitizing class is a QgsMapTool which gives event directly in map coordinates ...
virtual void cadCanvasMoveEvent(QgsMapMouseEvent *e)
Override this method when subclassing this class.
bool isAutoSnapEnabled() const
Returns whether mouse events (press/move/release) should automatically try to snap mouse position (ac...
virtual void cadCanvasPressEvent(QgsMapMouseEvent *e)
Override this method when subclassing this class.
void setAdvancedDigitizingAllowed(bool allowed)
Sets whether functionality of advanced digitizing dock widget is currently allowed.
virtual void cadCanvasReleaseEvent(QgsMapMouseEvent *e)
Override this method when subclassing this class.
QgsAdvancedDigitizingDockWidget * cadDockWidget() const
void setAutoSnapEnabled(bool enabled)
Sets whether mouse events (press/move/release) should automatically try to snap mouse position This m...
bool isAdvancedDigitizingAllowed() const
Returns whether functionality of advanced digitizing dock widget is currently allowed.
Base class for map tools that edit vector geometry.
QgsMapLayer * layer(const QString &id)
Returns the map layer with the matching ID, or nullptr if no layers could be found.
Definition: qgsmaptool.cpp:84
virtual void canvasPressEvent(QgsMapMouseEvent *e)
Mouse press event for overriding. Default implementation does nothing.
Definition: qgsmaptool.cpp:178
virtual void canvasMoveEvent(QgsMapMouseEvent *e)
Mouse move event for overriding. Default implementation does nothing.
Definition: qgsmaptool.cpp:168
virtual void canvasReleaseEvent(QgsMapMouseEvent *e)
Mouse release event for overriding. Default implementation does nothing.
Definition: qgsmaptool.cpp:183
virtual void activate()
called when set as currently active map tool
Definition: qgsmaptool.cpp:94
virtual void deactivate()
called when map tool is being deactivated
Definition: qgsmaptool.cpp:110
A class to represent a 2D point.
Definition: qgspointxy.h:59
Shows a grid on the map canvas given a spatial resolution.