From 61812648a39f0be4554ade766f9ab87d40fb30a1 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Wed, 18 Sep 2019 09:31:22 +0200 Subject: [PATCH] Add API to hook into resolveReferences --- python/core/auto_generated/qgsmaplayer.sip.in | 8 ++++++++ src/app/qgsgeometryvalidationservice.cpp | 5 ++++- src/core/qgsmaplayer.cpp | 1 + src/core/qgsmaplayer.h | 8 ++++++++ 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/python/core/auto_generated/qgsmaplayer.sip.in b/python/core/auto_generated/qgsmaplayer.sip.in index dcf8d75ea35..7dabfa8ede7 100644 --- a/python/core/auto_generated/qgsmaplayer.sip.in +++ b/python/core/auto_generated/qgsmaplayer.sip.in @@ -1398,6 +1398,14 @@ Sets the coordinate transform context to ``transformContext`` signals: + void beforeResolveReferences( QgsProject *project ); +%Docstring +Emitted when all layers are loaded and references can be resolved, +just before the references of this layer are resolved. + +.. versionadded:: 3.10 +%End + void statusChanged( const QString &status ); %Docstring Emit a signal with status (e.g. to be caught by QgisApp and display a msg on status bar) diff --git a/src/app/qgsgeometryvalidationservice.cpp b/src/app/qgsgeometryvalidationservice.cpp index 6d69f4fa2b4..f9dff0aa0ee 100644 --- a/src/app/qgsgeometryvalidationservice.cpp +++ b/src/app/qgsgeometryvalidationservice.cpp @@ -99,7 +99,10 @@ void QgsGeometryValidationService::onLayersAdded( const QList &la mLayerChecks.remove( vectorLayer ); } ); - enableLayerChecks( vectorLayer ); + connect( vectorLayer, &QgsMapLayer::beforeResolveReferences, this, [this, vectorLayer]() + { + enableLayerChecks( vectorLayer ); + } ); } } } diff --git a/src/core/qgsmaplayer.cpp b/src/core/qgsmaplayer.cpp index c5b79b914b9..a210e1efae7 100644 --- a/src/core/qgsmaplayer.cpp +++ b/src/core/qgsmaplayer.cpp @@ -612,6 +612,7 @@ QString QgsMapLayer::decodedSource( const QString &source, const QString &dataPr void QgsMapLayer::resolveReferences( QgsProject *project ) { + emit beforeResolveReferences( project ); if ( m3DRenderer ) m3DRenderer->resolveReferences( *project ); } diff --git a/src/core/qgsmaplayer.h b/src/core/qgsmaplayer.h index 31adb317784..70e368da208 100644 --- a/src/core/qgsmaplayer.h +++ b/src/core/qgsmaplayer.h @@ -1254,6 +1254,14 @@ class CORE_EXPORT QgsMapLayer : public QObject signals: + /** + * Emitted when all layers are loaded and references can be resolved, + * just before the references of this layer are resolved. + * + * \since QGIS 3.10 + */ + void beforeResolveReferences( QgsProject *project ); + //! Emit a signal with status (e.g. to be caught by QgisApp and display a msg on status bar) void statusChanged( const QString &status );