mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-13 00:03:09 -04:00
Fix some missing expression context variables in processing expression based widgets
This commit is contained in:
parent
e533a4078c
commit
60a1d6306f
@ -35,7 +35,8 @@ from qgis.PyQt.QtCore import QDir, QFileInfo
|
||||
from qgis.core import (Qgis,
|
||||
QgsApplication,
|
||||
QgsSettings,
|
||||
QgsProcessingParameterDefinition)
|
||||
QgsProcessingParameterDefinition,
|
||||
QgsProcessingModelAlgorithm)
|
||||
from qgis.gui import (QgsProcessingParameterWidgetContext,
|
||||
QgsProcessingContextGenerator)
|
||||
from qgis.utils import iface
|
||||
@ -273,6 +274,9 @@ class BatchPanel(BASE, WIDGET):
|
||||
widget_context = QgsProcessingParameterWidgetContext()
|
||||
if iface is not None:
|
||||
widget_context.setMapCanvas(iface.mapCanvas())
|
||||
if isinstance(self.alg, QgsProcessingModelAlgorithm):
|
||||
widget_context.setModel(self.alg)
|
||||
|
||||
wrapper.setWidgetContext(widget_context)
|
||||
widget = wrapper.createWrappedWidget(context)
|
||||
wrapper.registerProcessingContextGenerator(self.context_generator)
|
||||
|
@ -41,7 +41,8 @@ from qgis.core import (QgsProcessingParameterDefinition,
|
||||
QgsProcessingParameterRasterDestination,
|
||||
QgsProcessingParameterFeatureSink,
|
||||
QgsProcessingParameterVectorDestination,
|
||||
QgsProject)
|
||||
QgsProject,
|
||||
QgsProcessingModelAlgorithm)
|
||||
from qgis.gui import (QgsProcessingContextGenerator,
|
||||
QgsProcessingParameterWidgetContext)
|
||||
from qgis.utils import iface
|
||||
@ -128,6 +129,8 @@ class ParametersPanel(BASE, WIDGET):
|
||||
widget_context = QgsProcessingParameterWidgetContext()
|
||||
if iface is not None:
|
||||
widget_context.setMapCanvas(iface.mapCanvas())
|
||||
if isinstance(self.alg, QgsProcessingModelAlgorithm):
|
||||
widget_context.setModel(self.alg)
|
||||
|
||||
# Create widgets and put them in layouts
|
||||
for param in self.alg.parameterDefinitions():
|
||||
|
@ -245,7 +245,7 @@ QgsExpressionContext QgsAbstractProcessingParameterWidgetWrapper::createExpressi
|
||||
if ( mWidgetContext.model()->childAlgorithms().contains( mWidgetContext.modelChildAlgorithmId() ) )
|
||||
alg = mWidgetContext.model()->childAlgorithm( mWidgetContext.modelChildAlgorithmId() ).algorithm();
|
||||
|
||||
QgsExpressionContextScope *algorithmScope = QgsExpressionContextUtils::processingAlgorithmScope( alg, QVariantMap(), *context );
|
||||
QgsExpressionContextScope *algorithmScope = QgsExpressionContextUtils::processingAlgorithmScope( alg ? alg : mParameterDefinition->algorithm(), QVariantMap(), *context );
|
||||
c << algorithmScope;
|
||||
QgsExpressionContextScope *childScope = mWidgetContext.model()->createExpressionContextScopeForChildAlgorithm( mWidgetContext.modelChildAlgorithmId(), *context, QVariantMap(), QVariantMap() );
|
||||
c << childScope;
|
||||
@ -257,6 +257,11 @@ QgsExpressionContext QgsAbstractProcessingParameterWidgetWrapper::createExpressi
|
||||
c.setHighlightedVariables( highlightedVariables );
|
||||
c.setHighlightedFunctions( highlightedFunctions );
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( mParameterDefinition->algorithm() )
|
||||
c << QgsExpressionContextUtils::processingAlgorithmScope( mParameterDefinition->algorithm(), QVariantMap(), *context );
|
||||
}
|
||||
|
||||
if ( linkedVectorLayer() )
|
||||
c << QgsExpressionContextUtils::layerScope( linkedVectorLayer() );
|
||||
|
Loading…
x
Reference in New Issue
Block a user