@@ -273,6 +273,7 @@ QVariantMap QgsProcessingModelAlgorithm::processAlgorithm( const QVariantMap &pa
273
273
QgsExpressionContext expContext = baseContext;
274
274
expContext << QgsExpressionContextUtils::processingAlgorithmScope ( child.algorithm (), parameters, context )
275
275
<< createExpressionContextScopeForChildAlgorithm ( childId, context, parameters, childResults );
276
+ context.setExpressionContext ( expContext );
276
277
277
278
QVariantMap childParams = parametersForChildAlgorithm ( child, parameters, childResults, expContext );
278
279
if ( feedback )
@@ -530,6 +531,9 @@ QMap<QString, QgsProcessingModelAlgorithm::VariableDefinition> QgsProcessingMode
530
531
if ( !layer )
531
532
layer = QgsProcessingUtils::mapLayerFromString ( value.toString (), context );
532
533
534
+ // TODO: should I tag variable name with type? e.g. %1_maplayer
535
+ variables.insert ( safeName ( QStringLiteral ( " %1" ).arg ( name ) ), VariableDefinition ( value, source, description ) );
536
+
533
537
variables.insert ( safeName ( QStringLiteral ( " %1_minx" ).arg ( name ) ), VariableDefinition ( layer ? layer->extent ().xMinimum () : QVariant (), source, QObject::tr ( " Minimum X of %1" ).arg ( description ) ) );
534
538
variables.insert ( safeName ( QStringLiteral ( " %1_miny" ).arg ( name ) ), VariableDefinition ( layer ? layer->extent ().yMinimum () : QVariant (), source, QObject::tr ( " Minimum Y of %1" ).arg ( description ) ) );
535
539
variables.insert ( safeName ( QStringLiteral ( " %1_maxx" ).arg ( name ) ), VariableDefinition ( layer ? layer->extent ().xMaximum () : QVariant (), source, QObject::tr ( " Maximum X of %1" ).arg ( description ) ) );
@@ -595,6 +599,9 @@ QMap<QString, QgsProcessingModelAlgorithm::VariableDefinition> QgsProcessingMode
595
599
featureSource = vl;
596
600
}
597
601
602
+ // TODO: should I tag variable name with type? e.g. %1_feature
603
+ variables.insert ( safeName ( QStringLiteral ( " %1" ).arg ( name ) ), VariableDefinition ( value, source, description ) );
604
+
598
605
variables.insert ( safeName ( QStringLiteral ( " %1_minx" ).arg ( name ) ), VariableDefinition ( featureSource ? featureSource->sourceExtent ().xMinimum () : QVariant (), source, QObject::tr ( " Minimum X of %1" ).arg ( description ) ) );
599
606
variables.insert ( safeName ( QStringLiteral ( " %1_miny" ).arg ( name ) ), VariableDefinition ( featureSource ? featureSource->sourceExtent ().yMinimum () : QVariant (), source, QObject::tr ( " Minimum Y of %1" ).arg ( description ) ) );
600
607
variables.insert ( safeName ( QStringLiteral ( " %1_maxx" ).arg ( name ) ), VariableDefinition ( featureSource ? featureSource->sourceExtent ().xMaximum () : QVariant (), source, QObject::tr ( " Maximum X of %1" ).arg ( description ) ) );
@@ -606,7 +613,7 @@ QMap<QString, QgsProcessingModelAlgorithm::VariableDefinition> QgsProcessingMode
606
613
607
614
QgsExpressionContextScope *QgsProcessingModelAlgorithm::createExpressionContextScopeForChildAlgorithm ( const QString &childId, QgsProcessingContext &context, const QVariantMap &modelParameters, const QVariantMap &results ) const
608
615
{
609
- std::unique_ptr< QgsExpressionContextScope > scope ( new QgsExpressionContextScope () );
616
+ std::unique_ptr< QgsExpressionContextScope > scope ( new QgsExpressionContextScope ( QStringLiteral ( " algorithm_inputs " ) ) );
610
617
QMap< QString, QgsProcessingModelAlgorithm::VariableDefinition> variables = variablesForChildAlgorithm ( childId, context, modelParameters, results );
611
618
QMap< QString, QgsProcessingModelAlgorithm::VariableDefinition>::const_iterator varIt = variables.constBegin ();
612
619
for ( ; varIt != variables.constEnd (); ++varIt )
0 commit comments