Skip to content

Commit

Permalink
Ensure correct expression context is shown in expression builder
Browse files Browse the repository at this point in the history
for form container visibility
  • Loading branch information
nyalldawson committed Apr 20, 2020
1 parent 4ca931d commit f56327a
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 4 deletions.
5 changes: 5 additions & 0 deletions src/gui/attributeformconfig/qgsattributeformcontaineredit.cpp
Expand Up @@ -48,6 +48,11 @@ QgsAttributeFormContainerEdit::QgsAttributeFormContainerEdit( QTreeWidgetItem *i
connect( mShowAsGroupBoxCheckBox, &QCheckBox::stateChanged, mShowLabelCheckBox, &QCheckBox::setEnabled );
}

void QgsAttributeFormContainerEdit::registerExpressionContextGenerator( QgsExpressionContextGenerator *generator )
{
mVisibilityExpressionWidget->registerExpressionContextGenerator( generator );
}

void QgsAttributeFormContainerEdit::updateItemData()
{
QgsAttributesFormProperties::DnDTreeItemData itemData = mTreeItem->data( 0, QgsAttributesFormProperties::DnDTreeRole ).value<QgsAttributesFormProperties::DnDTreeItemData>();
Expand Down
9 changes: 7 additions & 2 deletions src/gui/attributeformconfig/qgsattributeformcontaineredit.h
Expand Up @@ -38,12 +38,17 @@ class GUI_EXPORT QgsAttributeFormContainerEdit: public QWidget, private Ui_QgsAt
public:
explicit QgsAttributeFormContainerEdit( QTreeWidgetItem *item, QWidget *parent = nullptr );

/**
* Register an expression context generator class that will be used to retrieve
* an expression context for the widget when required.
* \since QGIS 3.14
*/
void registerExpressionContextGenerator( QgsExpressionContextGenerator *generator );

void updateItemData();


private:
QTreeWidgetItem *mTreeItem;
QTreeWidgetItem *mTreeItem = nullptr;
};

#endif // QGSATTRIBUTEFORMCONTAINEREDIT_H
10 changes: 9 additions & 1 deletion src/gui/vector/qgsattributesformproperties.cpp
Expand Up @@ -26,6 +26,7 @@
#include "qgsapplication.h"
#include "qgscolorbutton.h"
#include "qgscodeeditorhtml.h"
#include "qgsexpressioncontextutils.h"


QgsAttributesFormProperties::QgsAttributesFormProperties( QgsVectorLayer *layer, QWidget *parent )
Expand Down Expand Up @@ -183,9 +184,15 @@ void QgsAttributesFormProperties::initSuppressCombo()
mFormSuppressCmbBx->addItem( tr( "Show form on add feature" ) );

mFormSuppressCmbBx->setCurrentIndex( mLayer->editFormConfig().suppress() );
}


QgsExpressionContext QgsAttributesFormProperties::createExpressionContext() const
{
QgsExpressionContext context;
context.appendScopes( QgsExpressionContextUtils::globalProjectLayerScopes( mLayer ) );
return context;
}

void QgsAttributesFormProperties::initLayoutConfig()
{
mEditorLayoutComboBox->setCurrentIndex( mEditorLayoutComboBox->findData( mLayer->editFormConfig().layout() ) );
Expand Down Expand Up @@ -432,6 +439,7 @@ void QgsAttributesFormProperties::loadAttributeContainerEdit()

QTreeWidgetItem *currentItem = mFormLayoutTree->selectedItems().at( 0 );
mAttributeContainerEdit = new QgsAttributeFormContainerEdit( currentItem, this );
mAttributeContainerEdit->registerExpressionContextGenerator( this );
mAttributeContainerEdit->layout()->setContentsMargins( 0, 0, 0, 0 );
mAttributeTypeFrame->layout()->setContentsMargins( 0, 0, 0, 0 );
mAttributeTypeFrame->layout()->addWidget( mAttributeContainerEdit );
Expand Down
4 changes: 3 additions & 1 deletion src/gui/vector/qgsattributesformproperties.h
Expand Up @@ -53,7 +53,7 @@ class QgsAttributeTypeDialog;
class QgsAttributeRelationEdit;
class QgsAttributeWidgetEdit;

class GUI_EXPORT QgsAttributesFormProperties : public QWidget, private Ui_QgsAttributesFormProperties
class GUI_EXPORT QgsAttributesFormProperties : public QWidget, public QgsExpressionContextGenerator, private Ui_QgsAttributesFormProperties
{
Q_OBJECT

Expand Down Expand Up @@ -215,6 +215,8 @@ class GUI_EXPORT QgsAttributesFormProperties : public QWidget, private Ui_QgsAtt
void initInitPython();
void initSuppressCombo();

QgsExpressionContext createExpressionContext() const override;

protected:
void updateButtons();

Expand Down

0 comments on commit f56327a

Please sign in to comment.