[QGIS-Developer] Typed Variables?

Nyall Dawson nyall.dawson at gmail.com
Thu Jun 11 17:15:21 PDT 2020


On Thu, 11 Jun 2020 at 01:26, Andreas Neumann <a.neumann at carto.net> wrote:
>
> Hi,
>
> I have a question about the variables that can be defined on different scopes. They are most of the times (or always?) strings, if I manually define them - right?

If you manually define them, then yes -- they are always strings.

> Some of the automatic variables might be of a different type (like date, layer, etc.)

Correct. The underlying API allows for any variant type value (just
like expressions), so potentially a variable could be a int, date,
datetime, string, list, map, interval, feature, etc...

> Can I also manually define a "typed" variable? E.g. a boolean true instead of 'true' as a string?

Only via PyQGIS, not via the UI.

It's been requested in the past that we support expose an option for
these. And I'd like to see this happen, because then we could improve
the UI for entering variable values in the variable list widget. E.g.
if a variable has been defined on a project level as a "color" type
variable, it would be nice to make it so that when you override this
variable for a particular layout item you get a color picker widget.
And similarly, if you defined a variable to be of the type "font
name", then the tree widget could show a drop down list of available
fonts. It would certainly help make them more accessible.

It's actually somewhat of a dream of mine to expose variable editing
better in the QGIS UI to users. E.g. - via variables its completely
possible to make symbols which alter their appearance. So already have
this concept of "smart symbols", where you could have a marshland
symbol which alters its appearance based on variables like
"@height_of_vegetation" and "@density_of_vegetation" and
"@health_of_vegetation". That's possible today. But to modify these
variables you need to go into the raw variable editor for the layer
and tweak their. What would be great is if we did things like expose
them at the symbol selector dialog -- so that if a user picks your
"marshland" smart symbol from the library, they don't see all the
underlying symbol layers and those settings, but instead just see
widgets for tweaking these specific @height_of_vegetation/...
variables.  This is where "typed" variables would be a necessity!

Nyall


>
> That way I could directly use variables without having to add CASE WHEN END statements ...
>
> My use case would be to have a boolean "debugging" variable. If it is set to true, then certain parts of the form with internal IDs would be visible, if set to false, they would be hidden.
>
> Thanks,
>
> Andreas
>
> _______________________________________________
> QGIS-Developer mailing list
> QGIS-Developer at lists.osgeo.org
> List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer


More information about the QGIS-Developer mailing list