@@ -61,25 +61,35 @@ QgsMultiRingBufferAlgorithm *QgsMultiRingBufferAlgorithm::createInstance() const
6161
6262void QgsMultiRingBufferAlgorithm::initParameters ( const QVariantMap & )
6363{
64- addParameter ( new QgsProcessingParameterFeatureSource ( QStringLiteral ( " INPUT" ), QObject::tr ( " Input layer" ), QList< int >() << QgsProcessing::TypeVectorPoint ) );
65-
66- auto ringsParam = qgis::make_unique < QgsProcessingParameterNumber >( QStringLiteral ( " RINGS" ), QObject::tr ( " Number of rings" ), QgsProcessingParameterNumber::Integer, 1 , false , 1 );
67- // ringsParam->setIsDynamic( true );
68- // ringsParam->setDynamicPropertyDefinition( QgsPropertyDefinition( QStringLiteral( "Number of rings" ), QObject::tr( "Number of rings" ), QgsPropertyDefinition::Integer ) );
69- // ringsParam->setDynamicLayerParameterName( QStringLiteral( "INPUT" ) );
70- addParameter ( ringsParam.release () );
71-
72- auto distanceParam = qgis::make_unique < QgsProcessingParameterNumber >( QStringLiteral ( " DISTANCE" ), QObject::tr ( " Distance between rings" ), QgsProcessingParameterNumber::Double, 1 );
73- // distanceParam->setIsDynamic( true );
74- // distanceParam->setDynamicPropertyDefinition( QgsPropertyDefinition( QStringLiteral( "Distance between rings" ), QObject::tr( "Distance between rings" ), QgsPropertyDefinition::Double ) );
75- // distanceParam->setDynamicLayerParameterName( QStringLiteral( "INPUT" ) );
76- addParameter ( distanceParam.release () );
64+ std::unique_ptr< QgsProcessingParameterNumber> rings = qgis::make_unique< QgsProcessingParameterNumber >( QStringLiteral ( " RINGS" ),
65+ QObject::tr ( " Number of rings" ), QgsProcessingParameterNumber::Integer,
66+ 1 , false , 0 );
67+ rings->setIsDynamic ( true );
68+ rings->setDynamicPropertyDefinition ( QgsPropertyDefinition ( QStringLiteral ( " RINGS" ), QObject::tr ( " Number of rings" ), QgsPropertyDefinition::IntegerPositive ) );
69+ rings->setDynamicLayerParameterName ( QStringLiteral ( " INPUT" ) );
70+ addParameter ( rings.release () );
71+
72+ std::unique_ptr< QgsProcessingParameterNumber> distance = qgis::make_unique< QgsProcessingParameterNumber >( QStringLiteral ( " DISTANCE" ),
73+ QObject::tr ( " Distance between rings" ), QgsProcessingParameterNumber::Double,
74+ 1 , false , 0 );
75+ distance->setIsDynamic ( true );
76+ distance->setDynamicPropertyDefinition ( QgsPropertyDefinition ( QStringLiteral ( " DISTANCE" ), QObject::tr ( " Distance between rings" ), QgsPropertyDefinition::DoublePositive ) );
77+ distance->setDynamicLayerParameterName ( QStringLiteral ( " INPUT" ) );
78+ addParameter ( distance.release () );
7779}
7880
7981bool QgsMultiRingBufferAlgorithm::prepareAlgorithm ( const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback * )
8082{
8183 mRingsNumber = parameterAsInt ( parameters, QStringLiteral ( " RINGS" ), context );
84+ mDynamicRingsNumber = QgsProcessingParameters::isDynamic ( parameters, QStringLiteral ( " RINGS" ) );
85+ if ( mDynamicRingsNumber )
86+ mRingsNumberProperty = parameters.value ( QStringLiteral ( " RINGS" ) ).value < QgsProperty >();
87+
8288 mDistance = parameterAsDouble ( parameters, QStringLiteral ( " DISTANCE" ), context );
89+ mDynamicDistance = QgsProcessingParameters::isDynamic ( parameters, QStringLiteral ( " DISTANCE" ) );
90+ if ( mDynamicDistance )
91+ mDistanceProperty = parameters.value ( QStringLiteral ( " DISTANCE" ) ).value < QgsProperty >();
92+
8393 return true ;
8494}
8595
0 commit comments