Skip to content

Commit

Permalink
Highlight grid for map tools that snap to grid
Browse files Browse the repository at this point in the history
  • Loading branch information
m-kuhn committed Aug 26, 2018
1 parent 6c467fb commit b68ce37
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 1 deletion.
14 changes: 13 additions & 1 deletion src/gui/qgsmaptooladvanceddigitizing.cpp
Expand Up @@ -19,6 +19,7 @@
#include "qgsadvanceddigitizingdockwidget.h"
#include "qgsvectorlayer.h"
#include "qgsgeometryfixes.h"
#include "qgssnaptogridcanvasitem.h"

QgsMapToolAdvancedDigitizing::QgsMapToolAdvancedDigitizing( QgsMapCanvas *canvas, QgsAdvancedDigitizingDockWidget *cadDockWidget )
: QgsMapToolEdit( canvas )
Expand Down Expand Up @@ -109,6 +110,7 @@ void QgsMapToolAdvancedDigitizing::canvasMoveEvent( QgsMapMouseEvent *e )
if ( mSnapToGridEnabled && layer )
{
e->snapToGrid( layer->geometryFixes()->geometryPrecision(), layer->crs() );
mSnapToGridCanvasItem->setPoint( e->mapPoint() );
}

cadCanvasMoveEvent( e );
Expand All @@ -119,13 +121,19 @@ void QgsMapToolAdvancedDigitizing::activate()
QgsMapToolEdit::activate();
connect( mCadDockWidget, &QgsAdvancedDigitizingDockWidget::pointChanged, this, &QgsMapToolAdvancedDigitizing::cadPointChanged );
mCadDockWidget->enable();
mSnapToGridCanvasItem = new QgsSnapToGridCanvasItem( mCanvas );
mSnapToGridCanvasItem->setCrs( currentVectorLayer()->crs() );
mSnapToGridCanvasItem->setPrecision( currentVectorLayer()->geometryFixes()->geometryPrecision() );
mSnapToGridCanvasItem->setEnabled( mSnapToGridEnabled );
}

void QgsMapToolAdvancedDigitizing::deactivate()
{
QgsMapToolEdit::deactivate();
disconnect( mCadDockWidget, &QgsAdvancedDigitizingDockWidget::pointChanged, this, &QgsMapToolAdvancedDigitizing::cadPointChanged );
mCadDockWidget->disable();
delete mSnapToGridCanvasItem;
mSnapToGridCanvasItem = nullptr;
}

void QgsMapToolAdvancedDigitizing::cadPointChanged( const QgsPointXY &point )
Expand All @@ -142,5 +150,9 @@ bool QgsMapToolAdvancedDigitizing::snapToGridEnabled() const

void QgsMapToolAdvancedDigitizing::setSnapToGridEnabled( bool snapToGridEnabled )
{
mSnapToGridEnabled = snapToGridEnabled;
if ( mSnapToGridCanvasItem )
{
mSnapToGridEnabled = snapToGridEnabled;
mSnapToGridCanvasItem->setEnabled( snapToGridEnabled );
}
}
2 changes: 2 additions & 0 deletions src/gui/qgsmaptooladvanceddigitizing.h
Expand Up @@ -22,6 +22,7 @@

class QgsMapMouseEvent;
class QgsAdvancedDigitizingDockWidget;
class QgsSnapToGridCanvasItem;

/**
* \ingroup gui
Expand Down Expand Up @@ -175,6 +176,7 @@ class GUI_EXPORT QgsMapToolAdvancedDigitizing : public QgsMapToolEdit
bool mAutoSnapEnabled = true;
//! Whether to snap to grid before passing coordinates to cadCanvas*Event()
bool mSnapToGridEnabled = true;
QgsSnapToGridCanvasItem *mSnapToGridCanvasItem = nullptr;
};

#endif // QGSMAPTOOLADVANCEDDIGITIZE_H

0 comments on commit b68ce37

Please sign in to comment.