25#include "moc_qgsmaptooladvanceddigitizing.cpp"
43 if ( !e->isAccepted() )
54 if ( mSnapToLayerGridEnabled &&
layer )
67 if ( !e->isAccepted() )
78 if ( mSnapToGridCanvasItem && mSnapToLayerGridEnabled &&
layer )
92 if ( !e->isAccepted() )
103 if ( mSnapToGridCanvasItem && mSnapToLayerGridEnabled &&
layer )
106 mSnapToGridCanvasItem->setPoint( e->
mapPoint() );
109 if ( mSnapIndicator )
127 mSnapToGridCanvasItem->setPrecision(
currentVectorLayer()->geometryOptions()->geometryPrecision() );
129 mSnapToGridCanvasItem->setEnabled( mSnapToLayerGridEnabled );
137 delete mSnapToGridCanvasItem;
138 mSnapToGridCanvasItem =
nullptr;
140 if ( mSnapIndicator )
151 return static_cast<bool>( mSnapIndicator.get() );
156 if ( enabled && !mSnapIndicator )
158 mSnapIndicator = std::make_unique<QgsSnapIndicator>(
mCanvas );
160 else if ( !enabled && mSnapIndicator )
162 mSnapIndicator.reset();
166void QgsMapToolAdvancedDigitizing::cadPointChanged(
const QgsPointXY &point )
169 QMouseEvent *ev =
new QMouseEvent( QEvent::MouseMove,
mCanvas->mouseLastXY(), Qt::NoButton, Qt::NoButton, Qt::NoModifier );
170 qApp->postEvent(
mCanvas->viewport(), ev );
173void QgsMapToolAdvancedDigitizing::onCurrentLayerChanged()
175 if ( mSnapToGridCanvasItem )
178 if (
layer && mSnapToLayerGridEnabled )
180 mSnapToGridCanvasItem->setPrecision(
layer->geometryOptions()->geometryPrecision() );
181 mSnapToGridCanvasItem->setCrs(
layer->crs() );
187 mSnapToGridCanvasItem->setEnabled(
false );
192 mSnapToGridCanvasItem->setEnabled( mSnapToLayerGridEnabled );
199 return mSnapToLayerGridEnabled;
204 mSnapToLayerGridEnabled = snapToGridEnabled;
206 if ( mSnapToGridCanvasItem )
208 mSnapToGridCanvasItem->setEnabled( snapToGridEnabled );
void currentLayerChanged(QgsMapLayer *layer)
Emitted when the current layer is changed.
QgsMapLayer * currentLayer()
returns current layer (set by legend widget)
Base class for all map layer types.
A mouse event which is the result of a user interaction with a QgsMapCanvas.
QgsPointXY mapPoint() const
mapPoint returns the point in coordinates
QgsPointLocator::Match mapPointMatch() const
Returns the matching data from the most recently snapped point.
void snapToGrid(double precision, const QgsCoordinateReferenceSystem &crs)
Snaps the mapPoint to a grid with the given precision.
QgsPointXY snapPoint()
snapPoint will snap the points using the map canvas snapping utils configuration
Shows a grid on the map canvas given a spatial resolution.
Represents a vector layer which manages a vector based dataset.