Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
revive custom expression editor for default expression value modeler
parameter definition widget
  • Loading branch information
alexbruy authored and wonder-sk committed May 2, 2023
1 parent 10b02e0 commit a17f598
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 6 deletions.
23 changes: 19 additions & 4 deletions src/gui/processing/qgsprocessingwidgetwrapperimpl.cpp
Expand Up @@ -2113,10 +2113,22 @@ QgsProcessingExpressionParameterDefinitionWidget::QgsProcessingExpressionParamet
vlayout->setContentsMargins( 0, 0, 0, 0 );
vlayout->addWidget( new QLabel( tr( "Default value" ) ) );

mDefaultLineEdit = new QLineEdit();
mDefaultQgisLineEdit = new QgsExpressionLineEdit();
mDefaultQgisLineEdit->registerExpressionContextGenerator( this );

mDefaultPointCloudLineEdit = new QgsProcessingPointCloudExpressionLineEdit();

QStackedWidget *stackedWidget = new QStackedWidget();
stackedWidget->addWidget( mDefaultQgisLineEdit );
stackedWidget->addWidget( mDefaultPointCloudLineEdit );
vlayout->addWidget( stackedWidget );

if ( const QgsProcessingParameterExpression *expParam = dynamic_cast<const QgsProcessingParameterExpression *>( definition ) )
mDefaultLineEdit->setText( QgsProcessingParameters::parameterAsExpression( expParam, expParam->defaultValueForGui(), context ) );
vlayout->addWidget( mDefaultLineEdit );
{
const QString expr = QgsProcessingParameters::parameterAsExpression( expParam, expParam->defaultValueForGui(), context );
mDefaultQgisLineEdit->setExpression( expr );
mDefaultPointCloudLineEdit->setExpression( expr );
}

vlayout->addWidget( new QLabel( tr( "Parent layer" ) ) );

Expand All @@ -2133,6 +2145,8 @@ QgsProcessingExpressionParameterDefinitionWidget::QgsProcessingExpressionParamet
mParentLayerComboBox->clear();
mParentLayerComboBox->addItem( tr( "None" ), QVariant() );

stackedWidget->setCurrentIndex( mExpressionTypeComboBox->currentIndex() > 0 ? mExpressionTypeComboBox->currentIndex() : 0 );

QString initialParent;
if ( const QgsProcessingParameterExpression *expParam = dynamic_cast<const QgsProcessingParameterExpression *>( definition ) )
initialParent = expParam->parentLayerParameterName();
Expand Down Expand Up @@ -2201,7 +2215,8 @@ QgsProcessingExpressionParameterDefinitionWidget::QgsProcessingExpressionParamet
QgsProcessingParameterDefinition *QgsProcessingExpressionParameterDefinitionWidget::createParameter( const QString &name, const QString &description, QgsProcessingParameterDefinition::Flags flags ) const
{
Qgis::ExpressionType expressionType = static_cast< Qgis::ExpressionType >( mExpressionTypeComboBox->currentData().toInt() );
auto param = std::make_unique< QgsProcessingParameterExpression >( name, description, mDefaultLineEdit->text(), mParentLayerComboBox->currentData().toString(), false, expressionType );
QString expression = expressionType == Qgis::ExpressionType::Qgis ? mDefaultQgisLineEdit->expression() : mDefaultPointCloudLineEdit->expression();
auto param = std::make_unique< QgsProcessingParameterExpression >( name, description, expression, mParentLayerComboBox->currentData().toString(), false, expressionType );
param->setFlags( flags );
return param.release();
}
Expand Down
4 changes: 2 additions & 2 deletions src/gui/processing/qgsprocessingwidgetwrapperimpl.h
Expand Up @@ -698,8 +698,8 @@ class GUI_EXPORT QgsProcessingExpressionParameterDefinitionWidget : public QgsPr
private:

QComboBox *mParentLayerComboBox = nullptr;
//QgsExpressionLineEdit *mDefaultLineEdit = nullptr;
QLineEdit *mDefaultLineEdit = nullptr;
QgsExpressionLineEdit *mDefaultQgisLineEdit = nullptr;
QgsProcessingPointCloudExpressionLineEdit *mDefaultPointCloudLineEdit = nullptr;
QComboBox *mExpressionTypeComboBox = nullptr;

};
Expand Down

0 comments on commit a17f598

Please sign in to comment.