diff --git a/python/core/processing/qgsprocessingcontext.sip b/python/core/processing/qgsprocessingcontext.sip index ec0240ce9f9..ffce3c11ea1 100644 --- a/python/core/processing/qgsprocessingcontext.sip +++ b/python/core/processing/qgsprocessingcontext.sip @@ -26,8 +26,28 @@ class QgsProcessingContext %End public: + enum Flag + { + UseSelection, + }; + typedef QFlags Flags; + + QgsProcessingContext(); + QgsProcessingContext::Flags flags() const; +%Docstring + Returns any flags set in the context. + \see setFlags() + :rtype: QgsProcessingContext.Flags +%End + + void setFlags( const QgsProcessingContext::Flags &flags ); +%Docstring + Sets ``flags`` for the context. + \see flags() +%End + QgsProject *project() const; %Docstring Returns the project in which the algorithm is being executed. @@ -58,6 +78,15 @@ class QgsProcessingContext + + +QFlags operator|(QgsProcessingContext::Flag f1, QFlags f2); + + + + + + /************************************************************************ * This file has been generated automatically from * * * @@ -65,4 +94,3 @@ class QgsProcessingContext * * * Do not edit manually ! Edit header and run scripts/sipify.pl again * ************************************************************************/ - diff --git a/python/plugins/processing/tools/general.py b/python/plugins/processing/tools/general.py index d75155ffaac..4103015e081 100644 --- a/python/plugins/processing/tools/general.py +++ b/python/plugins/processing/tools/general.py @@ -41,6 +41,7 @@ from qgis.core import (QgsApplication, from processing.core.Processing import Processing from processing.core.parameters import ParameterSelection from processing.gui.Postprocessing import handleAlgorithmResults +from processing.core.ProcessingConfig import ProcessingConfig def algorithmOptions(id): @@ -102,4 +103,9 @@ def createContext(): """ context = QgsProcessingContext() context.setProject(QgsProject.instance()) + + use_selection = ProcessingConfig.getSetting(ProcessingConfig.USE_SELECTED) + if use_selection: + context.setFlags(QgsProcessingContext.UseSelection) + return context diff --git a/src/core/processing/qgsprocessingcontext.h b/src/core/processing/qgsprocessingcontext.h index 872a83a402b..0e371ba1637 100644 --- a/src/core/processing/qgsprocessingcontext.h +++ b/src/core/processing/qgsprocessingcontext.h @@ -37,8 +37,27 @@ class CORE_EXPORT QgsProcessingContext { public: + //! Flags that affect how processing algorithms are run + enum Flag + { + UseSelection = 1 << 0, //!< Filter to selected features when running algorithms + }; + Q_DECLARE_FLAGS( Flags, Flag ) + QgsProcessingContext() = default; + /** + * Returns any flags set in the context. + * \see setFlags() + */ + QgsProcessingContext::Flags flags() const { return mFlags; } + + /** + * Sets \a flags for the context. + * \see flags() + */ + void setFlags( const QgsProcessingContext::Flags &flags ) { mFlags = flags; } + /** * Returns the project in which the algorithm is being executed. * \see setProject() @@ -63,12 +82,22 @@ class CORE_EXPORT QgsProcessingContext private: + QgsProcessingContext::Flags mFlags = 0; + QPointer< QgsProject > mProject; QgsExpressionContext mExpressionContext; }; + + + + + + +Q_DECLARE_OPERATORS_FOR_FLAGS( QgsProcessingContext::Flags ) + #endif // QGSPROCESSINGPARAMETERS_H