Skip to content

Commit 2a280d6

Browse files
committedNov 6, 2017
Allow access to parent algorithm for processing parameters
1 parent 7cfbb6f commit 2a280d6

File tree

5 files changed

+28
-0
lines changed

5 files changed

+28
-0
lines changed
 

‎python/core/processing/qgsprocessingparameters.sip

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,13 +353,22 @@ class QgsProcessingParameterDefinition
353353
:rtype: list of str
354354
%End
355355

356+
QgsProcessingAlgorithm *algorithm() const;
357+
%Docstring
358+
Returns a pointer to the algorithm which owns this parameter. May be None
359+
for non-owned parameters.
360+
:rtype: QgsProcessingAlgorithm
361+
%End
362+
356363
protected:
357364

358365

359366

360367

361368

362369

370+
371+
363372
};
364373

365374
QFlags<QgsProcessingParameterDefinition::Flag> operator|(QgsProcessingParameterDefinition::Flag f1, QFlags<QgsProcessingParameterDefinition::Flag> f2);

‎src/core/processing/qgsprocessingalgorithm.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,7 @@ bool QgsProcessingAlgorithm::addParameter( QgsProcessingParameterDefinition *def
242242
}
243243

244244
mParameters << definition;
245+
definition->mAlgorithm = this;
245246

246247
if ( createOutput )
247248
return createAutoOutputForParameter( definition );

‎src/core/processing/qgsprocessingparameters.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1237,6 +1237,11 @@ bool QgsProcessingParameterDefinition::fromVariantMap( const QVariantMap &map )
12371237
return true;
12381238
}
12391239

1240+
QgsProcessingAlgorithm *QgsProcessingParameterDefinition::algorithm() const
1241+
{
1242+
return mAlgorithm;
1243+
}
1244+
12401245
QgsProcessingParameterBoolean::QgsProcessingParameterBoolean( const QString &name, const QString &description, const QVariant &defaultValue, bool optional )
12411246
: QgsProcessingParameterDefinition( name, description, defaultValue, optional )
12421247
{}

‎src/core/processing/qgsprocessingparameters.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -391,6 +391,12 @@ class CORE_EXPORT QgsProcessingParameterDefinition
391391
*/
392392
virtual QStringList dependsOnOtherParameters() const { return QStringList(); }
393393

394+
/**
395+
* Returns a pointer to the algorithm which owns this parameter. May be nullptr
396+
* for non-owned parameters.
397+
*/
398+
QgsProcessingAlgorithm *algorithm() const;
399+
394400
protected:
395401

396402
//! Parameter name
@@ -408,6 +414,12 @@ class CORE_EXPORT QgsProcessingParameterDefinition
408414
//! Freeform metadata for parameter. Mostly used by widget wrappers to customise their appearance and behavior.
409415
QVariantMap mMetadata;
410416

417+
//! Pointer to algorithm which owns this parameter
418+
QgsProcessingAlgorithm *mAlgorithm = nullptr;
419+
420+
// To allow access to mAlgorithm. We don't want a public setter for this!
421+
friend class QgsProcessingAlgorithm;
422+
411423
};
412424

413425
Q_DECLARE_OPERATORS_FOR_FLAGS( QgsProcessingParameterDefinition::Flags )

‎tests/src/analysis/testqgsprocessing.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ class DummyAlgorithm : public QgsProcessingAlgorithm
7575
QVERIFY( addParameter( new QgsProcessingParameterBoolean( "p1" ) ) );
7676
QCOMPARE( parameterDefinitions().count(), 1 );
7777
QCOMPARE( parameterDefinitions().at( 0 )->name(), QString( "p1" ) );
78+
QCOMPARE( parameterDefinitions().at( 0 )->algorithm(), this );
7879

7980
QVERIFY( !addParameter( nullptr ) );
8081
QCOMPARE( parameterDefinitions().count(), 1 );

0 commit comments

Comments
 (0)
Please sign in to comment.