On Fri, 18 Oct 2019 at 06:29, Simon Gröchenig
<[email protected]> wrote:
>
> Hi,
>
> I want to add a QgsPropertyOverrideButton to define a expression to filter 
> features in a python plugin. Specifically, I want to filter the features 
> using the @altas_feature variable. However, all variables are missing in the 
> expression dialog.
>
> Can anyone tell me how I can add the variables to the expression dialog?

Hi Simon,

This is all controlled via expression contexts. There's a few parts to
the puzzle:

1. Crafting an appropriate expression context using the individual
"scope" creation functions available through
QgsExpressionContextUtils. You generally start with a global, project
and layer scope, and then add additional scopes on top depending on
the "context" in which the expression will be evaluated.

So something like:

context = QgsExpressionContext()
context.appendScope( QgsExpressionContextUtils.globalScope() )
context.appendScope( QgsExpressionContextUtils.projectScope(
QgsProject.instance() ) )
context.appendScope( QgsExpressionContextUtils.atlasScope( None ) )
context.appendScope( QgsExpressionContextUtils.mapSettingsScope(
iface.mapCanvas() ) )

OR -- depending on the context -- you can get a pre-made context given
straight to you. E.g. if the expression evaluation is occurring inside
a layout item, then you must use

context = item.createExpressionContext()

instead of making your own.

So this part is very dependant on the "context" in which the
expression will be evaluated.

2. Make your dialog or widget which contains the button implement the
QgsExpressionContextGenerator interface.

3. Register your dialog/widget as the context generator for the button
by calling something like

button.registerExpressionContextGenerator( dialog )


Nyall






>
> Regards,
> Simon
>
> _______________________________________________
> QGIS-Developer mailing list
> [email protected]
> List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
_______________________________________________
QGIS-Developer mailing list
[email protected]
List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer

Reply via email to