Hi Matthias, that works. Thanks a lot!
Regards Otto Am Thu, 17 Jan 2013 17:24:43 +0100 schrieb Matthias Kuhn <[email protected]>: > 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 <[email protected]>: > > > >> 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 > > [email protected] > > http://lists.osgeo.org/mailman/listinfo/qgis-developer > > _______________________________________________ > Qgis-developer mailing list > [email protected] > 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 _______________________________________________ Qgis-developer mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/qgis-developer
