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

Reply via email to