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

David Marteau dmarteau at 3liz.com
Thu Jun 21 03:00:09 PDT 2018


Hi,

Yes, that's the point. I was surprised by the fact that those variables where stored as part of the exported qml file. 

I was trying to set those variable in processing algorithm so that I could achieve some parametrization of the style associated with the processing output, but no luck
since the qml  overwrite them when loaded in the layer.


> Le 21 juin 2018 à 11:48, Matthias Kuhn <matthias at opengis.ch> a écrit :
> 
> Hi David,
> 
> Variables are a part of QML / Layer Style. There is a QEP open about
> handling of this:
> 
> https://github.com/qgis/QGIS-Enhancement-Proposals/issues/125
> 
> While variables are not explicitly mentioned in there, it would be good
> to treat them in the same way. I.e. allow exporting and importing QML
> files without variables. This should allow to export and subsequently
> load a style without variables being embedded.
> Would be great if you could add a comment to the QEP.
> 
> Thanks
> Matthias
> 
> On 06/20/2018 10:06 PM, 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
>> 
> _______________________________________________
> 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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20180621/b1de72c3/attachment.html>


More information about the QGIS-Developer mailing list