[Qgis-developer] select a loaded raster layer from qgis legend into python plugin
Otto Dassau
dassau at gbd-consult.de
Thu Jan 17 08:40:41 PST 2013
Hi Matthias,
that works. Thanks a lot!
Regards
Otto
Am Thu, 17 Jan 2013 17:24:43 +0100
schrieb Matthias Kuhn <matthias.kuhn at gmx.ch>:
> Hi Otto,
>
> Try this
>
> class MyPluginDialog (QDialog,Ui_MyPluginDialog)::
> def __init__(self):
> self.setupUi(self)
> self.initLayerCombobox( self.ui.InRastA, 'key_of_default_layer' )
>
> def initLayerCombobox(self,combobox, default):
> combobox.clear()
> reg = QgsMapLayerRegistry.instance()
> for ( key, layer ) in reg.mapLayers().iteritems():
> if layer.type() == QgsMapLayer.RasterLayer and
> ( layer.usesProvider() and layer.providerKey() == 'gdal' ):
> combobox.addItem( layer.name(), key )
> idx = combobox.findData( default )
> if idx != -1:
> combobox.setCurrentIndex( idx )
>
>
> Matthias
>
> On 01/17/2013 05:07 PM, Otto Dassau wrote:
> > Hi Matthias,
> >
> > thanks for your help. I guess it is similar to what I found?
> >
> > def getRasterLayersNames():
> > layerList = []
> > layerMap = QgsMapLayerRegistry.instance().mapLayers()
> > for name, layer in layerMap.iteritems():
> > if layer.type() == QgsMapLayer.RasterLayer and
> > ( layer.usesProvider() and layer.providerKey() ==
> > 'gdal' ): layerList.append( unicode( layer.name()))
> > return layerList
> >
> > If I understand correctly your function selects all raster layers from
> > QgsMapLayerRegistry. Now I would like to visualize the layer list in the
> > combobox (InRastA) of the plugin dialog file. I found something that
> > works for vector layers:
> >
> > def manageGui(self):
> > myList = []
> > self.ui.InRastA.clear()
> > myList = initLayerCombobox()
> > self.ui.InRastA.addItems( myList )
> > return
> >
> > But is doesn't work for raster that way, if I use your function. How is
> > it possible to make the raster layers selectable / show up in the plugin
> > dialog?
> >
> > Regards
> > Otto
> >
> > Am Thu, 17 Jan 2013 16:21:51 +0100
> > schrieb Matthias Kuhn <matthias.kuhn at gmx.ch>:
> >
> >> Hi Otto,
> >>
> >> here a small extract from a plugin I wrote:
> >>
> >> Just check for the layer type to only list raster layers
> >>
> >> def initLayerCombobox(self,combobox, default):
> >> reg = QgsMapLayerRegistry.instance()
> >> for ( key, layer ) in reg.mapLayers().iteritems():
> >> combobox.addItem( layer.name(), key )
> >>
> >> idx = combobox.findData( default )
> >> if idx != -1:
> >> combobox.setCurrentIndex( idx )
> >>
> >> Regards
> >>
> >> On Thu, 2013-01-17 at 15:54 +0100, Otto Dassau wrote:
> >>> Hi,
> >>>
> >>> I would like to write a small python plugin to analyse some raster
> >>> data, but I haven't managed to select a loaded layer yet. I searched
> >>> the howtos and found several simple examples about:
> >>>
> >>> # get the currently active layer
> >>> layer = self.iface.mapCanvas().currentLayer()
> >>>
> >>> but as I said I would like to select one of the loaded raster layers
> >>> from the qgis legend using a QtGui.QComboBox in the plugin dialog. At
> >>> the moment I tried the getRasterLayersNames() function I found in
> >>> several other plugins but it seems I am missing something, because the
> >>> raster layers are not selectable. Can someone point me to a simple
> >>> example to understand the general procedure?
> >>>
> >>> Thanks a lot
> >>> Otto
> > _______________________________________________
> > Qgis-developer mailing list
> > Qgis-developer at lists.osgeo.org
> > http://lists.osgeo.org/mailman/listinfo/qgis-developer
>
> _______________________________________________
> Qgis-developer mailing list
> Qgis-developer at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/qgis-developer
--
Geoinformatik Büro Dassau - http://www.gbd-consult.de
FOSSGIS consulting , training , support and analysis
Ackerstrasse 144c , D - 40233 Düsseldorf , Germany
Tel: +49-(0)211-47468178 , Mobile: +49-(0)171-4687540
--
Community Advisor - QGIS Project Steering Committee
More information about the Qgis-developer
mailing list