diff --git a/src/app/qgsattributeactiondialog.cpp b/src/app/qgsattributeactiondialog.cpp index bb2fbc83275..937d56a8559 100644 --- a/src/app/qgsattributeactiondialog.cpp +++ b/src/app/qgsattributeactiondialog.cpp @@ -181,7 +181,12 @@ void QgsAttributeActionDialog::insertExpression() selText = selText.mid( 2, selText.size() - 4 ); // display the expression builder - QgsExpressionBuilderDialog dlg( mActions->layer(), selText, this ); + QgsExpressionContext context; + context << QgsExpressionContextUtils::globalScope() + << QgsExpressionContextUtils::projectScope() + << QgsExpressionContextUtils::layerScope( mActions->layer() ); + + QgsExpressionBuilderDialog dlg( mActions->layer(), selText, this, "generic", context ); dlg.setWindowTitle( tr( "Insert expression" ) ); QgsDistanceArea myDa; diff --git a/src/app/qgsattributetabledialog.cpp b/src/app/qgsattributetabledialog.cpp index dbad2455643..0f4728fcaf2 100644 --- a/src/app/qgsattributetabledialog.cpp +++ b/src/app/qgsattributetabledialog.cpp @@ -460,7 +460,12 @@ void QgsAttributeTableDialog::filterColumnChanged( QObject* filterAction ) void QgsAttributeTableDialog::filterExpressionBuilder() { // Show expression builder - QgsExpressionBuilderDialog dlg( mLayer, mFilterQuery->text(), this ); + QgsExpressionContext context; + context << QgsExpressionContextUtils::globalScope() + << QgsExpressionContextUtils::projectScope() + << QgsExpressionContextUtils::layerScope( mLayer ); + + QgsExpressionBuilderDialog dlg( mLayer, mFilterQuery->text(), this, "generic", context ); dlg.setWindowTitle( tr( "Expression based filter" ) ); QgsDistanceArea myDa; diff --git a/src/app/qgsdiagramproperties.cpp b/src/app/qgsdiagramproperties.cpp index 6a860abaa1d..7a5e13d912e 100644 --- a/src/app/qgsdiagramproperties.cpp +++ b/src/app/qgsdiagramproperties.cpp @@ -776,7 +776,13 @@ void QgsDiagramProperties::showAddAttributeExpressionDialog() { expression = selections[0]->text( 0 ); } - QgsExpressionBuilderDialog dlg( mLayer, expression, this ); + + QgsExpressionContext context; + context << QgsExpressionContextUtils::globalScope() + << QgsExpressionContextUtils::projectScope() + << QgsExpressionContextUtils::layerScope( mLayer ); + + QgsExpressionBuilderDialog dlg( mLayer, expression, this, "generic", context ); dlg.setWindowTitle( tr( "Expression based attribute" ) ); QgsDistanceArea myDa; diff --git a/src/app/qgsfieldsproperties.cpp b/src/app/qgsfieldsproperties.cpp index 291d0ecfda3..e4f702f3e58 100644 --- a/src/app/qgsfieldsproperties.cpp +++ b/src/app/qgsfieldsproperties.cpp @@ -669,7 +669,11 @@ void QgsFieldsProperties::updateExpression() const QString exp = mLayer->expressionField( index ); - QgsExpressionBuilderDialog dlg( mLayer, exp ); + QgsExpressionContext context; + context << QgsExpressionContextUtils::globalScope() + << QgsExpressionContextUtils::projectScope(); + + QgsExpressionBuilderDialog dlg( mLayer, exp, 0, "generic", context ); if ( dlg.exec() ) { diff --git a/src/app/qgsvectorlayerproperties.cpp b/src/app/qgsvectorlayerproperties.cpp index 63b990b8c31..ebc2455f972 100644 --- a/src/app/qgsvectorlayerproperties.cpp +++ b/src/app/qgsvectorlayerproperties.cpp @@ -345,7 +345,12 @@ void QgsVectorLayerProperties::insertExpression() selText = selText.mid( 2, selText.size() - 4 ); // display the expression builder - QgsExpressionBuilderDialog dlg( layer, selText.replace( QChar::ParagraphSeparator, '\n' ), this ); + QgsExpressionContext context; + context << QgsExpressionContextUtils::globalScope() + << QgsExpressionContextUtils::projectScope() + << QgsExpressionContextUtils::layerScope( layer ); + + QgsExpressionBuilderDialog dlg( layer, selText.replace( QChar::ParagraphSeparator, '\n' ), this, "generic", context ); dlg.setWindowTitle( tr( "Insert expression" ) ); if ( dlg.exec() == QDialog::Accepted ) { diff --git a/src/gui/attributetable/qgsdualview.cpp b/src/gui/attributetable/qgsdualview.cpp index ddd5e95621b..fd888360e3a 100644 --- a/src/gui/attributetable/qgsdualview.cpp +++ b/src/gui/attributetable/qgsdualview.cpp @@ -291,7 +291,12 @@ void QgsDualView::openConditionalStyles() void QgsDualView::previewExpressionBuilder() { // Show expression builder - QgsExpressionBuilderDialog dlg( mLayerCache->layer(), mFeatureList->displayExpression(), this ); + QgsExpressionContext context; + context << QgsExpressionContextUtils::globalScope() + << QgsExpressionContextUtils::projectScope() + << QgsExpressionContextUtils::layerScope( mLayerCache->layer() ); + + QgsExpressionBuilderDialog dlg( mLayerCache->layer(), mFeatureList->displayExpression(), this, "generic", context ); dlg.setWindowTitle( tr( "Expression based preview" ) ); dlg.setExpressionText( mFeatureList->displayExpression() ); diff --git a/src/gui/editorwidgets/qgsvaluerelationconfigdlg.cpp b/src/gui/editorwidgets/qgsvaluerelationconfigdlg.cpp index e4f227c49b4..f651af527e4 100644 --- a/src/gui/editorwidgets/qgsvaluerelationconfigdlg.cpp +++ b/src/gui/editorwidgets/qgsvaluerelationconfigdlg.cpp @@ -63,7 +63,12 @@ void QgsValueRelationConfigDlg::editExpression() if ( !vl ) return; - QgsExpressionBuilderDialog dlg( vl, mFilterExpression->toPlainText(), this ); + QgsExpressionContext context; + context << QgsExpressionContextUtils::globalScope() + << QgsExpressionContextUtils::projectScope() + << QgsExpressionContextUtils::layerScope( vl ); + + QgsExpressionBuilderDialog dlg( vl, mFilterExpression->toPlainText(), this, "generic", context ); dlg.setWindowTitle( tr( "Edit filter expression" ) ); if ( dlg.exec() == QDialog::Accepted ) diff --git a/src/gui/symbology-ng/qgsrulebasedrendererv2widget.cpp b/src/gui/symbology-ng/qgsrulebasedrendererv2widget.cpp index adbba830d96..9a844bb8f3c 100644 --- a/src/gui/symbology-ng/qgsrulebasedrendererv2widget.cpp +++ b/src/gui/symbology-ng/qgsrulebasedrendererv2widget.cpp @@ -627,7 +627,12 @@ QgsRendererRulePropsDialog::~QgsRendererRulePropsDialog() void QgsRendererRulePropsDialog::buildExpression() { - QgsExpressionBuilderDialog dlg( mLayer, editFilter->text(), this ); + QgsExpressionContext context; + context << QgsExpressionContextUtils::globalScope() + << QgsExpressionContextUtils::projectScope() + << QgsExpressionContextUtils::layerScope( mLayer ); + + QgsExpressionBuilderDialog dlg( mLayer, editFilter->text(), this, "generic", context ); if ( dlg.exec() ) editFilter->setText( dlg.expressionText() );