[Qgis-developer] Python - recreate the exact Legend in a QTreeWidget

kimaidou kimaidou at gmail.com
Mon Jun 20 05:47:29 EDT 2011


Hi devs,

I am a bit stuck here....
I would like to recreate the complete legend tree inside a python plugin. I
have chosen to use a QtreeWidget to do so.

Imagine I have:
*****************
group 0 (empty)

group 1
|-- group 11
   |-- layer 11a
   |-- layer 11b
|-- layer 1a

layer a

group 2
|-- group 21
|-- layer 2a
***********************

I have seen the

iface.legendInterface().groupLayerRelationship()

returns usefull information, but in a flat "C-style" way like :


[
  ['group 0', [] ],
  ['group 1', ['group 11', 'layer_1a_10020100526085601790'] ],
  ['', ['layer_a_20110617181245226'] ],
  ['group 2', ['groupe21', 'layer_2a_20110616121558434'] ],
  ['group 11', ['layer_11a_20100526085601799',
'layer_11b_gen20100526100356932'] ],
  ['groupe21', []]
]


I would like to loop though this result and create my own hierarchical
representation such as :
[
    'name' : 'group 0' , 'type' : 'group', 'children' : [],
    'name' : 'group 1' , 'type' : 'group', 'children' : [
        'name' : 'group 11' , 'type' : 'group', 'children' : [
            'name' : 'layer 11a' , 'type' : 'layer', 'children' : [],
            'name' : 'layer 11b' , 'type' : 'layer', 'children' : []
        ],
        'name' : 'layer 1a' , 'type' : 'layer', 'children' : []
    ],
    'name' : 'layer a' , 'type' : 'layer', 'children' : [],
    'name' : 'group 2' , 'type' : 'group', 'children' : [
        'name' : 'group 21' , 'type' : 'group', 'children' : [],
        'name' : 'layer 2a' , 'type' : 'layer', 'children' : []
    ]
]

I have tried hard since yesterday, but have not succeeded... Has anyone
already encoutered this need ?

Thanks in advance,
kimaidou
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/qgis-developer/attachments/20110620/ee27e3e6/attachment.html


More information about the Qgis-developer mailing list