[GIS] How to iterate over selected layers

pyqgispythonqgis

In QGis by pressing shift or ctrl keys a user can select multiple layers in toc.
How can a python script iterate over selected layers?

I'd expect a iface.selectedLayers() but I can find only iface.activeLayer() which return only one layer.

Best Answer

I have added a QgsLegend::selectedLayers() binding to QgsLegendInterface in master branch. You can now do the following when using a current master build (might have to wait a day or two, unless compiling yourself; not going to be backported to QGIS 1.8):

# iface.legendInterface().selectedLayers(bool inDrawOrder)
# param inDrawOrder False returns QTreeWidget::selectedItems() order
#                   True returns render drawing order (Legend or Layer Order)
# returns list of selected QgsMapLayer(s), or empty list

from qgis.utils import iface
li = iface.legendInterface()
sl = li.selectedLayers(True)
for lyr in sl:
    print lyr.name()