[Qgis-developer] index in self.legend.groupLayerRelationship - different behavior between QGIS 1.8 and master?
Massimo
massimo.endrighi at geopartner.it
Thu Oct 4 09:00:52 PDT 2012
Michael,
the group Id could be the groupIndex. For example:
GroupA [groupIndex=0, itemIndex = 0]
Layer1 [groupIndex=0, itemIndex = 1]
GroupB [groupIndex=1, itemIndex = 2]
GroupC [groupIndex=2, itemIndex = 3]
Layer2 [groupIndex=2, itemIndex = 4]
GroupA [groupIndex=3, itemIndex = 5]
GroupB [groupIndex=4, itemIndex = 6]
GroupC [groupIndex=5, itemIndex = 7]
Layer3 [groupIndex=5, itemIndex = 8]
In this way you obtain:
- the groupIndex correspond to legend.layers() list
['0.GroupA','1.GroupB','2.GroupC','3.GroupA','4.GroupB','5.GroupC']
- you can use the groupLayerRelationship to reconstruct the exact hierarchy
in the same way you are doing now
But, from my point of view, this is like a patch to a fragile system.
It would be much more useful to expose a property to access the legend items
in terms of QgsAppLegendItem.
The QgsAppLegendItem should be a sort of QgsLegendItem
(src\app\legend\qgslegenditem.h) that expose the following
- type (layer or group)
- parent (QgsAppLegendItem)
- children (list of QgsAppLegendItem)
- expanded
- visible
Once you have an item you can do all your business logic.
Please let me know your opinion.
Regard
Massimo
kimaidou wrote
> Hi massimo,
>
> You are right, we must add a id for each group in Qgis. For now, the group
> is defined only with its name, which leads to this kind of behaviour. At
> the contrary, layers do have an id in Qgis, so you can use the same name
> for 2 different layers.
>
> I think we must enhance a bit the way how groups are handled and provide
> appropriate public methods like
> group->id(), ĝetGroup(id), etc.
>
> In the lizmap example, I could only use QgsLegendInterface::groups wich
> returns a string list of groups, and groupLayerRelationship which provide
> a
> flat list of groups and layers. The latter returns ids of layers, but name
> of groups, so there is no easy way to distinguish to groups with the same
> name.
>
> Michael
>
> 2012/10/4 Massimo <
> massimo.endrighi@
> >
>
>> Michael,
>>
>> thank you for the tip but your code fails under some circumstances. See
>> attached image.
>> <http://osgeo-org.1560.n6.nabble.com/file/n5006430/lizmap_error.png>
>>
>> If you think that you can fix it I will be happy to adopt your algorithm,
>> otherwise we can find a solution adding something to QGis API.
>>
>> Regards
>> Massimo
>>
>>
>> kimaidou wrote
>> > Hi all,
>> >
>> > In Lizmap plugin, I need to display the layer and group tree. You can
>> find
>> > some code here :
>> > https://bitbucket.org/mdouchin/lizmapplugin/src/9cdfa856b8f0/lizmap.py
>> > Line 451 : populateLayerTree
>> >
>> > There is some specific lizmap code in there, but you can probably use
>> some
>> > of it.
>> >
>> > Michael
>>
>>
>>
>>
>>
>> --
>> View this message in context:
>> http://osgeo-org.1560.n6.nabble.com/index-in-self-legend-groupLayerRelationship-different-behavior-between-QGIS-1-8-and-master-tp5004337p5006430.html
>> Sent from the Quantum GIS - Developer mailing list archive at Nabble.com.
>> _______________________________________________
>> Qgis-developer mailing list
>>
> Qgis-developer at .osgeo
>> http://lists.osgeo.org/mailman/listinfo/qgis-developer
>>
>
> _______________________________________________
> Qgis-developer mailing list
> Qgis-developer at .osgeo
> http://lists.osgeo.org/mailman/listinfo/qgis-developer
--
View this message in context: http://osgeo-org.1560.n6.nabble.com/index-in-self-legend-groupLayerRelationship-different-behavior-between-QGIS-1-8-and-master-tp5004337p5006467.html
Sent from the Quantum GIS - Developer mailing list archive at Nabble.com.
More information about the Qgis-developer
mailing list