diff --git a/CMakeLists.txt b/CMakeLists.txt index 4ef230b3f291..e2f10969ae1e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1103,7 +1103,7 @@ if (WITH_CORE AND WITH_BINDINGS) include(SIPMacros) set(SIP_INCLUDES ${PYQT_SIP_DIR} ${CMAKE_SOURCE_DIR}/python) - set(SIP_CONCAT_PARTS 22) + set(SIP_CONCAT_PARTS 24) if (NOT BINDINGS_GLOBAL_INSTALL) set(Python_SITEARCH ${QGIS_DATA_DIR}/python) diff --git a/python/PyQt6/core/auto_additions/qgis.py b/python/PyQt6/core/auto_additions/qgis.py index d97a42e4b164..e46f30f21183 100644 --- a/python/PyQt6/core/auto_additions/qgis.py +++ b/python/PyQt6/core/auto_additions/qgis.py @@ -3134,6 +3134,15 @@ QgsProcessingAlgorithm.Flags = Qgis.ProcessingAlgorithmFlags Qgis.ProcessingAlgorithmFlags.baseClass = Qgis ProcessingAlgorithmFlags = Qgis # dirty hack since SIP seems to introduce the flags in module +# monkey patching scoped based enum +Qgis.ProcessingAlgorithmDocumentationFlag.RegeneratesPrimaryKey.__doc__ = "Algorithm always drops any existing primary keys or FID values and regenerates them in outputs" +Qgis.ProcessingAlgorithmDocumentationFlag.RegeneratesPrimaryKeyInSomeScenarios.__doc__ = "Algorithm may drop the existing primary keys or FID values in some scenarios, depending on algorithm inputs and parameters" +Qgis.ProcessingAlgorithmDocumentationFlag.__doc__ = "Flags describing algorithm behavior for documentation purposes.\n\n.. versionadded:: 3.40\n\n" + '* ``RegeneratesPrimaryKey``: ' + Qgis.ProcessingAlgorithmDocumentationFlag.RegeneratesPrimaryKey.__doc__ + '\n' + '* ``RegeneratesPrimaryKeyInSomeScenarios``: ' + Qgis.ProcessingAlgorithmDocumentationFlag.RegeneratesPrimaryKeyInSomeScenarios.__doc__ +# -- +Qgis.ProcessingAlgorithmDocumentationFlag.baseClass = Qgis +Qgis.ProcessingAlgorithmDocumentationFlags = lambda flags=0: Qgis.ProcessingAlgorithmDocumentationFlag(flags) +Qgis.ProcessingAlgorithmDocumentationFlags.baseClass = Qgis +ProcessingAlgorithmDocumentationFlags = Qgis # dirty hack since SIP seems to introduce the flags in module QgsProcessingAlgorithm.PropertyAvailability = Qgis.ProcessingPropertyAvailability # monkey patching scoped based enum QgsProcessingAlgorithm.NotAvailable = Qgis.ProcessingPropertyAvailability.NotAvailable diff --git a/python/PyQt6/core/auto_generated/processing/qgsprocessing.sip.in b/python/PyQt6/core/auto_generated/processing/qgsprocessing.sip.in index cb4f38f3969f..8d8bf91b58c9 100644 --- a/python/PyQt6/core/auto_generated/processing/qgsprocessing.sip.in +++ b/python/PyQt6/core/auto_generated/processing/qgsprocessing.sip.in @@ -44,6 +44,13 @@ and parameters. Converts a source ``type`` to a string representation. .. versionadded:: 3.6 +%End + + static QString documentationFlagToString( Qgis::ProcessingAlgorithmDocumentationFlag flag ); +%Docstring +Converts a documentation ``flag`` to a translated string. + +.. versionadded:: 3.40 %End static const QString TEMPORARY_OUTPUT; diff --git a/python/PyQt6/core/auto_generated/processing/qgsprocessingalgorithm.sip.in b/python/PyQt6/core/auto_generated/processing/qgsprocessingalgorithm.sip.in index 0ee98ce67c2c..3f7195d5cda4 100644 --- a/python/PyQt6/core/auto_generated/processing/qgsprocessingalgorithm.sip.in +++ b/python/PyQt6/core/auto_generated/processing/qgsprocessingalgorithm.sip.in @@ -146,6 +146,15 @@ Returns a url pointing to the algorithm's help page. .. seealso:: :py:func:`helpString` .. seealso:: :py:func:`shortHelpString` +%End + + virtual Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const /HoldGIL/; +%Docstring +Returns the flags describing algorithm behavior for documentation purposes. + +The default is to return no flags. + +.. versionadded:: 3.40 %End virtual QIcon icon() const /HoldGIL/; diff --git a/python/PyQt6/core/auto_generated/qgis.sip.in b/python/PyQt6/core/auto_generated/qgis.sip.in index 232576155ce9..ea717a58f516 100644 --- a/python/PyQt6/core/auto_generated/qgis.sip.in +++ b/python/PyQt6/core/auto_generated/qgis.sip.in @@ -1773,6 +1773,15 @@ The development version typedef QFlags ProcessingAlgorithmFlags; + enum class ProcessingAlgorithmDocumentationFlag /BaseType=IntFlag/ + { + RegeneratesPrimaryKey, + RegeneratesPrimaryKeyInSomeScenarios, + }; + + typedef QFlags ProcessingAlgorithmDocumentationFlags; + + enum class ProcessingPropertyAvailability /BaseType=IntEnum/ { NotAvailable, @@ -3117,6 +3126,8 @@ QFlags operator|(Qgis::ProcessingProviderFlag f1, QFlags operator|(Qgis::ProcessingAlgorithmFlag f1, QFlags f2); +QFlags operator|(Qgis::ProcessingAlgorithmDocumentationFlag f1, QFlags f2); + QFlags operator|(Qgis::ProcessingFeatureSourceFlag f1, QFlags f2); QFlags operator|(Qgis::ProcessingParameterTypeFlag f1, QFlags f2); diff --git a/python/core/auto_additions/qgis.py b/python/core/auto_additions/qgis.py index 966ac7b33627..5d5ad316548d 100644 --- a/python/core/auto_additions/qgis.py +++ b/python/core/auto_additions/qgis.py @@ -3081,6 +3081,14 @@ QgsProcessingAlgorithm.Flags = Qgis.ProcessingAlgorithmFlags Qgis.ProcessingAlgorithmFlags.baseClass = Qgis ProcessingAlgorithmFlags = Qgis # dirty hack since SIP seems to introduce the flags in module +# monkey patching scoped based enum +Qgis.ProcessingAlgorithmDocumentationFlag.RegeneratesPrimaryKey.__doc__ = "Algorithm always drops any existing primary keys or FID values and regenerates them in outputs" +Qgis.ProcessingAlgorithmDocumentationFlag.RegeneratesPrimaryKeyInSomeScenarios.__doc__ = "Algorithm may drop the existing primary keys or FID values in some scenarios, depending on algorithm inputs and parameters" +Qgis.ProcessingAlgorithmDocumentationFlag.__doc__ = "Flags describing algorithm behavior for documentation purposes.\n\n.. versionadded:: 3.40\n\n" + '* ``RegeneratesPrimaryKey``: ' + Qgis.ProcessingAlgorithmDocumentationFlag.RegeneratesPrimaryKey.__doc__ + '\n' + '* ``RegeneratesPrimaryKeyInSomeScenarios``: ' + Qgis.ProcessingAlgorithmDocumentationFlag.RegeneratesPrimaryKeyInSomeScenarios.__doc__ +# -- +Qgis.ProcessingAlgorithmDocumentationFlag.baseClass = Qgis +Qgis.ProcessingAlgorithmDocumentationFlags.baseClass = Qgis +ProcessingAlgorithmDocumentationFlags = Qgis # dirty hack since SIP seems to introduce the flags in module QgsProcessingAlgorithm.PropertyAvailability = Qgis.ProcessingPropertyAvailability # monkey patching scoped based enum QgsProcessingAlgorithm.NotAvailable = Qgis.ProcessingPropertyAvailability.NotAvailable diff --git a/python/core/auto_generated/processing/qgsprocessing.sip.in b/python/core/auto_generated/processing/qgsprocessing.sip.in index 91706ec69df9..d4447b38ac75 100644 --- a/python/core/auto_generated/processing/qgsprocessing.sip.in +++ b/python/core/auto_generated/processing/qgsprocessing.sip.in @@ -44,6 +44,13 @@ and parameters. Converts a source ``type`` to a string representation. .. versionadded:: 3.6 +%End + + static QString documentationFlagToString( Qgis::ProcessingAlgorithmDocumentationFlag flag ); +%Docstring +Converts a documentation ``flag`` to a translated string. + +.. versionadded:: 3.40 %End static const QString TEMPORARY_OUTPUT; diff --git a/python/core/auto_generated/processing/qgsprocessingalgorithm.sip.in b/python/core/auto_generated/processing/qgsprocessingalgorithm.sip.in index 0ee98ce67c2c..3f7195d5cda4 100644 --- a/python/core/auto_generated/processing/qgsprocessingalgorithm.sip.in +++ b/python/core/auto_generated/processing/qgsprocessingalgorithm.sip.in @@ -146,6 +146,15 @@ Returns a url pointing to the algorithm's help page. .. seealso:: :py:func:`helpString` .. seealso:: :py:func:`shortHelpString` +%End + + virtual Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const /HoldGIL/; +%Docstring +Returns the flags describing algorithm behavior for documentation purposes. + +The default is to return no flags. + +.. versionadded:: 3.40 %End virtual QIcon icon() const /HoldGIL/; diff --git a/python/core/auto_generated/qgis.sip.in b/python/core/auto_generated/qgis.sip.in index e267f3167789..aa133a1d68e7 100644 --- a/python/core/auto_generated/qgis.sip.in +++ b/python/core/auto_generated/qgis.sip.in @@ -1773,6 +1773,15 @@ The development version typedef QFlags ProcessingAlgorithmFlags; + enum class ProcessingAlgorithmDocumentationFlag + { + RegeneratesPrimaryKey, + RegeneratesPrimaryKeyInSomeScenarios, + }; + + typedef QFlags ProcessingAlgorithmDocumentationFlags; + + enum class ProcessingPropertyAvailability { NotAvailable, @@ -3117,6 +3126,8 @@ QFlags operator|(Qgis::ProcessingProviderFlag f1, QFlags operator|(Qgis::ProcessingAlgorithmFlag f1, QFlags f2); +QFlags operator|(Qgis::ProcessingAlgorithmDocumentationFlag f1, QFlags f2); + QFlags operator|(Qgis::ProcessingFeatureSourceFlag f1, QFlags f2); QFlags operator|(Qgis::ProcessingParameterTypeFlag f1, QFlags f2); diff --git a/python/plugins/processing/algs/qgis/RandomPointsAlongLines.py b/python/plugins/processing/algs/qgis/RandomPointsAlongLines.py index f55ff528cbab..8a245359ffd8 100644 --- a/python/plugins/processing/algs/qgis/RandomPointsAlongLines.py +++ b/python/plugins/processing/algs/qgis/RandomPointsAlongLines.py @@ -22,7 +22,8 @@ import random from qgis.PyQt.QtCore import QVariant -from qgis.core import (QgsField, +from qgis.core import (Qgis, + QgsField, QgsFeatureSink, QgsFeature, QgsFields, @@ -81,6 +82,9 @@ def name(self): def displayName(self): return self.tr('Random points along line') + def documentationFlags(self): + return Qgis.ProcessingAlgorithmDocumentationFlag.RegeneratesPrimaryKey + def processAlgorithm(self, parameters, context, feedback): source = self.parameterAsSource(parameters, self.INPUT, context) if source is None: diff --git a/python/plugins/processing/algs/qgis/RandomPointsLayer.py b/python/plugins/processing/algs/qgis/RandomPointsLayer.py index e36c01004384..52286c953a69 100644 --- a/python/plugins/processing/algs/qgis/RandomPointsLayer.py +++ b/python/plugins/processing/algs/qgis/RandomPointsLayer.py @@ -24,7 +24,8 @@ from qgis.PyQt.QtGui import QIcon from qgis.PyQt.QtCore import QVariant -from qgis.core import (QgsApplication, +from qgis.core import (Qgis, + QgsApplication, QgsField, QgsFeatureSink, QgsFeature, @@ -90,6 +91,9 @@ def name(self): def displayName(self): return self.tr('Random points in layer bounds') + def documentationFlags(self): + return Qgis.ProcessingAlgorithmDocumentationFlag.RegeneratesPrimaryKey + def processAlgorithm(self, parameters, context, feedback): source = self.parameterAsSource(parameters, self.INPUT, context) if source is None: diff --git a/python/plugins/processing/algs/qgis/RandomPointsPolygons.py b/python/plugins/processing/algs/qgis/RandomPointsPolygons.py index 673840df92fd..e8cfb18dba0b 100644 --- a/python/plugins/processing/algs/qgis/RandomPointsPolygons.py +++ b/python/plugins/processing/algs/qgis/RandomPointsPolygons.py @@ -23,7 +23,8 @@ import random from qgis.PyQt.QtCore import QVariant -from qgis.core import (QgsApplication, +from qgis.core import (Qgis, + QgsApplication, QgsField, QgsFeatureSink, QgsFeature, @@ -118,6 +119,9 @@ def name(self): def displayName(self): return self.tr('Random points inside polygons') + def documentationFlags(self): + return Qgis.ProcessingAlgorithmDocumentationFlag.RegeneratesPrimaryKey + def processAlgorithm(self, parameters, context, feedback): source = self.parameterAsSource(parameters, self.INPUT, context) if source is None: diff --git a/src/analysis/processing/qgsalgorithmarrayoffsetlines.cpp b/src/analysis/processing/qgsalgorithmarrayoffsetlines.cpp index 3d468464ef16..67ae72519907 100644 --- a/src/analysis/processing/qgsalgorithmarrayoffsetlines.cpp +++ b/src/analysis/processing/qgsalgorithmarrayoffsetlines.cpp @@ -60,6 +60,11 @@ QString QgsCreateArrayOffsetLinesAlgorithm::shortDescription() const return QObject::tr( "Creates multiple offset copies of lines from a layer." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsCreateArrayOffsetLinesAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey; +} + QgsCreateArrayOffsetLinesAlgorithm *QgsCreateArrayOffsetLinesAlgorithm::createInstance() const { return new QgsCreateArrayOffsetLinesAlgorithm(); diff --git a/src/analysis/processing/qgsalgorithmarrayoffsetlines.h b/src/analysis/processing/qgsalgorithmarrayoffsetlines.h index 12cedcaf7168..b22633ad68f8 100644 --- a/src/analysis/processing/qgsalgorithmarrayoffsetlines.h +++ b/src/analysis/processing/qgsalgorithmarrayoffsetlines.h @@ -41,6 +41,7 @@ class QgsCreateArrayOffsetLinesAlgorithm : public QgsProcessingFeatureBasedAlgor QString groupId() const override; QString shortHelpString() const override; QString shortDescription() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; QgsCreateArrayOffsetLinesAlgorithm *createInstance() const override SIP_FACTORY; void initParameters( const QVariantMap &configuration = QVariantMap() ) override; QList inputLayerTypes() const override; diff --git a/src/analysis/processing/qgsalgorithmarraytranslatedfeatures.cpp b/src/analysis/processing/qgsalgorithmarraytranslatedfeatures.cpp index da9c8b8a0fb9..314f8e80a1bf 100644 --- a/src/analysis/processing/qgsalgorithmarraytranslatedfeatures.cpp +++ b/src/analysis/processing/qgsalgorithmarraytranslatedfeatures.cpp @@ -60,6 +60,11 @@ QString QgsArrayTranslatedFeaturesAlgorithm::shortDescription() const return QObject::tr( "Creates multiple translated copies of features in a layer." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsArrayTranslatedFeaturesAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey; +} + QgsArrayTranslatedFeaturesAlgorithm *QgsArrayTranslatedFeaturesAlgorithm::createInstance() const { return new QgsArrayTranslatedFeaturesAlgorithm(); diff --git a/src/analysis/processing/qgsalgorithmarraytranslatedfeatures.h b/src/analysis/processing/qgsalgorithmarraytranslatedfeatures.h index 5773ee9952a3..53eec1baa959 100644 --- a/src/analysis/processing/qgsalgorithmarraytranslatedfeatures.h +++ b/src/analysis/processing/qgsalgorithmarraytranslatedfeatures.h @@ -41,6 +41,7 @@ class QgsArrayTranslatedFeaturesAlgorithm : public QgsProcessingFeatureBasedAlgo QString groupId() const override; QString shortHelpString() const override; QString shortDescription() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; QgsArrayTranslatedFeaturesAlgorithm *createInstance() const override SIP_FACTORY; void initParameters( const QVariantMap &configuration = QVariantMap() ) override; diff --git a/src/analysis/processing/qgsalgorithmbuffer.cpp b/src/analysis/processing/qgsalgorithmbuffer.cpp index 9cb1bee15193..f20e24274c23 100644 --- a/src/analysis/processing/qgsalgorithmbuffer.cpp +++ b/src/analysis/processing/qgsalgorithmbuffer.cpp @@ -81,6 +81,11 @@ QString QgsBufferAlgorithm::shortHelpString() const "The miter limit parameter is only applicable for miter join styles, and controls the maximum distance from the offset curve to use when creating a mitered join." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsBufferAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKeyInSomeScenarios; +} + QgsBufferAlgorithm *QgsBufferAlgorithm::createInstance() const { return new QgsBufferAlgorithm(); diff --git a/src/analysis/processing/qgsalgorithmbuffer.h b/src/analysis/processing/qgsalgorithmbuffer.h index 689f0ad58028..254f44d91e01 100644 --- a/src/analysis/processing/qgsalgorithmbuffer.h +++ b/src/analysis/processing/qgsalgorithmbuffer.h @@ -44,6 +44,7 @@ class QgsBufferAlgorithm : public QgsProcessingAlgorithm QString group() const override; QString groupId() const override; QString shortHelpString() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; QgsBufferAlgorithm *createInstance() const override SIP_FACTORY; bool supportInPlaceEdit( const QgsMapLayer *layer ) const override; Qgis::ProcessingAlgorithmFlags flags() const override; diff --git a/src/analysis/processing/qgsalgorithmcentroid.cpp b/src/analysis/processing/qgsalgorithmcentroid.cpp index 8c02ea7aba05..e03fd9467cb3 100644 --- a/src/analysis/processing/qgsalgorithmcentroid.cpp +++ b/src/analysis/processing/qgsalgorithmcentroid.cpp @@ -64,6 +64,11 @@ QString QgsCentroidAlgorithm::shortHelpString() const "The attributes associated to each point in the output layer are the same ones associated to the original features." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsCentroidAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKeyInSomeScenarios; +} + QgsCentroidAlgorithm *QgsCentroidAlgorithm::createInstance() const { return new QgsCentroidAlgorithm(); diff --git a/src/analysis/processing/qgsalgorithmcentroid.h b/src/analysis/processing/qgsalgorithmcentroid.h index ae6cf552277e..656c59feb9db 100644 --- a/src/analysis/processing/qgsalgorithmcentroid.h +++ b/src/analysis/processing/qgsalgorithmcentroid.h @@ -43,6 +43,7 @@ class QgsCentroidAlgorithm : public QgsProcessingFeatureBasedAlgorithm QString group() const override; QString groupId() const override; QString shortHelpString() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; QgsCentroidAlgorithm *createInstance() const override SIP_FACTORY; void initParameters( const QVariantMap &configuration = QVariantMap() ) override; diff --git a/src/analysis/processing/qgsalgorithmdissolve.cpp b/src/analysis/processing/qgsalgorithmdissolve.cpp index f43d1fb0ba64..3a7bc8f9f7bf 100644 --- a/src/analysis/processing/qgsalgorithmdissolve.cpp +++ b/src/analysis/processing/qgsalgorithmdissolve.cpp @@ -261,6 +261,11 @@ QString QgsDissolveAlgorithm::shortHelpString() const "as separate features (instead of parts of a single multipart feature)." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsDissolveAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey; +} + QgsDissolveAlgorithm *QgsDissolveAlgorithm::createInstance() const { return new QgsDissolveAlgorithm(); @@ -362,6 +367,11 @@ QString QgsCollectAlgorithm::shortHelpString() const QObject::tr( "See the 'Promote to multipart' or 'Aggregate' algorithms for alternative options." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsCollectAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey; +} + QgsCollectAlgorithm *QgsCollectAlgorithm::createInstance() const { return new QgsCollectAlgorithm(); diff --git a/src/analysis/processing/qgsalgorithmdissolve.h b/src/analysis/processing/qgsalgorithmdissolve.h index 95d72171275b..866362a93930 100644 --- a/src/analysis/processing/qgsalgorithmdissolve.h +++ b/src/analysis/processing/qgsalgorithmdissolve.h @@ -56,6 +56,7 @@ class QgsDissolveAlgorithm : public QgsCollectorAlgorithm QString group() const override; QString groupId() const override; QString shortHelpString() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; QgsDissolveAlgorithm *createInstance() const override SIP_FACTORY; protected: @@ -83,6 +84,7 @@ class QgsCollectAlgorithm : public QgsCollectorAlgorithm QString group() const override; QString groupId() const override; QString shortHelpString() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; QgsCollectAlgorithm *createInstance() const override SIP_FACTORY; protected: diff --git a/src/analysis/processing/qgsalgorithmexplode.cpp b/src/analysis/processing/qgsalgorithmexplode.cpp index 4063448aca27..75772d25c7f7 100644 --- a/src/analysis/processing/qgsalgorithmexplode.cpp +++ b/src/analysis/processing/qgsalgorithmexplode.cpp @@ -58,6 +58,11 @@ QString QgsExplodeAlgorithm::shortHelpString() const "same type and contain only single curve segments." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsExplodeAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey; +} + QList QgsExplodeAlgorithm::inputLayerTypes() const { return QList() << static_cast< int >( Qgis::ProcessingSourceType::VectorLine ); diff --git a/src/analysis/processing/qgsalgorithmexplode.h b/src/analysis/processing/qgsalgorithmexplode.h index 19871592b72e..a71e349c324e 100644 --- a/src/analysis/processing/qgsalgorithmexplode.h +++ b/src/analysis/processing/qgsalgorithmexplode.h @@ -40,6 +40,7 @@ class QgsExplodeAlgorithm : public QgsProcessingFeatureBasedAlgorithm QString group() const override; QString groupId() const override; QString shortHelpString() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; QList inputLayerTypes() const override; Qgis::ProcessingSourceType outputLayerType() const override; QgsExplodeAlgorithm *createInstance() const override SIP_FACTORY; diff --git a/src/analysis/processing/qgsalgorithmextractlabels.cpp b/src/analysis/processing/qgsalgorithmextractlabels.cpp index 94fd5124dfb6..d1f081e70994 100644 --- a/src/analysis/processing/qgsalgorithmextractlabels.cpp +++ b/src/analysis/processing/qgsalgorithmextractlabels.cpp @@ -107,6 +107,11 @@ QString QgsExtractLabelsAlgorithm::shortDescription() const return QObject::tr( "Converts map labels to a point layer with relevant details saved as attributes." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsExtractLabelsAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey; +} + QString QgsExtractLabelsAlgorithm::shortHelpString() const { return QObject::tr( "This algorithm extracts label information from a rendered map at a given extent and scale.\n\n" diff --git a/src/analysis/processing/qgsalgorithmextractlabels.h b/src/analysis/processing/qgsalgorithmextractlabels.h index 3e1982b505f0..cd7aebd8cf6d 100644 --- a/src/analysis/processing/qgsalgorithmextractlabels.h +++ b/src/analysis/processing/qgsalgorithmextractlabels.h @@ -38,6 +38,7 @@ class QgsExtractLabelsAlgorithm : public QgsProcessingAlgorithm QString groupId() const override; QString shortHelpString() const override; QString shortDescription() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; QgsExtractLabelsAlgorithm *createInstance() const override SIP_FACTORY; protected: diff --git a/src/analysis/processing/qgsalgorithmextractspecificvertices.cpp b/src/analysis/processing/qgsalgorithmextractspecificvertices.cpp index c6e581a51c43..0d53fdf1bd1d 100644 --- a/src/analysis/processing/qgsalgorithmextractspecificvertices.cpp +++ b/src/analysis/processing/qgsalgorithmextractspecificvertices.cpp @@ -64,6 +64,11 @@ QString QgsExtractSpecificVerticesAlgorithm::shortHelpString() const "polygons), distance along the original geometry and bisector angle of vertex for the original geometry." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsExtractSpecificVerticesAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey; +} + QString QgsExtractSpecificVerticesAlgorithm::outputName() const { return QObject::tr( "Vertices" ); diff --git a/src/analysis/processing/qgsalgorithmextractspecificvertices.h b/src/analysis/processing/qgsalgorithmextractspecificvertices.h index 63c7a63161f9..e1e2b1e983cf 100644 --- a/src/analysis/processing/qgsalgorithmextractspecificvertices.h +++ b/src/analysis/processing/qgsalgorithmextractspecificvertices.h @@ -41,6 +41,7 @@ class QgsExtractSpecificVerticesAlgorithm : public QgsProcessingFeatureBasedAlgo QString group() const override; QString groupId() const override; QString shortHelpString() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; void initParameters( const QVariantMap &configuration = QVariantMap() ) override; QgsExtractSpecificVerticesAlgorithm *createInstance() const override SIP_FACTORY; diff --git a/src/analysis/processing/qgsalgorithmextractvertices.cpp b/src/analysis/processing/qgsalgorithmextractvertices.cpp index f3ea571df56a..41f58d6767c3 100644 --- a/src/analysis/processing/qgsalgorithmextractvertices.cpp +++ b/src/analysis/processing/qgsalgorithmextractvertices.cpp @@ -54,6 +54,11 @@ QString QgsExtractVerticesAlgorithm::shortHelpString() const QObject::tr( "Additional fields are added to the point indicating the vertex index (beginning at 0), the vertex’s part and its index within the part (as well as its ring for polygons), distance along original geometry and bisector angle of vertex for original geometry." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsExtractVerticesAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey; +} + QString QgsExtractVerticesAlgorithm::outputName() const { return QObject::tr( "Vertices" ); diff --git a/src/analysis/processing/qgsalgorithmextractvertices.h b/src/analysis/processing/qgsalgorithmextractvertices.h index b3fc69228507..dea94ff59599 100644 --- a/src/analysis/processing/qgsalgorithmextractvertices.h +++ b/src/analysis/processing/qgsalgorithmextractvertices.h @@ -43,6 +43,7 @@ class QgsExtractVerticesAlgorithm : public QgsProcessingFeatureBasedAlgorithm QString group() const override; QString groupId() const override; QString shortHelpString() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; QgsExtractVerticesAlgorithm *createInstance() const override SIP_FACTORY; protected: diff --git a/src/analysis/processing/qgsalgorithmflattenrelationships.cpp b/src/analysis/processing/qgsalgorithmflattenrelationships.cpp index 287f851aa591..e8373f43bd51 100644 --- a/src/analysis/processing/qgsalgorithmflattenrelationships.cpp +++ b/src/analysis/processing/qgsalgorithmflattenrelationships.cpp @@ -59,6 +59,11 @@ QString QgsFlattenRelationshipsAlgorithm::shortHelpString() const "the attributes for the related features." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsFlattenRelationshipsAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey; +} + Qgis::ProcessingAlgorithmFlags QgsFlattenRelationshipsAlgorithm::flags() const { return QgsProcessingAlgorithm::flags() | Qgis::ProcessingAlgorithmFlag::RequiresProject; diff --git a/src/analysis/processing/qgsalgorithmflattenrelationships.h b/src/analysis/processing/qgsalgorithmflattenrelationships.h index e1a491396f2d..5acd764e0ffe 100644 --- a/src/analysis/processing/qgsalgorithmflattenrelationships.h +++ b/src/analysis/processing/qgsalgorithmflattenrelationships.h @@ -45,6 +45,7 @@ class QgsFlattenRelationshipsAlgorithm : public QgsProcessingAlgorithm QString groupId() const override; QString shortDescription() const override; QString shortHelpString() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; Qgis::ProcessingAlgorithmFlags flags() const override; QgsFlattenRelationshipsAlgorithm *createInstance() const override SIP_FACTORY; diff --git a/src/analysis/processing/qgsalgorithmintersection.cpp b/src/analysis/processing/qgsalgorithmintersection.cpp index dda3e07cc66f..23359bb297e9 100644 --- a/src/analysis/processing/qgsalgorithmintersection.cpp +++ b/src/analysis/processing/qgsalgorithmintersection.cpp @@ -49,6 +49,11 @@ QString QgsIntersectionAlgorithm::shortHelpString() const "from both the Input and Overlay layers." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsIntersectionAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey; +} + QgsProcessingAlgorithm *QgsIntersectionAlgorithm::createInstance() const { return new QgsIntersectionAlgorithm(); diff --git a/src/analysis/processing/qgsalgorithmintersection.h b/src/analysis/processing/qgsalgorithmintersection.h index c4824d9eba63..fa792739a137 100644 --- a/src/analysis/processing/qgsalgorithmintersection.h +++ b/src/analysis/processing/qgsalgorithmintersection.h @@ -34,6 +34,7 @@ class QgsIntersectionAlgorithm : public QgsProcessingAlgorithm QString group() const override; QString groupId() const override; QString shortHelpString() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; protected: QgsProcessingAlgorithm *createInstance() const override; diff --git a/src/analysis/processing/qgsalgorithmjoinbyattribute.cpp b/src/analysis/processing/qgsalgorithmjoinbyattribute.cpp index 0ff9f7815e9b..5e8c219854b0 100644 --- a/src/analysis/processing/qgsalgorithmjoinbyattribute.cpp +++ b/src/analysis/processing/qgsalgorithmjoinbyattribute.cpp @@ -96,6 +96,11 @@ QString QgsJoinByAttributeAlgorithm::shortHelpString() const "in each of them to define the join criteria." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsJoinByAttributeAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey; +} + QgsJoinByAttributeAlgorithm *QgsJoinByAttributeAlgorithm::createInstance() const { return new QgsJoinByAttributeAlgorithm(); diff --git a/src/analysis/processing/qgsalgorithmjoinbyattribute.h b/src/analysis/processing/qgsalgorithmjoinbyattribute.h index 5d5dba5fc977..d8ad883b6aff 100644 --- a/src/analysis/processing/qgsalgorithmjoinbyattribute.h +++ b/src/analysis/processing/qgsalgorithmjoinbyattribute.h @@ -41,6 +41,7 @@ class QgsJoinByAttributeAlgorithm : public QgsProcessingAlgorithm QString group() const override; QString groupId() const override; QString shortHelpString() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; QgsJoinByAttributeAlgorithm *createInstance() const override SIP_FACTORY; protected: diff --git a/src/analysis/processing/qgsalgorithmjoinbylocation.cpp b/src/analysis/processing/qgsalgorithmjoinbylocation.cpp index d26329119875..4755b5432aa3 100644 --- a/src/analysis/processing/qgsalgorithmjoinbylocation.cpp +++ b/src/analysis/processing/qgsalgorithmjoinbylocation.cpp @@ -101,6 +101,11 @@ QString QgsJoinByLocationAlgorithm::shortDescription() const return QObject::tr( "Join attributes from one vector layer to another by location." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsJoinByLocationAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey; +} + QgsJoinByLocationAlgorithm *QgsJoinByLocationAlgorithm::createInstance() const { return new QgsJoinByLocationAlgorithm(); diff --git a/src/analysis/processing/qgsalgorithmjoinbylocation.h b/src/analysis/processing/qgsalgorithmjoinbylocation.h index 5dd8e0509cf0..03a1851bcb52 100644 --- a/src/analysis/processing/qgsalgorithmjoinbylocation.h +++ b/src/analysis/processing/qgsalgorithmjoinbylocation.h @@ -46,6 +46,7 @@ class QgsJoinByLocationAlgorithm : public QgsProcessingAlgorithm QString groupId() const override; QString shortHelpString() const override; QString shortDescription() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; QgsJoinByLocationAlgorithm *createInstance() const override SIP_FACTORY; /** diff --git a/src/analysis/processing/qgsalgorithmjoinbynearest.cpp b/src/analysis/processing/qgsalgorithmjoinbynearest.cpp index b836dedae1e8..459f0310d5f0 100644 --- a/src/analysis/processing/qgsalgorithmjoinbynearest.cpp +++ b/src/analysis/processing/qgsalgorithmjoinbynearest.cpp @@ -110,6 +110,11 @@ QString QgsJoinByNearestAlgorithm::shortDescription() const return QObject::tr( "Joins a layer to another layer, using the closest features (nearest neighbors)." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsJoinByNearestAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey; +} + QgsJoinByNearestAlgorithm *QgsJoinByNearestAlgorithm::createInstance() const { return new QgsJoinByNearestAlgorithm(); diff --git a/src/analysis/processing/qgsalgorithmjoinbynearest.h b/src/analysis/processing/qgsalgorithmjoinbynearest.h index 4a8d1a2d350d..3aa516238a93 100644 --- a/src/analysis/processing/qgsalgorithmjoinbynearest.h +++ b/src/analysis/processing/qgsalgorithmjoinbynearest.h @@ -42,6 +42,7 @@ class QgsJoinByNearestAlgorithm : public QgsProcessingAlgorithm QString groupId() const override; QString shortHelpString() const override; QString shortDescription() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; QgsJoinByNearestAlgorithm *createInstance() const override SIP_FACTORY; protected: diff --git a/src/analysis/processing/qgsalgorithmjoinwithlines.cpp b/src/analysis/processing/qgsalgorithmjoinwithlines.cpp index 642d8c68dc7c..ff015b15c606 100644 --- a/src/analysis/processing/qgsalgorithmjoinwithlines.cpp +++ b/src/analysis/processing/qgsalgorithmjoinwithlines.cpp @@ -102,6 +102,11 @@ QString QgsJoinWithLinesAlgorithm::shortDescription() const return QObject::tr( "Creates lines joining two point layers, based on a common attribute value." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsJoinWithLinesAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey; +} + QgsJoinWithLinesAlgorithm *QgsJoinWithLinesAlgorithm::createInstance() const { return new QgsJoinWithLinesAlgorithm(); diff --git a/src/analysis/processing/qgsalgorithmjoinwithlines.h b/src/analysis/processing/qgsalgorithmjoinwithlines.h index 4f78e9b85b7e..c7ae14efbea3 100644 --- a/src/analysis/processing/qgsalgorithmjoinwithlines.h +++ b/src/analysis/processing/qgsalgorithmjoinwithlines.h @@ -42,6 +42,7 @@ class QgsJoinWithLinesAlgorithm : public QgsProcessingAlgorithm QString groupId() const override; QString shortHelpString() const override; QString shortDescription() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; QgsJoinWithLinesAlgorithm *createInstance() const override SIP_FACTORY; protected: diff --git a/src/analysis/processing/qgsalgorithmlineintersection.cpp b/src/analysis/processing/qgsalgorithmlineintersection.cpp index 8ec194b70528..7b03883eafd4 100644 --- a/src/analysis/processing/qgsalgorithmlineintersection.cpp +++ b/src/analysis/processing/qgsalgorithmlineintersection.cpp @@ -76,6 +76,11 @@ QString QgsLineIntersectionAlgorithm::shortHelpString() const return QObject::tr( "This algorithm creates point features where the lines in the Intersect layer intersect the lines in the Input layer." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsLineIntersectionAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey; +} + QgsLineIntersectionAlgorithm *QgsLineIntersectionAlgorithm::createInstance() const { return new QgsLineIntersectionAlgorithm(); diff --git a/src/analysis/processing/qgsalgorithmlineintersection.h b/src/analysis/processing/qgsalgorithmlineintersection.h index f7b386e01f35..2819b2b135b4 100644 --- a/src/analysis/processing/qgsalgorithmlineintersection.h +++ b/src/analysis/processing/qgsalgorithmlineintersection.h @@ -44,6 +44,7 @@ class QgsLineIntersectionAlgorithm : public QgsProcessingAlgorithm QString group() const override; QString groupId() const override; QString shortHelpString() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; QgsLineIntersectionAlgorithm *createInstance() const override SIP_FACTORY; protected: diff --git a/src/analysis/processing/qgsalgorithmmergevector.cpp b/src/analysis/processing/qgsalgorithmmergevector.cpp index 1be37b84eb13..4392c85ef869 100644 --- a/src/analysis/processing/qgsalgorithmmergevector.cpp +++ b/src/analysis/processing/qgsalgorithmmergevector.cpp @@ -69,6 +69,11 @@ QString QgsMergeVectorAlgorithm::shortHelpString() const "taken from the first input layer. All layers will all be reprojected to match this CRS." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsMergeVectorAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey; +} + QgsMergeVectorAlgorithm *QgsMergeVectorAlgorithm::createInstance() const { return new QgsMergeVectorAlgorithm(); diff --git a/src/analysis/processing/qgsalgorithmmergevector.h b/src/analysis/processing/qgsalgorithmmergevector.h index 5e22ad78b85b..e7aa31a9abef 100644 --- a/src/analysis/processing/qgsalgorithmmergevector.h +++ b/src/analysis/processing/qgsalgorithmmergevector.h @@ -45,6 +45,7 @@ class QgsMergeVectorAlgorithm : public QgsProcessingAlgorithm QString groupId() const override; QString shortDescription() const override; QString shortHelpString() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; QgsMergeVectorAlgorithm *createInstance() const override SIP_FACTORY; protected: diff --git a/src/analysis/processing/qgsalgorithmmultiintersection.cpp b/src/analysis/processing/qgsalgorithmmultiintersection.cpp index 0a87b96c9607..f34a0d8b0945 100644 --- a/src/analysis/processing/qgsalgorithmmultiintersection.cpp +++ b/src/analysis/processing/qgsalgorithmmultiintersection.cpp @@ -55,6 +55,11 @@ QString QgsMultiIntersectionAlgorithm::shortHelpString() const "from both the Input and Overlay layers." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsMultiIntersectionAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey; +} + QgsProcessingAlgorithm *QgsMultiIntersectionAlgorithm::createInstance() const { return new QgsMultiIntersectionAlgorithm(); diff --git a/src/analysis/processing/qgsalgorithmmultiintersection.h b/src/analysis/processing/qgsalgorithmmultiintersection.h index 4664d87bfe67..5c6978e5137b 100644 --- a/src/analysis/processing/qgsalgorithmmultiintersection.h +++ b/src/analysis/processing/qgsalgorithmmultiintersection.h @@ -37,6 +37,7 @@ class QgsMultiIntersectionAlgorithm : public QgsProcessingAlgorithm QString group() const override; QString groupId() const override; QString shortHelpString() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; protected: QgsProcessingAlgorithm *createInstance() const override; diff --git a/src/analysis/processing/qgsalgorithmmultiparttosinglepart.cpp b/src/analysis/processing/qgsalgorithmmultiparttosinglepart.cpp index 6b9ac8af5640..384184930ce1 100644 --- a/src/analysis/processing/qgsalgorithmmultiparttosinglepart.cpp +++ b/src/analysis/processing/qgsalgorithmmultiparttosinglepart.cpp @@ -62,6 +62,11 @@ QString QgsMultipartToSinglepartAlgorithm::shortHelpString() const "contain, and the same attributes are used for each of them." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsMultipartToSinglepartAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey; +} + QgsMultipartToSinglepartAlgorithm *QgsMultipartToSinglepartAlgorithm::createInstance() const { return new QgsMultipartToSinglepartAlgorithm(); diff --git a/src/analysis/processing/qgsalgorithmmultiparttosinglepart.h b/src/analysis/processing/qgsalgorithmmultiparttosinglepart.h index c521a2c857b7..010421a3affc 100644 --- a/src/analysis/processing/qgsalgorithmmultiparttosinglepart.h +++ b/src/analysis/processing/qgsalgorithmmultiparttosinglepart.h @@ -45,6 +45,7 @@ class QgsMultipartToSinglepartAlgorithm : public QgsProcessingFeatureBasedAlgori QString group() const override; QString groupId() const override; QString shortHelpString() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; QgsMultipartToSinglepartAlgorithm *createInstance() const override SIP_FACTORY; protected: diff --git a/src/analysis/processing/qgsalgorithmmultiringconstantbuffer.cpp b/src/analysis/processing/qgsalgorithmmultiringconstantbuffer.cpp index dced13d73f9f..e7859a2ac323 100644 --- a/src/analysis/processing/qgsalgorithmmultiringconstantbuffer.cpp +++ b/src/analysis/processing/qgsalgorithmmultiringconstantbuffer.cpp @@ -55,6 +55,11 @@ QString QgsMultiRingConstantBufferAlgorithm::shortHelpString() const return QObject::tr( "This algorithm computes multi-ring ('donuts') buffer for all the features in an input layer, using a fixed or dynamic distance and rings number." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsMultiRingConstantBufferAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey; +} + QgsMultiRingConstantBufferAlgorithm *QgsMultiRingConstantBufferAlgorithm::createInstance() const { return new QgsMultiRingConstantBufferAlgorithm(); diff --git a/src/analysis/processing/qgsalgorithmmultiringconstantbuffer.h b/src/analysis/processing/qgsalgorithmmultiringconstantbuffer.h index e41c2541eaf2..6df350bec1f5 100644 --- a/src/analysis/processing/qgsalgorithmmultiringconstantbuffer.h +++ b/src/analysis/processing/qgsalgorithmmultiringconstantbuffer.h @@ -40,6 +40,7 @@ class QgsMultiRingConstantBufferAlgorithm : public QgsProcessingFeatureBasedAlgo QString group() const override; QString groupId() const override; QString shortHelpString() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; QgsMultiRingConstantBufferAlgorithm *createInstance() const override SIP_FACTORY; void initParameters( const QVariantMap &configuration = QVariantMap() ) override; bool supportInPlaceEdit( const QgsMapLayer *layer ) const override; diff --git a/src/analysis/processing/qgsalgorithmmultiunion.cpp b/src/analysis/processing/qgsalgorithmmultiunion.cpp index 2f7cb257b7cb..d653569fb7d3 100644 --- a/src/analysis/processing/qgsalgorithmmultiunion.cpp +++ b/src/analysis/processing/qgsalgorithmmultiunion.cpp @@ -60,6 +60,11 @@ QString QgsMultiUnionAlgorithm::shortHelpString() const "for non-overlapping features, and attribute values from both layers for overlapping features." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsMultiUnionAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey; +} + QgsProcessingAlgorithm *QgsMultiUnionAlgorithm::createInstance() const { return new QgsMultiUnionAlgorithm(); diff --git a/src/analysis/processing/qgsalgorithmmultiunion.h b/src/analysis/processing/qgsalgorithmmultiunion.h index dd555331cc8b..2b80b207da01 100644 --- a/src/analysis/processing/qgsalgorithmmultiunion.h +++ b/src/analysis/processing/qgsalgorithmmultiunion.h @@ -37,6 +37,7 @@ class QgsMultiUnionAlgorithm : public QgsProcessingAlgorithm QString group() const override; QString groupId() const override; QString shortHelpString() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; protected: QgsProcessingAlgorithm *createInstance() const override; diff --git a/src/analysis/processing/qgsalgorithmpixelcentroidsfrompolygons.cpp b/src/analysis/processing/qgsalgorithmpixelcentroidsfrompolygons.cpp index 63eaeb6fee78..bd773bcfc62b 100644 --- a/src/analysis/processing/qgsalgorithmpixelcentroidsfrompolygons.cpp +++ b/src/analysis/processing/qgsalgorithmpixelcentroidsfrompolygons.cpp @@ -52,6 +52,11 @@ QString QgsPixelCentroidsFromPolygonsAlgorithm::shortHelpString() const "for further raster sampling." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsPixelCentroidsFromPolygonsAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey; +} + QgsPixelCentroidsFromPolygonsAlgorithm *QgsPixelCentroidsFromPolygonsAlgorithm::createInstance() const { return new QgsPixelCentroidsFromPolygonsAlgorithm(); diff --git a/src/analysis/processing/qgsalgorithmpixelcentroidsfrompolygons.h b/src/analysis/processing/qgsalgorithmpixelcentroidsfrompolygons.h index ae0bd017f39c..32ffa0f15b5f 100644 --- a/src/analysis/processing/qgsalgorithmpixelcentroidsfrompolygons.h +++ b/src/analysis/processing/qgsalgorithmpixelcentroidsfrompolygons.h @@ -40,6 +40,7 @@ class QgsPixelCentroidsFromPolygonsAlgorithm : public QgsProcessingAlgorithm QString group() const override; QString groupId() const override; QString shortHelpString() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; void initAlgorithm( const QVariantMap &configuration = QVariantMap() ) override; QgsPixelCentroidsFromPolygonsAlgorithm *createInstance() const override SIP_FACTORY; diff --git a/src/analysis/processing/qgsalgorithmpointonsurface.cpp b/src/analysis/processing/qgsalgorithmpointonsurface.cpp index 9f095cde62f7..dc7732acd37f 100644 --- a/src/analysis/processing/qgsalgorithmpointonsurface.cpp +++ b/src/analysis/processing/qgsalgorithmpointonsurface.cpp @@ -63,6 +63,11 @@ QString QgsPointOnSurfaceAlgorithm::shortHelpString() const return QObject::tr( "Returns a point guaranteed to lie on the surface of a geometry." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsPointOnSurfaceAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKeyInSomeScenarios; +} + QgsPointOnSurfaceAlgorithm *QgsPointOnSurfaceAlgorithm::createInstance() const { return new QgsPointOnSurfaceAlgorithm(); diff --git a/src/analysis/processing/qgsalgorithmpointonsurface.h b/src/analysis/processing/qgsalgorithmpointonsurface.h index aa047f1248fb..1c04ea995809 100644 --- a/src/analysis/processing/qgsalgorithmpointonsurface.h +++ b/src/analysis/processing/qgsalgorithmpointonsurface.h @@ -43,6 +43,7 @@ class QgsPointOnSurfaceAlgorithm : public QgsProcessingFeatureBasedAlgorithm QString group() const override; QString groupId() const override; QString shortHelpString() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; QgsPointOnSurfaceAlgorithm *createInstance() const override SIP_FACTORY; void initParameters( const QVariantMap &configuration = QVariantMap() ) override; diff --git a/src/analysis/processing/qgsalgorithmpointsalonggeometry.cpp b/src/analysis/processing/qgsalgorithmpointsalonggeometry.cpp index eeb4e0637492..3ac6726a76ee 100644 --- a/src/analysis/processing/qgsalgorithmpointsalonggeometry.cpp +++ b/src/analysis/processing/qgsalgorithmpointsalonggeometry.cpp @@ -66,6 +66,11 @@ QString QgsPointsAlongGeometryAlgorithm::shortDescription() const return QObject::tr( "Creates regularly spaced points along line features." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsPointsAlongGeometryAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey; +} + QList QgsPointsAlongGeometryAlgorithm::inputLayerTypes() const { return QList() << static_cast< int >( Qgis::ProcessingSourceType::VectorLine ) << static_cast< int >( Qgis::ProcessingSourceType::VectorPolygon ); diff --git a/src/analysis/processing/qgsalgorithmpointsalonggeometry.h b/src/analysis/processing/qgsalgorithmpointsalonggeometry.h index e77843101e09..e80291896d82 100644 --- a/src/analysis/processing/qgsalgorithmpointsalonggeometry.h +++ b/src/analysis/processing/qgsalgorithmpointsalonggeometry.h @@ -41,6 +41,7 @@ class QgsPointsAlongGeometryAlgorithm : public QgsProcessingFeatureBasedAlgorith QString groupId() const override; QString shortHelpString() const override; QString shortDescription() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; QList inputLayerTypes() const override; Qgis::ProcessingSourceType outputLayerType() const override; Qgis::WkbType outputWkbType( Qgis::WkbType inputWkbType ) const override; diff --git a/src/analysis/processing/qgsalgorithmpointslayerfromtable.cpp b/src/analysis/processing/qgsalgorithmpointslayerfromtable.cpp index d4d67ad8eb68..c02c407859c1 100644 --- a/src/analysis/processing/qgsalgorithmpointslayerfromtable.cpp +++ b/src/analysis/processing/qgsalgorithmpointslayerfromtable.cpp @@ -56,6 +56,11 @@ QString QgsPointsLayerFromTableAlgorithm::shortHelpString() const "the resulting layer will be the input table." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsPointsLayerFromTableAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey; +} + QgsPointsLayerFromTableAlgorithm *QgsPointsLayerFromTableAlgorithm::createInstance() const { return new QgsPointsLayerFromTableAlgorithm(); diff --git a/src/analysis/processing/qgsalgorithmpointslayerfromtable.h b/src/analysis/processing/qgsalgorithmpointslayerfromtable.h index 695649d58261..fb3392734c14 100644 --- a/src/analysis/processing/qgsalgorithmpointslayerfromtable.h +++ b/src/analysis/processing/qgsalgorithmpointslayerfromtable.h @@ -42,6 +42,7 @@ class QgsPointsLayerFromTableAlgorithm : public QgsProcessingAlgorithm QString group() const override; QString groupId() const override; QString shortHelpString() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; QgsPointsLayerFromTableAlgorithm *createInstance() const override SIP_FACTORY; protected: diff --git a/src/analysis/processing/qgsalgorithmrandomextract.cpp b/src/analysis/processing/qgsalgorithmrandomextract.cpp index 845be5aab2c0..2834c5c9fccd 100644 --- a/src/analysis/processing/qgsalgorithmrandomextract.cpp +++ b/src/analysis/processing/qgsalgorithmrandomextract.cpp @@ -54,6 +54,11 @@ QString QgsRandomExtractAlgorithm::shortHelpString() const "of features in the subset." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsRandomExtractAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey; +} + QgsRandomExtractAlgorithm *QgsRandomExtractAlgorithm::createInstance() const { return new QgsRandomExtractAlgorithm(); diff --git a/src/analysis/processing/qgsalgorithmrandomextract.h b/src/analysis/processing/qgsalgorithmrandomextract.h index 440a8c31a284..64e2fc496114 100644 --- a/src/analysis/processing/qgsalgorithmrandomextract.h +++ b/src/analysis/processing/qgsalgorithmrandomextract.h @@ -40,6 +40,7 @@ class QgsRandomExtractAlgorithm : public QgsProcessingAlgorithm QString group() const override; QString groupId() const override; QString shortHelpString() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; void initAlgorithm( const QVariantMap &configuration = QVariantMap() ) override; QgsRandomExtractAlgorithm *createInstance() const override SIP_FACTORY; diff --git a/src/analysis/processing/qgsalgorithmshortestpathpointtolayer.cpp b/src/analysis/processing/qgsalgorithmshortestpathpointtolayer.cpp index dc2662bbca83..c62b580da099 100644 --- a/src/analysis/processing/qgsalgorithmshortestpathpointtolayer.cpp +++ b/src/analysis/processing/qgsalgorithmshortestpathpointtolayer.cpp @@ -43,6 +43,11 @@ QString QgsShortestPathPointToLayerAlgorithm::shortHelpString() const return QObject::tr( "This algorithm computes optimal (shortest or fastest) route between given start point and multiple end points defined by point vector layer." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsShortestPathPointToLayerAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey; +} + QgsShortestPathPointToLayerAlgorithm *QgsShortestPathPointToLayerAlgorithm::createInstance() const { return new QgsShortestPathPointToLayerAlgorithm(); diff --git a/src/analysis/processing/qgsalgorithmshortestpathpointtolayer.h b/src/analysis/processing/qgsalgorithmshortestpathpointtolayer.h index 270c540da7f9..39ad3c75159e 100644 --- a/src/analysis/processing/qgsalgorithmshortestpathpointtolayer.h +++ b/src/analysis/processing/qgsalgorithmshortestpathpointtolayer.h @@ -39,6 +39,7 @@ class QgsShortestPathPointToLayerAlgorithm : public QgsNetworkAnalysisAlgorithmB QString displayName() const override; QStringList tags() const override; QString shortHelpString() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; QgsShortestPathPointToLayerAlgorithm *createInstance() const override SIP_FACTORY; protected: diff --git a/src/analysis/processing/qgsalgorithmsplitfeaturesbyattributecharacter.cpp b/src/analysis/processing/qgsalgorithmsplitfeaturesbyattributecharacter.cpp index ea582b8460d2..ffa7d28b762d 100644 --- a/src/analysis/processing/qgsalgorithmsplitfeaturesbyattributecharacter.cpp +++ b/src/analysis/processing/qgsalgorithmsplitfeaturesbyattributecharacter.cpp @@ -64,6 +64,11 @@ QString QgsSplitFeaturesByAttributeCharacterAlgorithm::shortDescription() const return QObject::tr( "Splits features into multiple output features by splitting a field by a character." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsSplitFeaturesByAttributeCharacterAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey; +} + QList QgsSplitFeaturesByAttributeCharacterAlgorithm::inputLayerTypes() const { return QList() << static_cast< int >( Qgis::ProcessingSourceType::Vector ); diff --git a/src/analysis/processing/qgsalgorithmsplitfeaturesbyattributecharacter.h b/src/analysis/processing/qgsalgorithmsplitfeaturesbyattributecharacter.h index 99d5f81a8246..a9e2beabd5a8 100644 --- a/src/analysis/processing/qgsalgorithmsplitfeaturesbyattributecharacter.h +++ b/src/analysis/processing/qgsalgorithmsplitfeaturesbyattributecharacter.h @@ -43,6 +43,7 @@ class QgsSplitFeaturesByAttributeCharacterAlgorithm : public QgsProcessingFeatur QString groupId() const override; QString shortHelpString() const override; QString shortDescription() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; QList inputLayerTypes() const override; void initParameters( const QVariantMap &configuration = QVariantMap() ) override; Qgis::ProcessingSourceType outputLayerType() const override; diff --git a/src/analysis/processing/qgsalgorithmsplitlinesbylength.cpp b/src/analysis/processing/qgsalgorithmsplitlinesbylength.cpp index 5ac819800ed0..c43fbcc3f005 100644 --- a/src/analysis/processing/qgsalgorithmsplitlinesbylength.cpp +++ b/src/analysis/processing/qgsalgorithmsplitlinesbylength.cpp @@ -61,6 +61,11 @@ QString QgsSplitLinesByLengthAlgorithm::shortDescription() const return QObject::tr( "Splits lines into parts which are no longer than a specified length." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsSplitLinesByLengthAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey; +} + QList QgsSplitLinesByLengthAlgorithm::inputLayerTypes() const { return QList() << static_cast< int >( Qgis::ProcessingSourceType::VectorLine ); diff --git a/src/analysis/processing/qgsalgorithmsplitlinesbylength.h b/src/analysis/processing/qgsalgorithmsplitlinesbylength.h index aa77c72e9753..7af37bcdf3c8 100644 --- a/src/analysis/processing/qgsalgorithmsplitlinesbylength.h +++ b/src/analysis/processing/qgsalgorithmsplitlinesbylength.h @@ -41,6 +41,7 @@ class QgsSplitLinesByLengthAlgorithm : public QgsProcessingFeatureBasedAlgorithm QString groupId() const override; QString shortHelpString() const override; QString shortDescription() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; QList inputLayerTypes() const override; Qgis::ProcessingSourceType outputLayerType() const override; QgsSplitLinesByLengthAlgorithm *createInstance() const override SIP_FACTORY; diff --git a/src/analysis/processing/qgsalgorithmsplitwithlines.cpp b/src/analysis/processing/qgsalgorithmsplitwithlines.cpp index 36468ceb91da..6be24046d178 100644 --- a/src/analysis/processing/qgsalgorithmsplitwithlines.cpp +++ b/src/analysis/processing/qgsalgorithmsplitwithlines.cpp @@ -62,6 +62,11 @@ QString QgsSplitWithLinesAlgorithm::shortHelpString() const "Intersection between geometries in both layers are considered as split points." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsSplitWithLinesAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey; +} + QgsSplitWithLinesAlgorithm *QgsSplitWithLinesAlgorithm::createInstance() const { return new QgsSplitWithLinesAlgorithm(); diff --git a/src/analysis/processing/qgsalgorithmsplitwithlines.h b/src/analysis/processing/qgsalgorithmsplitwithlines.h index d8ca6015a3c0..7addbf842abf 100644 --- a/src/analysis/processing/qgsalgorithmsplitwithlines.h +++ b/src/analysis/processing/qgsalgorithmsplitwithlines.h @@ -42,6 +42,7 @@ class QgsSplitWithLinesAlgorithm : public QgsProcessingAlgorithm QString group() const override; QString groupId() const override; QString shortHelpString() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; QgsSplitWithLinesAlgorithm *createInstance() const override SIP_FACTORY; Qgis::ProcessingAlgorithmFlags flags() const override; bool supportInPlaceEdit( const QgsMapLayer *layer ) const override; diff --git a/src/analysis/processing/qgsalgorithmsymmetricaldifference.cpp b/src/analysis/processing/qgsalgorithmsymmetricaldifference.cpp index 3661e96ef5dc..765398f786ff 100644 --- a/src/analysis/processing/qgsalgorithmsymmetricaldifference.cpp +++ b/src/analysis/processing/qgsalgorithmsymmetricaldifference.cpp @@ -51,6 +51,11 @@ QString QgsSymmetricalDifferenceAlgorithm::shortHelpString() const "contains original attributes from both the Input and Difference layers." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsSymmetricalDifferenceAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey; +} + QgsProcessingAlgorithm *QgsSymmetricalDifferenceAlgorithm::createInstance() const { return new QgsSymmetricalDifferenceAlgorithm(); diff --git a/src/analysis/processing/qgsalgorithmsymmetricaldifference.h b/src/analysis/processing/qgsalgorithmsymmetricaldifference.h index 08aed860d3e1..d97d28bdf392 100644 --- a/src/analysis/processing/qgsalgorithmsymmetricaldifference.h +++ b/src/analysis/processing/qgsalgorithmsymmetricaldifference.h @@ -35,6 +35,7 @@ class QgsSymmetricalDifferenceAlgorithm : public QgsProcessingAlgorithm QString group() const override; QString groupId() const override; QString shortHelpString() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; protected: QgsProcessingAlgorithm *createInstance() const override; diff --git a/src/analysis/processing/qgsalgorithmtransect.cpp b/src/analysis/processing/qgsalgorithmtransect.cpp index cf6a35b83467..500777c29498 100644 --- a/src/analysis/processing/qgsalgorithmtransect.cpp +++ b/src/analysis/processing/qgsalgorithmtransect.cpp @@ -85,6 +85,11 @@ QString QgsTransectAlgorithm::shortHelpString() const } +Qgis::ProcessingAlgorithmDocumentationFlags QgsTransectAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey; +} + QgsTransectAlgorithm *QgsTransectAlgorithm::createInstance() const { return new QgsTransectAlgorithm(); diff --git a/src/analysis/processing/qgsalgorithmtransect.h b/src/analysis/processing/qgsalgorithmtransect.h index 62e545cbf763..aad6c23e3a3c 100644 --- a/src/analysis/processing/qgsalgorithmtransect.h +++ b/src/analysis/processing/qgsalgorithmtransect.h @@ -50,6 +50,7 @@ class QgsTransectAlgorithm : public QgsProcessingAlgorithm QString group() const override; QString groupId() const override; QString shortHelpString() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; QgsTransectAlgorithm *createInstance() const override SIP_FACTORY; protected: diff --git a/src/analysis/processing/qgsalgorithmunion.cpp b/src/analysis/processing/qgsalgorithmunion.cpp index 3438df0dd534..ac105f537efc 100644 --- a/src/analysis/processing/qgsalgorithmunion.cpp +++ b/src/analysis/processing/qgsalgorithmunion.cpp @@ -52,6 +52,11 @@ QString QgsUnionAlgorithm::shortHelpString() const "for non-overlapping features, and attribute values from both layers for overlapping features." ); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsUnionAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey; +} + QgsProcessingAlgorithm *QgsUnionAlgorithm::createInstance() const { return new QgsUnionAlgorithm(); diff --git a/src/analysis/processing/qgsalgorithmunion.h b/src/analysis/processing/qgsalgorithmunion.h index ec79281de099..6b29225f053a 100644 --- a/src/analysis/processing/qgsalgorithmunion.h +++ b/src/analysis/processing/qgsalgorithmunion.h @@ -35,6 +35,7 @@ class QgsUnionAlgorithm : public QgsProcessingAlgorithm QString group() const override; QString groupId() const override; QString shortHelpString() const override; + Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const override; protected: QgsProcessingAlgorithm *createInstance() const override; diff --git a/src/core/processing/qgsprocessing.cpp b/src/core/processing/qgsprocessing.cpp index cc3c2c055c7f..72ded9b09452 100644 --- a/src/core/processing/qgsprocessing.cpp +++ b/src/core/processing/qgsprocessing.cpp @@ -26,3 +26,15 @@ const QgsSettingsEntryString *QgsProcessing::settingsDefaultOutputVectorLayerExt const QgsSettingsEntryString *QgsProcessing::settingsDefaultOutputRasterLayerExt = new QgsSettingsEntryString( QStringLiteral( "default-output-raster-ext" ), sTreeConfiguration, QString(), QObject::tr( "Default output raster layer extension" ) ); const QString QgsProcessing::TEMPORARY_OUTPUT = QStringLiteral( "TEMPORARY_OUTPUT" ); + +QString QgsProcessing::documentationFlagToString( Qgis::ProcessingAlgorithmDocumentationFlag flag ) +{ + switch ( flag ) + { + case Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey: + return QObject::tr( "This algorithm drops existing primary keys or FID values and regenerates them in output layers." ); + case Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKeyInSomeScenarios: + return QObject::tr( "This algorithm may drop existing primary keys or FID values and regenerate them in output layers, depending on the input parameters." ); + } + BUILTIN_UNREACHABLE +} diff --git a/src/core/processing/qgsprocessing.h b/src/core/processing/qgsprocessing.h index d9fe89e431d3..31bc73dd7830 100644 --- a/src/core/processing/qgsprocessing.h +++ b/src/core/processing/qgsprocessing.h @@ -102,6 +102,13 @@ class CORE_EXPORT QgsProcessing return QString(); } + /** + * Converts a documentation \a flag to a translated string. + * + * \since QGIS 3.40 + */ + static QString documentationFlagToString( Qgis::ProcessingAlgorithmDocumentationFlag flag ); + /** * Constant used to indicate that a Processing algorithm output should be a temporary layer/file. * diff --git a/src/core/processing/qgsprocessingalgorithm.cpp b/src/core/processing/qgsprocessingalgorithm.cpp index 27def16c2928..a5f8f19006c4 100644 --- a/src/core/processing/qgsprocessingalgorithm.cpp +++ b/src/core/processing/qgsprocessingalgorithm.cpp @@ -77,6 +77,11 @@ QString QgsProcessingAlgorithm::helpUrl() const return QString(); } +Qgis::ProcessingAlgorithmDocumentationFlags QgsProcessingAlgorithm::documentationFlags() const +{ + return Qgis::ProcessingAlgorithmDocumentationFlags(); +} + QIcon QgsProcessingAlgorithm::icon() const { return QgsApplication::getThemeIcon( "/processingAlgorithm.svg" ); diff --git a/src/core/processing/qgsprocessingalgorithm.h b/src/core/processing/qgsprocessingalgorithm.h index 77fc871d2517..80d060042a4d 100644 --- a/src/core/processing/qgsprocessingalgorithm.h +++ b/src/core/processing/qgsprocessingalgorithm.h @@ -181,6 +181,15 @@ class CORE_EXPORT QgsProcessingAlgorithm */ virtual QString helpUrl() const SIP_HOLDGIL; + /** + * Returns the flags describing algorithm behavior for documentation purposes. + * + * The default is to return no flags. + * + * \since QGIS 3.40 + */ + virtual Qgis::ProcessingAlgorithmDocumentationFlags documentationFlags() const SIP_HOLDGIL; + /** * Returns an icon for the algorithm. * \see svgIconPath() diff --git a/src/core/qgis.h b/src/core/qgis.h index 25340220eb76..0bfcd74d1f8d 100644 --- a/src/core/qgis.h +++ b/src/core/qgis.h @@ -3076,6 +3076,26 @@ class CORE_EXPORT Qgis Q_DECLARE_FLAGS( ProcessingAlgorithmFlags, ProcessingAlgorithmFlag ) SIP_MONKEYPATCH_FLAGS_UNNEST( QgsProcessingAlgorithm, Flags ) Q_FLAG( ProcessingAlgorithmFlags ) + /** + * Flags describing algorithm behavior for documentation purposes. + * + * \since QGIS 3.40 + */ + enum class ProcessingAlgorithmDocumentationFlag : int SIP_ENUM_BASETYPE( IntFlag ) + { + RegeneratesPrimaryKey = 1 << 0, //!< Algorithm always drops any existing primary keys or FID values and regenerates them in outputs + RegeneratesPrimaryKeyInSomeScenarios = 1 << 1, //!< Algorithm may drop the existing primary keys or FID values in some scenarios, depending on algorithm inputs and parameters + }; + Q_ENUM( ProcessingAlgorithmDocumentationFlag ) + + /** + * Flags describing algorithm behavior for documentation purposes. + * + * \since QGIS 3.40 + */ + Q_DECLARE_FLAGS( ProcessingAlgorithmDocumentationFlags, ProcessingAlgorithmDocumentationFlag ) + Q_FLAG( ProcessingAlgorithmDocumentationFlags ) + /** * Property availability, used for QgsProcessingAlgorithm::VectorProperties * in order to determine if properties are available or not. @@ -5373,6 +5393,7 @@ Q_DECLARE_OPERATORS_FOR_FLAGS( Qgis::RasterInterfaceCapabilities ) Q_DECLARE_OPERATORS_FOR_FLAGS( Qgis::RasterProviderCapabilities ) Q_DECLARE_OPERATORS_FOR_FLAGS( Qgis::ProcessingProviderFlags ) Q_DECLARE_OPERATORS_FOR_FLAGS( Qgis::ProcessingAlgorithmFlags ) +Q_DECLARE_OPERATORS_FOR_FLAGS( Qgis::ProcessingAlgorithmDocumentationFlags ) Q_DECLARE_OPERATORS_FOR_FLAGS( Qgis::ProcessingFeatureSourceFlags ) Q_DECLARE_OPERATORS_FOR_FLAGS( Qgis::ProcessingParameterTypeFlags ) Q_DECLARE_OPERATORS_FOR_FLAGS( Qgis::ProcessingParameterFlags ) diff --git a/src/gui/processing/qgsprocessingalgorithmdialogbase.cpp b/src/gui/processing/qgsprocessingalgorithmdialogbase.cpp index 44f671380465..d81b6db56481 100644 --- a/src/gui/processing/qgsprocessingalgorithmdialogbase.cpp +++ b/src/gui/processing/qgsprocessingalgorithmdialogbase.cpp @@ -350,7 +350,7 @@ void QgsProcessingAlgorithmDialogBase::setAlgorithm( QgsProcessingAlgorithm *alg textShortHelp->document()->setDefaultStyleSheet( QStringLiteral( ".summary { margin-left: 10px; margin-right: 10px; }\n" "h2 { color: #555555; padding-bottom: 15px; }\n" "a { text - decoration: none; color: #3498db; font-weight: bold; }\n" - "p { color: #666666; }\n" + "p, ul, li { color: #666666; }\n" "b { color: #333333; }\n" "dl dd { margin - bottom: 5px; }" ) ); textShortHelp->setHtml( algHelp ); @@ -763,6 +763,7 @@ void QgsProcessingAlgorithmDialogBase::setProgressText( const QString &text ) QString QgsProcessingAlgorithmDialogBase::formatHelp( QgsProcessingAlgorithm *algorithm ) { + QString result; const QString text = algorithm->shortHelpString(); if ( !text.isEmpty() ) { @@ -772,14 +773,26 @@ QString QgsProcessingAlgorithmDialogBase::formatHelp( QgsProcessingAlgorithm *al { help += QStringLiteral( "

