[Qgis-developer] index in self.legend.groupLayerRelationship - different behavior between QGIS 1.8 and master?

Giuseppe Sucameli sucameli at faunalia.it
Mon Oct 8 08:58:33 PDT 2012


Hi,

On Fri, Oct 5, 2012 at 11:28 AM, Massimo <massimo.endrighi at geopartner.it> wrote:
> I propose another solution based on QDomDocument similar to the one
> adopted into the QgsLegend::writeProject method.

Massimo has made a pull request [1] to add a
groupLayerHierarchy method that returns a QDomDocument.

Here's my opinion (see the pull request comments):
> A QDomDocument is good when you want to export/import
> data (e.g between different QGis installations) and we already
> have a such QDomDocument, i.e. the project file.

I totally agree with Martin, we need to implement some
classes to give plugin devs the opportunity to work on the
legend using an API.

Furthermore I don't understand why having a new xml
document with it's own tags/elements.
The QgsProject.write(...) calls the QgsLegend.writeXml(...)
to write all the stuff needed to re-create the legend tree,
so we could just expose the QgsLegend.writeXml().

BTW, in the meantime the API is developed you could
save a temporary project file and parse it.
Note: you need to restore the project filename after done
because the QgsProject.write(QFileInfo) changes it.

Here's XML elements you need to know to get legend
info from project file:

*<legend>* is the legend root tag.
It can contains both *legendlayer* and *legendgroup* elements.

A legend layer can contains more sublayers,
it has the following structure:

<legendlayer name="mylayer1" checked="Qt::Checked">
    <filegroup>
        <legendlayerfile id="mylayer120121008125355262" />
    </filegroup>
</legendlayer>

where the *filegroup* elem contains the sublayers with their id.

Group info is stored into a *legendgroup* element,
it can contains both *legendlayer* and *legendgroup* elements:

<legendgroup name="mygroup1" checked="Qt::Checked">
    <legendlayer name="mylayer1">...</legendlayer>
    <legendgroup name="mygroup2" checked="Qt::Checked">
        <legendlayer name="mylayer2">...</legendlayer>
    </legendgroup>
</legendgroup>

Regards.

[1] https://github.com/qgis/Quantum-GIS/pull/265

-- 
Giuseppe Sucameli - Faunalia


More information about the Qgis-developer mailing list