El TOC se implementa como un QTreeView y pueden ser consultados directamente.
El modelo anexo a este punto de vista almacena el Nombre de Pantalla y la Fuente de la capa, sin embargo ninguno de estos puede ser invocado para ser único.
La mejor forma de manejar esta ambigüedad dependerá de su aplicación.
La siguiente es una aplicación que utiliza la capa de fuente para la referencia cruzada, considera que el primer golpe a ser la final, y se intercala un no-repetición de la lista de capas.
from PyQt4.QtGui import *
iface = qgis.utils.iface
layersTreeView = iface.mainWindow().findChild(QTreeView, "theMapLegend")
selectedIndexes = layersTreeView.selectedIndexes()
if len(selectedIndexes) == 0:
selectedLayers = []
elif len(selectedIndexes) == 1:
selectedLayers = [iface.activeLayer()]
else:
layersModel = layersTreeView.model()
allLayers = iface.legendInterface().layers()
selectedLayers = []
for modelIndex in selectedIndexes:
itemData = layersModel.itemData(modelIndex)
layerSource = itemData[3].toString()
for layer in allLayers:
if layer.source() == layerSource:
if layer not in selectedLayers:
selectedLayers.append(layer)
break
Editar:
En otro pensamiento es posible conectar a iface.currentLayerChanged
y el uso de esta señal para mantener la lista de capas ordenadas por cuando se ha seleccionado más recientemente.
Esta lista podría ser utilizado para eliminar la ambigüedad mencionada anteriormente.