From abd5fad9ddb88249d0936f7dd43c1dfbcef19ddf Mon Sep 17 00:00:00 2001 From: vcloarec Date: Thu, 27 Aug 2020 18:07:25 -0400 Subject: [PATCH] add more feedback cancellation and fix doc --- .../auto_generated/qgsprovidermetadata.sip.in | 2 +- .../processing/qgsalgorithmtinmeshcreation.cpp | 15 +++++++++++++++ src/core/qgsprovidermetadata.h | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/python/core/auto_generated/qgsprovidermetadata.sip.in b/python/core/auto_generated/qgsprovidermetadata.sip.in index ba83c36bd4c..090e8f54896 100644 --- a/python/core/auto_generated/qgsprovidermetadata.sip.in +++ b/python/core/auto_generated/qgsprovidermetadata.sip.in @@ -228,7 +228,7 @@ Creates a new instance of the raster data provider. const QString &driverName, const QgsCoordinateReferenceSystem &crs ) const; %Docstring -Creates mesh data source (depending of the provider) +Creates mesh data source, that is the mesh frame stored in file, memory or with other way (depending of the provider) .. versionadded:: 3.16 %End diff --git a/src/analysis/processing/qgsalgorithmtinmeshcreation.cpp b/src/analysis/processing/qgsalgorithmtinmeshcreation.cpp index e20e2cd22be..eb92ad2cb6c 100644 --- a/src/analysis/processing/qgsalgorithmtinmeshcreation.cpp +++ b/src/analysis/processing/qgsalgorithmtinmeshcreation.cpp @@ -85,6 +85,9 @@ bool QgsTinMeshCreationAlgorithm::prepareAlgorithm( const QVariantMap ¶meter for ( const QVariant &layer : layersList ) { + if ( feedback && feedback->isCanceled() ) + return false; + if ( layer.type() != QVariant::Map ) continue; const QVariantMap layerMap = layer.toMap(); @@ -112,6 +115,7 @@ bool QgsTinMeshCreationAlgorithm::prepareAlgorithm( const QVariantMap ¶meter if ( mVerticesLayer.isEmpty() && mBreakLinesLayer.isEmpty() ) return false; + return true; } @@ -124,10 +128,21 @@ QVariantMap QgsTinMeshCreationAlgorithm::processAlgorithm( const QVariantMap &pa triangulation.setCrs( destinationCrs ); for ( Layer &l : mVerticesLayer ) + { + if ( feedback && feedback->isCanceled() ) + break; triangulation.addVertices( l.fit, l.attributeIndex, l.transform, feedback, l.featureCount ); + } for ( Layer &l : mBreakLinesLayer ) + { + if ( feedback && feedback->isCanceled() ) + break; triangulation.addBreakLines( l.fit, l.attributeIndex, l.transform, feedback, l.featureCount ); + } + + if ( feedback && feedback->isCanceled() ) + return QVariantMap(); const QString fileName = parameterAsFile( parameters, QStringLiteral( "OUTPUT_MESH" ), context ); int driverIndex = parameterAsEnum( parameters, QStringLiteral( "MESH_FORMAT" ), context ); diff --git a/src/core/qgsprovidermetadata.h b/src/core/qgsprovidermetadata.h index d2800011523..f35094874ea 100644 --- a/src/core/qgsprovidermetadata.h +++ b/src/core/qgsprovidermetadata.h @@ -292,7 +292,7 @@ class CORE_EXPORT QgsProviderMetadata : public QObject const QStringList &createOptions = QStringList() ) SIP_FACTORY; /** - * Creates mesh data source (depending of the provider) + * Creates mesh data source, that is the mesh frame stored in file, memory or with other way (depending of the provider) * \since QGIS 3.16 */ virtual bool createMeshData(