18#ifndef QGSPROCESSINGMODELALGORITHM_H
19#define QGSPROCESSINGMODELALGORITHM_H
45 QgsProcessingModelAlgorithm(
const QString &name = QString(),
const QString &group = QString(),
const QString &groupId = QString() );
47 void initAlgorithm(
const QVariantMap &configuration = QVariantMap() )
override;
50 QString
name()
const override;
52 QString
group()
const override;
53 QString
groupId()
const override;
54 QIcon
icon()
const override;
58 QString
helpUrl()
const override;
61 QString
asPythonCommand(
const QVariantMap ¶meters, QgsProcessingContext &context )
const override;
62 QgsExpressionContext
createExpressionContext(
const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeatureSource *source =
nullptr )
const override;
68 void setName(
const QString &name );
74 void setGroup(
const QString &group );
83 bool validate( QStringList &issues
SIP_OUT )
const;
92 QMap<QString, QgsProcessingModelChildAlgorithm> childAlgorithms()
const;
103 void setChildAlgorithms(
const QMap<QString, QgsProcessingModelChildAlgorithm> &childAlgorithms );
111 void setChildAlgorithm(
const QgsProcessingModelChildAlgorithm &
algorithm );
123 QString addChildAlgorithm( QgsProcessingModelChildAlgorithm &
algorithm );
131 QgsProcessingModelChildAlgorithm &childAlgorithm(
const QString &
id );
140 bool removeChildAlgorithm(
const QString &
id );
149 void deactivateChildAlgorithm(
const QString &
id );
157 bool activateChildAlgorithm(
const QString &
id );
169 QSet< QString > dependentChildAlgorithms(
const QString &childId,
const QString &conditionalBranch = QString() )
const;
176 QSet< QString > dependsOnChildAlgorithms(
const QString &childId )
const;
183 QList< QgsProcessingModelChildDependency > availableDependenciesForChildAlgorithm(
const QString &childId )
const;
194 bool validateChildAlgorithm(
const QString &childId, QStringList &issues
SIP_OUT )
const;
202 void addModelParameter( QgsProcessingParameterDefinition *definition
SIP_TRANSFER,
const QgsProcessingModelParameter &component );
210 void updateModelParameter( QgsProcessingParameterDefinition *definition
SIP_TRANSFER );
218 void removeModelParameter(
const QString &name );
227 void changeParameterName(
const QString &oldName,
const QString &newName );
234 bool childAlgorithmsDependOnParameter(
const QString &name )
const;
242 bool otherParametersDependOnParameter(
const QString &name )
const;
250 QMap<QString, QgsProcessingModelParameter> parameterComponents()
const;
260 void setParameterComponents(
const QMap<QString, QgsProcessingModelParameter> ¶meterComponents );
269 void setParameterComponent(
const QgsProcessingModelParameter &component );
278 QgsProcessingModelParameter ¶meterComponent(
const QString &name );
286 QList< QgsProcessingModelParameter > orderedParameters()
const;
297 void setParameterOrder(
const QStringList &order );
305 QList< QgsProcessingModelOutput > orderedOutputs()
const;
316 void setOutputOrder(
const QStringList &order );
324 QString outputGroup()
const;
332 void setOutputGroup(
const QString &group );
339 void updateDestinationParameters();
349 void addGroupBox(
const QgsProcessingModelGroupBox &groupBox );
357 QList< QgsProcessingModelGroupBox > groupBoxes()
const;
366 void removeGroupBox(
const QString &uuid );
372 bool toFile(
const QString &path )
const;
378 bool fromFile(
const QString &path );
387 QVariant toVariant()
const;
396 bool loadVariant(
const QVariant &variant );
403 QVariantMap &helpContent() {
return mHelpContent; }
410 SIP_SKIP QVariantMap helpContent()
const;
417 void setHelpContent(
const QVariantMap &contents );
423 QString sourceFilePath()
const;
429 void setSourceFilePath(
const QString &path );
439 bool modelNameMatchesFilePath()
const;
458 QList< QgsProcessingModelChildParameterSource > availableSourcesForChild(
const QString &childId,
const QgsProcessingParameterDefinition *param )
const;
470 QList< QgsProcessingModelChildParameterSource > availableSourcesForChild(
471 const QString &childId,
const QStringList ¶meterTypes = QStringList(),
const QStringList &outputTypes = QStringList(),
const QList< int > &dataTypes = QList< int >()
478 class CORE_EXPORT VariableDefinition
486 const QVariant &value = QVariant(),
487 const QgsProcessingModelChildParameterSource &source = QgsProcessingModelChildParameterSource::fromStaticValue( QVariant() ),
488 const QString &description = QString()
492 , description( description )
499 QgsProcessingModelChildParameterSource source;
518 QMap< QString, QgsProcessingModelAlgorithm::VariableDefinition > variablesForChildAlgorithm(
519 const QString &childId, QgsProcessingContext *context =
nullptr,
const QVariantMap &modelParameters = QVariantMap(),
const QVariantMap &results = QVariantMap()
526 QgsExpressionContextScope *createExpressionContextScopeForChildAlgorithm(
527 const QString &childId, QgsProcessingContext &context,
const QVariantMap &modelParameters = QVariantMap(),
const QVariantMap &results = QVariantMap()
539 QVariantMap variables() const;
550 void setVariables( const QVariantMap &variables );
563 QVariantMap designerParameterValues() const;
576 void setDesignerParameterValues( const QVariantMap &values ) { mDesignerParameterValues = values; }
583 const QgsProcessingParameterDefinition *modelParameterFromChildIdAndOutputName(
const QString &childId,
const QString &childOutputName )
const;
592 static QString safeName(
const QString &name,
bool capitalize =
false );
597 enum class InternalVersion
602 Q_ENUM( InternalVersion )
609 QVariantMap processAlgorithm( const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback *feedback ) override
SIP_THROW( QgsProcessingException );
612 InternalVersion mInternalVersion = InternalVersion::Version2;
616 QString mModelGroupId;
618 QMap< QString, QgsProcessingModelChildAlgorithm > mChildAlgorithms;
621 QMap< QString, QgsProcessingModelParameter > mParameterComponents;
623 QVariantMap mHelpContent;
628 QVariantMap mResults;
630 QVariantMap mVariables;
632 QVariantMap mDesignerParameterValues;
634 QMap< QString, QgsProcessingModelGroupBox > mGroupBoxes;
636 QStringList mParameterOrder;
637 QStringList mOutputOrder;
638 QString mOutputGroup;
640 void dependsOnChildAlgorithmsRecursive( const QString &childId, QSet<QString> &depends ) const;
641 void dependentChildAlgorithmsRecursive( const QString &childId, QSet<QString> &depends, const QString &branch ) const;
643 QVariantMap parametersForChildAlgorithm(
644 const QgsProcessingModelChildAlgorithm &child,
645 const QVariantMap &modelParameters,
646 const QVariantMap &results,
647 const QgsExpressionContext &expressionContext,
649 const QgsProcessingContext *context =
nullptr
656 bool childOutputIsRequired( const QString &childId, const QString &outputName ) const;
667 static
bool vectorOutputIsCompatibleType( const QList<
int> &acceptableDataTypes, Qgis::ProcessingSourceType outputType );
672 void reattachAlgorithms() const;
674 friend class TestQgsProcessingModelAlgorithm;
QFlags< ProcessingAlgorithmFlag > ProcessingAlgorithmFlags
Flags indicating how and when an algorithm operates and should be exposed to users.
Abstract base class for processing algorithms.
virtual QgsProcessingAlgorithm * createInstance() const =0
Creates a new instance of the algorithm class.
virtual QString group() const
Returns the name of the group this algorithm belongs to.
virtual QString groupId() const
Returns the unique ID of the group this algorithm belongs to.
virtual QString helpUrl() const
Returns a url pointing to the algorithm's help page.
virtual QIcon icon() const
Returns an icon for the algorithm.
virtual QString shortHelpString() const
Returns a localised short helper string for the algorithm.
virtual Qgis::ProcessingAlgorithmFlags flags() const
Returns the flags indicating how and when the algorithm operates and should be exposed to users.
virtual QString shortDescription() const
Returns an optional translated short description of the algorithm.
friend class QgsProcessingModelAlgorithm
virtual QString displayName() const =0
Returns the translated algorithm name, which should be used for any user-visible display of the algor...
virtual QgsExpressionContext createExpressionContext(const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeatureSource *source=nullptr) const
Creates an expression context relating to the algorithm.
virtual QString svgIconPath() const
Returns a path to an SVG version of the algorithm's icon.
virtual void initAlgorithm(const QVariantMap &configuration=QVariantMap())=0
Initializes the algorithm using the specified configuration.
virtual QString asPythonCommand(const QVariantMap ¶meters, QgsProcessingContext &context) const
Returns a Python command string which can be executed to run the algorithm using the specified parame...
virtual bool canExecute(QString *errorMessage=nullptr) const
Returns true if the algorithm can execute.
virtual QString name() const =0
Returns the algorithm name, used for identifying the algorithm.
PythonOutputType
Available Python output types.
As part of the API refactoring and improvements which landed in the Processing API was substantially reworked from the x version This was done in order to allow much of the underlying Processing framework to be ported into allowing algorithms to be written in pure substantial changes are required in order to port existing x Processing algorithms for QGIS x The most significant changes are outlined not GeoAlgorithm For algorithms which operate on features one by consider subclassing the QgsProcessingFeatureBasedAlgorithm class This class allows much of the boilerplate code for looping over features from a vector layer to be bypassed and instead requires implementation of a processFeature method Ensure that your algorithm(or algorithm 's parent class) implements the new pure virtual createInstance(self) call
#define SIP_THROW(name,...)