QGIS API Documentation 3.99.0-Master (2fe06baccd8)
Loading...
Searching...
No Matches
qgsmapcanvassnappingutils.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsmapcanvassnappingutils.cpp
3 ---------------------
4 begin : December 2014
5 copyright : (C) 2014 by Martin Dobias
6 email : wonder dot sk at gmail dot com
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 ***************************************************************************/
16
17#include "qgsmapcanvas.h"
20#include "qgsvectorlayer.h"
21
22#include <QApplication>
23#include <QProgressDialog>
24
25#include "moc_qgsmapcanvassnappingutils.cpp"
26
28 : QgsSnappingUtils( parent, QgsSettingsRegistryCore::settingsDigitizingSnapInvisibleFeature->value() )
29 , mCanvas( canvas )
30
31{
32 connect( canvas, &QgsMapCanvas::extentsChanged, this, &QgsMapCanvasSnappingUtils::canvasMapSettingsChanged );
33 connect( canvas, &QgsMapCanvas::destinationCrsChanged, this, &QgsMapCanvasSnappingUtils::canvasMapSettingsChanged );
34 connect( canvas, &QgsMapCanvas::layersChanged, this, &QgsMapCanvasSnappingUtils::canvasMapSettingsChanged );
35 connect( canvas, &QgsMapCanvas::currentLayerChanged, this, &QgsMapCanvasSnappingUtils::canvasCurrentLayerChanged );
36 connect( canvas, &QgsMapCanvas::transformContextChanged, this, &QgsMapCanvasSnappingUtils::canvasTransformContextChanged );
37 connect( canvas, &QgsMapCanvas::mapToolSet, this, &QgsMapCanvasSnappingUtils::canvasMapToolChanged );
38 canvasMapSettingsChanged();
39 canvasCurrentLayerChanged();
40}
41
42void QgsMapCanvasSnappingUtils::canvasMapSettingsChanged()
43{
44 setMapSettings( mCanvas->mapSettings() );
46}
47
48void QgsMapCanvasSnappingUtils::canvasTransformContextChanged()
49{
50 // can't trust any of our previous locators, as we don't know exactly how datum transform changes would affect these
52 setMapSettings( mCanvas->mapSettings() );
53}
54
55void QgsMapCanvasSnappingUtils::canvasCurrentLayerChanged()
56{
57 setCurrentLayer( qobject_cast<QgsVectorLayer *>( mCanvas->currentLayer() ) );
58}
59
60void QgsMapCanvasSnappingUtils::canvasMapToolChanged()
61{
63}
64
66{
67 QApplication::setOverrideCursor( Qt::WaitCursor );
68 mProgress = new QProgressDialog( tr( "Indexing data…" ), QString(), 0, count, mCanvas->topLevelWidget() );
69 mProgress->setWindowModality( Qt::WindowModal );
70}
71
73{
74 if ( !mProgress )
75 return;
76
77 mProgress->setValue( index );
78 if ( index == mProgress->maximum() )
79 {
80 delete mProgress;
81 mProgress = nullptr;
82 QApplication::restoreOverrideCursor();
83 }
84}
QgsMapCanvasSnappingUtils(QgsMapCanvas *canvas, QObject *parent=nullptr)
Construct map canvas snapping utils object.
void prepareIndexProgress(int index) override
Called when finished indexing a layer with snapToMap. When index == count the indexing is complete.
void prepareIndexStarting(int count) override
Called when starting to index with snapToMap - can be overridden and e.g. progress dialog can be prov...
Map canvas is a class for displaying all GIS data types on a canvas.
void extentsChanged()
Emitted when the extents of the map change.
void mapToolSet(QgsMapTool *newTool, QgsMapTool *oldTool)
Emit map tool changed with the old tool.
void currentLayerChanged(QgsMapLayer *layer)
Emitted when the current layer is changed.
void destinationCrsChanged()
Emitted when map CRS has changed.
void transformContextChanged()
Emitted when the canvas transform context is changed.
void layersChanged()
Emitted when a new set of layers has been received.
const QgsMapSettings & mapSettings() const
Gets access to properties used for map rendering.
Used for settings introspection and collects all QgsSettingsEntry instances of core.
static const QgsSettingsEntryBool * settingsDigitizingSnapInvisibleFeature
Settings entry digitizing snap invisible feature.
void setMapSettings(const QgsMapSettings &settings)
Assign current map settings to the utils - used for conversion between screen coords to map coords.
void clearAllLocators()
Deletes all existing locators (e.g. when destination CRS has changed and we need to reindex).
void setCurrentLayer(QgsVectorLayer *layer)
Sets current layer so that if mode is SnapCurrentLayer we know which layer to use.
QgsSnappingUtils(QObject *parent=nullptr, bool enableSnappingForInvisibleFeature=true)
Constructor for QgsSnappingUtils.
void setEnableSnappingForInvisibleFeature(bool enable)
Set if invisible features must be snapped or not.