18 #ifndef QGSPROCESSINGCONTEXT_H 19 #define QGSPROCESSINGCONTEXT_H 21 #include "qgis_core.h" 49 Q_DECLARE_FLAGS( Flags,
Flag )
56 auto callback = [ = ](
const QgsFeature & feature )
59 mFeedback->reportError( QObject::tr(
"Encountered a transform error when reprojecting feature with id %1." ).arg( feature.id() ) );
61 mTransformErrorCallback = callback;
75 mFlags = other.mFlags;
76 mProject = other.mProject;
77 mTransformContext = other.mTransformContext;
78 mExpressionContext = other.mExpressionContext;
79 mInvalidGeometryCallback = other.mInvalidGeometryCallback;
80 mInvalidGeometryCheck = other.mInvalidGeometryCheck;
81 mTransformErrorCallback = other.mTransformErrorCallback;
82 mDefaultEncoding = other.mDefaultEncoding;
83 mFeedback = other.mFeedback;
90 QgsProcessingContext::Flags
flags()
const {
return mFlags; }
96 void setFlags( QgsProcessingContext::Flags flags ) { mFlags = flags; }
165 , outputName( outputName )
187 return mLayersToLoadOnCompletion;
197 mLayersToLoadOnCompletion = layers;
208 mLayersToLoadOnCompletion.insert( layer, details );
235 void setInvalidGeometryCallback( SIP_PYCALLABLE / AllowNone / );
237 Py_BEGIN_ALLOW_THREADS
239 sipCpp->setInvalidGeometryCallback( [a0](
const QgsFeature &arg )
242 Py_XDECREF( sipCallMethod( NULL, a0,
"D", &arg, sipType_QgsFeature, NULL ) );
269 void setTransformErrorCallback( SIP_PYCALLABLE / AllowNone / );
271 Py_BEGIN_ALLOW_THREADS
273 sipCpp->setTransformErrorCallback( [a0](
const QgsFeature &arg )
276 Py_XDECREF( sipCallMethod( NULL, a0,
"D", &arg, sipType_QgsFeature, NULL ) );
326 QThread *
thread() {
return tempLayerStore.thread(); }
336 Q_ASSERT_X( QThread::currentThread() ==
QgsProcessingContext::thread(),
"QgsProcessingContext::pushToThread",
"Cannot push context to another thread unless the current thread matches the existing context thread affinity" );
337 tempLayerStore.moveToThread( thread );
359 QgsMapLayer *getMapLayer(
const QString &identifier );
373 QgsProcessingContext::Flags mFlags =
nullptr;
374 QPointer< QgsProject > mProject;
380 std::function< void( const QgsFeature & ) > mInvalidGeometryCallback;
381 std::function< void( const QgsFeature & ) > mTransformErrorCallback;
382 QString mDefaultEncoding;
383 QMap< QString, LayerDetails > mLayersToLoadOnCompletion;
385 QPointer< QgsProcessingFeedback > mFeedback;
392 Q_DECLARE_OPERATORS_FOR_FLAGS( QgsProcessingContext::Flags )
394 #endif // QGSPROCESSINGPARAMETERS_H void setProject(QgsProject *project)
Sets the project in which the algorithm will be executed.
Base class for all map layer types.
Base class for providing feedback from a processing algorithm.
void setLayersToLoadOnCompletion(const QMap< QString, QgsProcessingContext::LayerDetails > &layers)
Sets the map of layers (by ID or datasource) to LayerDetails, to load into the canvas upon completion...
QMap< QString, QgsProcessingContext::LayerDetails > layersToLoadOnCompletion() const
Returns a map of layers (by ID or datasource) to LayerDetails, to load into the canvas upon completio...
void setInvalidGeometryCallback(const std::function< void(const QgsFeature &) > &callback)
Sets a callback function to use when encountering an invalid geometry and invalidGeometryCheck() is s...
QThread * thread()
Returns the thread in which the context lives.
void pushToThread(QThread *thread)
Pushes the thread affinity for the context (including all layers contained in the temporaryLayerStore...
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
InvalidGeometryCheck
Handling of features with invalid geometries.
QgsCoordinateTransformContext transformContext() const
Returns a copy of the project's coordinate transform context, which stores various information regard...
QgsProject * project() const
Returns the project in which the algorithm is being executed.
std::function< void(const QgsFeature &) > transformErrorCallback() const
Returns the callback function to use when encountering a transform error when iterating features...
QString outputName
Associated output name from algorithm which generated the layer.
QgsProcessingFeedback * feedback()
Returns the associated feedback object.
void setTransformErrorCallback(const std::function< void(const QgsFeature &) > &callback)
Sets a callback function to use when encountering a transform error when iterating features...
QgsMapLayerStore * temporaryLayerStore()
Returns a reference to the layer store used for storing temporary layers during algorithm execution...
QgsProcessingContext::Flags flags() const
Returns any flags set in the context.
void copyThreadSafeSettings(const QgsProcessingContext &other)
Copies all settings which are safe for use across different threads from other to this context...
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
QgsFeatureRequest::InvalidGeometryCheck invalidGeometryCheck() const
Returns the behavior used for checking invalid geometries in input layers.
void setExpressionContext(const QgsExpressionContext &context)
Sets the expression context.
const QgsExpressionContext & expressionContext() const
Returns the expression context.
void setDefaultEncoding(const QString &encoding)
Sets the default encoding to use for newly created files.
QgsCoordinateTransformContext transformContext() const
Returns the coordinate transform context.
Reads and writes project states.
QString name
Friendly name for layer, to use when loading layer into project.
LayerDetails(const QString &name, QgsProject *project, const QString &outputName=QString())
Constructor for LayerDetails.
No invalid geometry checking.
void setFeedback(QgsProcessingFeedback *feedback)
Sets an associated feedback object.
Contains information about the context in which a coordinate transform is executed.
QgsExpressionContext & expressionContext()
Returns the expression context.
void addLayerToLoadOnCompletion(const QString &layer, const QgsProcessingContext::LayerDetails &details)
Adds a layer to load (by ID or datasource) into the canvas upon completion of the algorithm or model...
QString defaultEncoding() const
Returns the default encoding to use for newly created files.
void setTransformContext(const QgsCoordinateTransformContext &context)
Sets the coordinate transform context.
Details for layers to load into projects.
void setFlags(QgsProcessingContext::Flags flags)
Sets flags for the context.
std::function< void(const QgsFeature &) > invalidGeometryCallback() const
Returns the callback function to use when encountering an invalid geometry and invalidGeometryCheck()...
A storage object for map layers, in which the layers are owned by the store and have their lifetime b...
Contains information about the context in which a processing algorithm is executed.
Flag
Flags that affect how processing algorithms are run.