[Qgis-developer] List layer from Legend
Luiz Motta
motta.luiz at gmail.com
Mon Jan 18 21:27:29 EST 2010
Germán,
Thanks for response.
The MapCanvas only work with layers in canvas. If you have layers in
legend where it is not checked,
they are not calculated by canvas.layerCount()
I test the /legend, but legend.groups() is empty when don´t have the
layer of type group, the legend
don´t have root group with all layers for fist level.
I tested with QGIS 1.4 and QGIS 1.5 r12771M, both in Windows
Luiz Motta
/
Germán Carrillo escreveu:
> Hi Luiz.
>
> You can get the orderer list of layers from QgsMapCanvas class:
>
> /canvas = qgis.utils.iface.mapCanvas()
> for i in range( canvas.layerCount() ):/
>
> / ly = canvas.layer( i )
> /
>
> / print ly.name <http://ly.name>(), ly.getLayerID()/
>
>
> I don't know if there's another method but I guess the
> QgsLegendInterface class (added in v.1.4) [1] will provide some useful
> methods to play with legend layers and groups.
>
> Meanwhile (v.1.4) you can get the group names:
>
> /legend = qgis.utils.iface.legendInterface()/
>
> /for group in legend.groups():/
>
> / print group/
>
>
> Germán
>
> -------------------------
> [1] http://doc.qgis.org/head/classQgsLegendInterface.html
>
> 2010/1/18 Luiz Motta <motta.luiz at gmail.com <mailto:motta.luiz at gmail.com>>
>
> Hi all,
>
> I am making the python plugin and need show layers in QTreeWidget
> with same order show in Legend/Layer.
>
> The list of layers by :
> layerRegistry = core.QgsMapLayerRegistry.instance()
> it is not same order by Legend.
>
> I have success get list of layer's name by find the QTreeWidget
> with name 'Legend':
> ### getDocWidgetLegend
> def getDocWidgetLegend():
> widget = None
> lst = qgis.utils.iface.mainWindow().children()
> for item in lst:
> if type(item) == QtGui.QDockWidget and
> item.objectName().compare('Legend') == 0:
> widget = item
> return widget
> ### getMapLegend
> def getMapLegend(widgetLegend):
> widget = None
> for item in widgetLegend.children():
> if item.objectName().compare('theMapLegend') == 0:
> widget = item
> return widget
> ### Use functions
> widgetLegend = getDocWidgetLegend()
> treeLegend = getMapLegend(widgetLegend)
> ### End scripts
>
> The problem is when the have same layer's name in Legend, i don't
> know how take exact source.
>
> The other method is read the entries in project:
> project = core.QgsProject.instance()
>
> I don´t know how get entries in tag Legend in project:
> Example QGis project file:
> <!DOCTYPE qgis PUBLIC 'http://mrcc.com/qgis.dtd' 'SYSTEM'>
> <qgis projectname="" version="1.5.0-Trunk" >
> <title></title>
> <mapcanvas>
> <units>degrees</units>
> <extent>
> <xmin>-50.299417</xmin>
> <ymin>-6.641147</ymin>
> <xmax>-49.646870</xmax>
> <ymax>-6.083483</ymax>
> </extent>
> <projections>0</projections>
> <destinationsrs>
> <spatialrefsys>
> <proj4>+proj=longlat +ellps=WGS84 +datum=WGS84
> +no_defs</proj4>
> <srsid>3452</srsid>
> <srid>4326</srid>
> <epsg>4326</epsg>
> <description>WGS 84</description>
> <projectionacronym>longlat</projectionacronym>
> <ellipsoidacronym>WGS84</ellipsoidacronym>
> <geographicflag>true</geographicflag>
> </spatialrefsys>
> </destinationsrs>
> </mapcanvas>
> <legend>
> <legendlayer open="true" checked="Qt::Checked"
> name="CB2B-HRC_20091228" >
> <filegroup open="true" hidden="false" >
> <legendlayerfile isInOverview="0"
> layerid="CB2B_HRC_2009122820100117201817718" visible="1" />
> </filegroup>
> </legendlayer>
> ....
>
> I would like how use "project.entryList()" to take values of all
> layerid's.
>
> Do someone know how to solve it?
>
> Thank you Luiz
>
> _______________________________________________
> Qgis-developer mailing list
> Qgis-developer at lists.osgeo.org <mailto:Qgis-developer at lists.osgeo.org>
> http://lists.osgeo.org/mailman/listinfo/qgis-developer
>
> --
> -----------
> |\__
> (:>__)(
> |/
>
> Soluciones Geoinformáticas Libres
> http://geotux.tuxfamily.org/
More information about the Qgis-developer
mailing list