mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-28 00:17:30 -05:00
Minor refactoring
This commit is contained in:
parent
fd15c3e5b6
commit
892224c62b
@ -225,50 +225,7 @@ void QgsAbstractProcessingParameterWidgetWrapper::postInitialize( const QList<Qg
|
||||
|
||||
QgsExpressionContext QgsAbstractProcessingParameterWidgetWrapper::createExpressionContext() const
|
||||
{
|
||||
// Get a processing context to start with
|
||||
QgsProcessingContext *context = nullptr;
|
||||
std::unique_ptr< QgsProcessingContext > tmpContext;
|
||||
if ( mProcessingContextGenerator )
|
||||
context = mProcessingContextGenerator->processingContext();
|
||||
|
||||
if ( !context )
|
||||
{
|
||||
tmpContext = qgis::make_unique< QgsProcessingContext >();
|
||||
context = tmpContext.get();
|
||||
}
|
||||
|
||||
QgsExpressionContext c = context->expressionContext();
|
||||
|
||||
if ( mWidgetContext.model() )
|
||||
{
|
||||
c << QgsExpressionContextUtils::processingModelAlgorithmScope( mWidgetContext.model(), QVariantMap(), *context );
|
||||
|
||||
const QgsProcessingAlgorithm *alg = nullptr;
|
||||
if ( mWidgetContext.model()->childAlgorithms().contains( mWidgetContext.modelChildAlgorithmId() ) )
|
||||
alg = mWidgetContext.model()->childAlgorithm( mWidgetContext.modelChildAlgorithmId() ).algorithm();
|
||||
|
||||
QgsExpressionContextScope *algorithmScope = QgsExpressionContextUtils::processingAlgorithmScope( alg ? alg : mParameterDefinition->algorithm(), QVariantMap(), *context );
|
||||
c << algorithmScope;
|
||||
QgsExpressionContextScope *childScope = mWidgetContext.model()->createExpressionContextScopeForChildAlgorithm( mWidgetContext.modelChildAlgorithmId(), *context, QVariantMap(), QVariantMap() );
|
||||
c << childScope;
|
||||
|
||||
QStringList highlightedVariables = childScope->variableNames();
|
||||
QStringList highlightedFunctions = childScope->functionNames();
|
||||
highlightedVariables += algorithmScope->variableNames();
|
||||
highlightedFunctions += algorithmScope->functionNames();
|
||||
c.setHighlightedVariables( highlightedVariables );
|
||||
c.setHighlightedFunctions( highlightedFunctions );
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( mParameterDefinition->algorithm() )
|
||||
c << QgsExpressionContextUtils::processingAlgorithmScope( mParameterDefinition->algorithm(), QVariantMap(), *context );
|
||||
}
|
||||
|
||||
if ( linkedVectorLayer() )
|
||||
c << QgsExpressionContextUtils::layerScope( linkedVectorLayer() );
|
||||
|
||||
return c;
|
||||
return QgsProcessingGuiUtils::createExpressionContext( mProcessingContextGenerator, mWidgetContext, mParameterDefinition ? mParameterDefinition->algorithm() : nullptr, linkedVectorLayer() );
|
||||
}
|
||||
|
||||
void QgsAbstractProcessingParameterWidgetWrapper::parentLayerChanged( QgsAbstractProcessingParameterWidgetWrapper *wrapper )
|
||||
@ -332,3 +289,56 @@ QString QgsProcessingParameterWidgetFactoryInterface::modelerExpressionFormatStr
|
||||
return QString();
|
||||
}
|
||||
|
||||
//
|
||||
// QgsProcessingGuiUtils
|
||||
//
|
||||
|
||||
///@cond PRIVATE
|
||||
QgsExpressionContext QgsProcessingGuiUtils::createExpressionContext( QgsProcessingContextGenerator *processingContextGenerator, const QgsProcessingParameterWidgetContext &widgetContext, const QgsProcessingAlgorithm *algorithm, const QgsVectorLayer *linkedLayer )
|
||||
{
|
||||
// Get a processing context to start with
|
||||
QgsProcessingContext *context = nullptr;
|
||||
std::unique_ptr< QgsProcessingContext > tmpContext;
|
||||
if ( processingContextGenerator )
|
||||
context = processingContextGenerator->processingContext();
|
||||
|
||||
if ( !context )
|
||||
{
|
||||
tmpContext = qgis::make_unique< QgsProcessingContext >();
|
||||
context = tmpContext.get();
|
||||
}
|
||||
|
||||
QgsExpressionContext c = context->expressionContext();
|
||||
|
||||
if ( widgetContext.model() )
|
||||
{
|
||||
c << QgsExpressionContextUtils::processingModelAlgorithmScope( widgetContext.model(), QVariantMap(), *context );
|
||||
|
||||
const QgsProcessingAlgorithm *alg = nullptr;
|
||||
if ( widgetContext.model()->childAlgorithms().contains( widgetContext.modelChildAlgorithmId() ) )
|
||||
alg = widgetContext.model()->childAlgorithm( widgetContext.modelChildAlgorithmId() ).algorithm();
|
||||
|
||||
QgsExpressionContextScope *algorithmScope = QgsExpressionContextUtils::processingAlgorithmScope( alg ? alg : algorithm, QVariantMap(), *context );
|
||||
c << algorithmScope;
|
||||
QgsExpressionContextScope *childScope = widgetContext.model()->createExpressionContextScopeForChildAlgorithm( widgetContext.modelChildAlgorithmId(), *context, QVariantMap(), QVariantMap() );
|
||||
c << childScope;
|
||||
|
||||
QStringList highlightedVariables = childScope->variableNames();
|
||||
QStringList highlightedFunctions = childScope->functionNames();
|
||||
highlightedVariables += algorithmScope->variableNames();
|
||||
highlightedFunctions += algorithmScope->functionNames();
|
||||
c.setHighlightedVariables( highlightedVariables );
|
||||
c.setHighlightedFunctions( highlightedFunctions );
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( algorithm )
|
||||
c << QgsExpressionContextUtils::processingAlgorithmScope( algorithm, QVariantMap(), *context );
|
||||
}
|
||||
|
||||
if ( linkedLayer )
|
||||
c << QgsExpressionContextUtils::layerScope( linkedLayer );
|
||||
|
||||
return c;
|
||||
}
|
||||
///@endcond
|
||||
|
@ -36,6 +36,7 @@ class QgsPropertyOverrideButton;
|
||||
class QgsVectorLayer;
|
||||
class QgsProcessingModelAlgorithm;
|
||||
class QgsMapCanvas;
|
||||
class QgsProcessingAlgorithm;
|
||||
|
||||
/**
|
||||
* \class QgsProcessingContextGenerator
|
||||
@ -134,6 +135,22 @@ class GUI_EXPORT QgsProcessingParameterWidgetContext
|
||||
|
||||
};
|
||||
|
||||
#ifndef SIP_RUN
|
||||
///@cond PRIVATE
|
||||
class GUI_EXPORT QgsProcessingGuiUtils
|
||||
{
|
||||
public:
|
||||
|
||||
static QgsExpressionContext createExpressionContext( QgsProcessingContextGenerator *processingContextGenerator = nullptr,
|
||||
const QgsProcessingParameterWidgetContext &widgetContext = QgsProcessingParameterWidgetContext(),
|
||||
const QgsProcessingAlgorithm *algorithm = nullptr,
|
||||
const QgsVectorLayer *linkedLayer = nullptr );
|
||||
|
||||
|
||||
};
|
||||
///@endcond
|
||||
#endif
|
||||
|
||||
/**
|
||||
* \class QgsAbstractProcessingParameterWidgetWrapper
|
||||
*
|
||||
|
Loading…
x
Reference in New Issue
Block a user