%1

" ).arg( paragraph ); } - return QStringLiteral( "

%1

%2" ).arg( algorithm->displayName(), help ); + result = QStringLiteral( "

%1

%2" ).arg( algorithm->displayName(), help ); } else if ( !algorithm->shortDescription().isEmpty() ) { - return QStringLiteral( "

%1

%2

" ).arg( algorithm->displayName(), algorithm->shortDescription() ); + result = QStringLiteral( "

%1

%2

" ).arg( algorithm->displayName(), algorithm->shortDescription() ); } - else - return QString(); + + if ( algorithm->documentationFlags() != Qgis::ProcessingAlgorithmDocumentationFlags() ) + { + QStringList flags; + for ( Qgis::ProcessingAlgorithmDocumentationFlag flag : qgsEnumList< Qgis::ProcessingAlgorithmDocumentationFlag>() ) + { + if ( algorithm->documentationFlags() & flag ) + { + flags << QgsProcessing::documentationFlagToString( flag ); + } + } + result += QStringLiteral( "
  • %1
" ).arg( flags.join( QStringLiteral( "
  • " ) ) ); + } + return result; } void QgsProcessingAlgorithmDialogBase::processEvents() diff --git a/src/process/qgsprocess.cpp b/src/process/qgsprocess.cpp index f0d54d42ccac..6ce28b973a07 100644 --- a/src/process/qgsprocess.cpp +++ b/src/process/qgsprocess.cpp @@ -869,6 +869,24 @@ int QgsProcessingExec::showAlgorithmHelp( const QString &inputId ) std::cout << alg->shortHelpString().toLocal8Bit().constData() << '\n'; } + if ( alg->documentationFlags() != Qgis::ProcessingAlgorithmDocumentationFlags() ) + { + std::cout << "\n----------------\n"; + std::cout << "Notes\n"; + std::cout << "----------------\n\n"; + + QStringList flags; + for ( Qgis::ProcessingAlgorithmDocumentationFlag flag : qgsEnumList< Qgis::ProcessingAlgorithmDocumentationFlag>() ) + { + if ( alg->documentationFlags() & flag ) + { + std::cout << " - " << QgsProcessing::documentationFlagToString( flag ).toUtf8().constData(); + } + } + + std::cout << "\n"; + } + std::cout << "\n----------------\n"; std::cout << "Arguments\n"; std::cout << "----------------\n\n"; @@ -1320,6 +1338,27 @@ void QgsProcessingExec::addAlgorithmInformation( QVariantMap &algorithmJson, con algorithmJson.insert( QStringLiteral( "requires_matching_crs" ), bool( algorithm->flags() & Qgis::ProcessingAlgorithmFlag::RequiresMatchingCrs ) ); algorithmJson.insert( QStringLiteral( "has_known_issues" ), bool( algorithm->flags() & Qgis::ProcessingAlgorithmFlag::KnownIssues ) ); algorithmJson.insert( QStringLiteral( "deprecated" ), bool( algorithm->flags() & Qgis::ProcessingAlgorithmFlag::Deprecated ) ); + + if ( algorithm->documentationFlags() != Qgis::ProcessingAlgorithmDocumentationFlags() ) + { + QStringList documentationFlags; + for ( Qgis::ProcessingAlgorithmDocumentationFlag flag : qgsEnumList< Qgis::ProcessingAlgorithmDocumentationFlag>() ) + { + if ( algorithm->documentationFlags() & flag ) + { + switch ( flag ) + { + case Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKey: + documentationFlags << QStringLiteral( "regenerates_primary_key" ); + break; + case Qgis::ProcessingAlgorithmDocumentationFlag::RegeneratesPrimaryKeyInSomeScenarios: + documentationFlags << QStringLiteral( "regenerates_primary_key_in_some_scenarios" ); + break; + } + algorithmJson.insert( QStringLiteral( "documentation_flags" ), documentationFlags ); + } + } + } } void QgsProcessingExec::addProviderInformation( QVariantMap &providerJson, QgsProcessingProvider *provider )