[QGIS-Developer] Adding Map layer to current project destroy custom layer variables in Qgis3

Richard Duivenvoorde rdmailings at duif.net
Thu Jun 21 02:30:43 PDT 2018


Hi David,

this sounds like a bug, so I would say: create an issue with clear steps
so others can reproduce/fix.... BUT I cannot reproduce. Doing your steps
I see 'FOO' is just saved in the project file (and viewable after
unzipping the qgz file)....
And even after loading the qml and restartnig QGIS it is there.

I also am not sure what the exact purpose of
QgsExpressionContextUtils.setLayerVariable
would be, if I want stuff to be saved in project file I use:
layer.setCustomProperty('FOO', 'BAR')
and to retreive it:
layer.customProperty('FOO', '')

But, maybe others can tell something about this.
I use QGIS self build on Debian:
https://github.com/qgis/QGIS/commit/4790747aea

Regards,

Richard Duivenvoorde

On 20-06-18 22:06, David Marteau wrote:
> 
> Just found out that this is not addMapLayer that remove the variables
> but 'layer.loadNamedStyle'
> 
> Print layer.customProperty('variableNames') just before calling
> 'layer.loadNamedStyle' show variables
> Print layer.customProperty('variableNames') just after the call :  empty
> list
> 
> Reproduced in the python console:
> 
>>>> QgsExpressionContextUtils.setLayerVariable(layer,'FOO','BAR')
>>>> layer.customProperty('variableNames')
> ['FOO']
>>>> layer.loadNamedStyle('mystyle.qml')
> ('', True)
>>>> layer.customProperty('variableNames')
> []
> 
> 
>> Le 20 juin 2018 à 18:13, David Marteau <dmarteau at 3liz.com
>> <mailto:dmarteau at 3liz.com>> a écrit :
>>
>> Hi
>>
>> I'm trying to set custom layers variables from processing
>> using  QgsExpressionContextUtils.setLayerVariables to destination
>> layers , I have found that those variables does not appear in 
>> Qgis. 
>>
>> I have found that when the layer is inserted in the current project
>> (https://github.com/qgis/QGIS/blob/master/python/plugins/processing/gui/Postprocessing.py#L81)
>> the layer variables are removed - Checking existence of the variable
>> before
>> and after the call of 'addMaperLayer' shows that layer variables are
>> removed from custom properties.
>>
>> I cannot tell if this is a bug or not because it seems that the
>> removal may occurs in some signal handler. So if somebody has some
>> clues to where to look, I will be grateful.
>>
>>
>> Qgis version: 3.0.3-Girona
>>
>> David
> 
> 
> 
> _______________________________________________
> 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