[QGIS Commit] r15474 - in trunk/qgis/python/plugins/GdalTools: . tools

svn_qgis at osgeo.org svn_qgis at osgeo.org
Mon Mar 14 12:01:10 EDT 2011


Author: brushtyler
Date: 2011-03-14 09:01:10 -0700 (Mon, 14 Mar 2011)
New Revision: 15474

Modified:
   trunk/qgis/python/plugins/GdalTools/GdalTools.py
   trunk/qgis/python/plugins/GdalTools/tools/GdalTools_utils.py
   trunk/qgis/python/plugins/GdalTools/tools/dialogBase.py
   trunk/qgis/python/plugins/GdalTools/tools/doAbout.py
   trunk/qgis/python/plugins/GdalTools/tools/doContour.py
   trunk/qgis/python/plugins/GdalTools/tools/doGrid.py
   trunk/qgis/python/plugins/GdalTools/tools/doInfo.py
   trunk/qgis/python/plugins/GdalTools/tools/doNearBlack.py
   trunk/qgis/python/plugins/GdalTools/tools/doOverview.py
   trunk/qgis/python/plugins/GdalTools/tools/doPctRgb.py
   trunk/qgis/python/plugins/GdalTools/tools/doPolygonize.py
   trunk/qgis/python/plugins/GdalTools/tools/doProximity.py
   trunk/qgis/python/plugins/GdalTools/tools/doRasterize.py
   trunk/qgis/python/plugins/GdalTools/tools/doRgbPct.py
   trunk/qgis/python/plugins/GdalTools/tools/doSettings.py
   trunk/qgis/python/plugins/GdalTools/tools/doSieve.py
   trunk/qgis/python/plugins/GdalTools/tools/doTranslate.py
   trunk/qgis/python/plugins/GdalTools/tools/doWarp.py
   trunk/qgis/python/plugins/GdalTools/tools/widgetPluginBase.py
Log:
refresh list of layers when layers in TOC change


Modified: trunk/qgis/python/plugins/GdalTools/GdalTools.py
===================================================================
--- trunk/qgis/python/plugins/GdalTools/GdalTools.py	2011-03-14 12:48:50 UTC (rev 15473)
+++ trunk/qgis/python/plugins/GdalTools/GdalTools.py	2011-03-14 16:01:10 UTC (rev 15474)
@@ -78,8 +78,9 @@
       + QCoreApplication.translate( "GdalTools", "This version of Gdal Tools requires at least QGIS version 1.0.0\nPlugin will not be enabled." ) )
       return None
 
-    from tools.GdalTools_utils import Version, GdalConfig
+    from tools.GdalTools_utils import Version, GdalConfig, LayerRegistry
     self.GdalVersion = Version( GdalConfig.version() )
+    LayerRegistry.setIface( self.iface )
 
     # find the Raster menu
     rasterMenu = None

Modified: trunk/qgis/python/plugins/GdalTools/tools/GdalTools_utils.py
===================================================================
--- trunk/qgis/python/plugins/GdalTools/tools/GdalTools_utils.py	2011-03-14 12:48:50 UTC (rev 15473)
+++ trunk/qgis/python/plugins/GdalTools/tools/GdalTools_utils.py	2011-03-14 16:01:10 UTC (rev 15474)
@@ -8,8 +8,10 @@
 
 from PyQt4.QtCore import *
 from PyQt4.QtGui import *
+
 from qgis.core import *
 from qgis.gui import *
+
 from osgeo import gdal
 from osgeo.gdalconst import *
 from osgeo import ogr
@@ -90,35 +92,73 @@
     extensions << FileFilter.getFilterExtensions( f )
   return extensions
 
-def getRasterLayers():
-  # mantein the reference between combobox indexes and canvas layers
-  layers = dict()
-  count = 0
-  names = []
-  layerMap = QgsMapLayerRegistry.instance().mapLayers()
-  for name, layer in layerMap.iteritems():
-    # only raster layers, but not WMS ones
-    if layer.type() == layer.RasterLayer:
-      if layer.usesProvider() and layer.providerKey() != 'gdal':
-        continue
-      layers[count] = layer
-      names.append(layer.name())
-      count = count +1
-  return (layers, names)
+class LayerRegistry(QObject):
 
-def getVectorLayers():
-  # mantein the reference between combobox indexes and canvas layers
-  layers = dict()
-  count = 0
-  names = []
-  layerMap = QgsMapLayerRegistry.instance().mapLayers()
-  for name, layer in layerMap.iteritems():
-    if layer.type() == layer.VectorLayer:
-      layers[count] = layer
-      names.append(layer.name())
-      count = count +1
-  return (layers, names)
+    _instance = None
+    _iface = None
 
+    @staticmethod
+    def instance():
+      if LayerRegistry._instance == None:
+        LayerRegistry._instance = LayerRegistry()
+      return LayerRegistry._instance
+
+    @staticmethod
+    def setIface(iface):
+      LayerRegistry._iface = iface
+
+    layers = []
+
+    def __init__(self):
+      QObject.__init__(self)
+      if LayerRegistry._instance != None:
+        return
+
+      LayerRegistry.layers = self.getAllLayers()
+      LayerRegistry._instance = self
+      self.connect(QgsMapLayerRegistry.instance(), SIGNAL("removedAll()"), self.removeAllLayers)
+      self.connect(QgsMapLayerRegistry.instance(), SIGNAL("layerWasAdded(QgsMapLayer *)"), self.layerAdded)
+      self.connect(QgsMapLayerRegistry.instance(), SIGNAL("layerWillBeRemoved(QString)"), self.removeLayer)
+
+    def getAllLayers(self):
+       if LayerRegistry._iface and hasattr(LayerRegistry._iface, 'legendInterface'):
+         return LayerRegistry._iface.legendInterface().layers()
+       return QgsMapLayerRegistry.instance().mapLayers().values()
+
+    def layerAdded(self, layer):
+       LayerRegistry.layers.append( layer )
+       self.emit( SIGNAL( "layersChanged" ) )
+
+    def removeLayer(self, layerId):
+       LayerRegistry.layers = filter( lambda x: x.getLayerID() != layerId, LayerRegistry.layers)
+       self.emit( SIGNAL( "layersChanged" ) )
+
+    def removeAllLayers(self):
+       LayerRegistry.layers = []
+       self.emit( SIGNAL( "layersChanged" ) )
+
+    def getRasterLayers(self):
+      layers = []
+      names = []
+
+      for layer in LayerRegistry.layers:
+        # only gdal raster layers
+        if layer.type() == layer.RasterLayer:
+          if layer.usesProvider() and layer.providerKey() != 'gdal':
+            continue
+          layers.append(layer)
+          names.append(layer.name())
+      return (layers, names)
+
+    def getVectorLayers(self):
+      layers = []
+      names = []
+      for layer in LayerRegistry.layers:
+        if layer.type() == layer.VectorLayer:
+          layers.append(layer)
+          names.append(layer.name())
+      return (layers, names)
+
 def getRasterFiles(path, recursive=False):
   rasters = QStringList()
   if not QFileInfo(path).exists():

Modified: trunk/qgis/python/plugins/GdalTools/tools/dialogBase.py
===================================================================
--- trunk/qgis/python/plugins/GdalTools/tools/dialogBase.py	2011-03-14 12:48:50 UTC (rev 15473)
+++ trunk/qgis/python/plugins/GdalTools/tools/dialogBase.py	2011-03-14 16:01:10 UTC (rev 15474)
@@ -17,6 +17,7 @@
 
   def __init__(self, parent, iface, pluginBase, pluginName, pluginCommand):
       QDialog.__init__(self, parent)
+      self.setAttribute(Qt.WA_DeleteOnClose)
       self.iface = iface
 
       self.process = QProcess(self)

Modified: trunk/qgis/python/plugins/GdalTools/tools/doAbout.py
===================================================================
--- trunk/qgis/python/plugins/GdalTools/tools/doAbout.py	2011-03-14 12:48:50 UTC (rev 15473)
+++ trunk/qgis/python/plugins/GdalTools/tools/doAbout.py	2011-03-14 16:01:10 UTC (rev 15474)
@@ -13,6 +13,7 @@
 
   def __init__(self, iface):
       QDialog.__init__(self, iface.mainWindow())
+      self.setAttribute(Qt.WA_DeleteOnClose)
       self.iface = iface
       self.setupUi(self)
 

Modified: trunk/qgis/python/plugins/GdalTools/tools/doContour.py
===================================================================
--- trunk/qgis/python/plugins/GdalTools/tools/doContour.py	2011-03-14 12:48:50 UTC (rev 15473)
+++ trunk/qgis/python/plugins/GdalTools/tools/doContour.py	2011-03-14 16:01:10 UTC (rev 15474)
@@ -33,11 +33,12 @@
       self.connect(self.selectOutputDirButton, SIGNAL("clicked()"), self.fillOutputDirEdit)
 
       # fill layers combo
+      self.connect(Utils.LayerRegistry.instance(), SIGNAL("layersChanged"), self.fillInputLayerCombo)
       self.fillInputLayerCombo()
 
   def fillInputLayerCombo( self ):
       self.inputLayerCombo.clear()
-      ( self.layers, names ) = Utils.getRasterLayers()
+      ( self.layers, names ) = Utils.LayerRegistry.instance().getRasterLayers()
       self.inputLayerCombo.addItems( names )
 
   def fillInputFileEdit(self):

Modified: trunk/qgis/python/plugins/GdalTools/tools/doGrid.py
===================================================================
--- trunk/qgis/python/plugins/GdalTools/tools/doGrid.py	2011-03-14 12:48:50 UTC (rev 15473)
+++ trunk/qgis/python/plugins/GdalTools/tools/doGrid.py	2011-03-14 16:01:10 UTC (rev 15474)
@@ -58,8 +58,6 @@
       self.connect(self.inputLayerCombo, SIGNAL("currentIndexChanged(int)"), self.fillFieldsCombo)
       self.connect(self.extentGroup, SIGNAL("toggled(bool)"), self.onExtentCheckedChenged)
 
-      # fill layers combo
-      self.fillInputLayerCombo()
 
   def onClosing(self):
       self.extentSelector.stop()
@@ -68,9 +66,12 @@
   def onExtentCheckedChenged(self, enabled):
         self.extentSelector.start() if enabled else self.extentSelector.stop()
 
+  def onLayersChanged(self):
+      self.fillInputLayerCombo()
+
   def fillInputLayerCombo(self):
       self.inputLayerCombo.clear()
-      ( self.layers, names ) = Utils.getVectorLayers()
+      ( self.layers, names ) = Utils.LayerRegistry.instance().getVectorLayers()
       self.inputLayerCombo.addItems( names )
 
   def fillFieldsCombo(self):

Modified: trunk/qgis/python/plugins/GdalTools/tools/doInfo.py
===================================================================
--- trunk/qgis/python/plugins/GdalTools/tools/doInfo.py	2011-03-14 12:48:50 UTC (rev 15473)
+++ trunk/qgis/python/plugins/GdalTools/tools/doInfo.py	2011-03-14 16:01:10 UTC (rev 15474)
@@ -40,8 +40,6 @@
       self.copyAll = QAction( self.tr( "Copy all" ), self )
       QObject.connect( self.copyAll, SIGNAL( "triggered()" ), self.doCopyAll )
 
-      # fill layers combo
-      self.fillInputLayerCombo()
 
   def doCopyLine( self ):
       output = QString()
@@ -71,9 +69,12 @@
       else:
         QWidget.keyPressEvent( self, e )
 
+  def onLayersChanged(self):
+      self.fillInputLayerCombo()
+
   def fillInputLayerCombo( self ):
       self.inputLayerCombo.clear()
-      ( self.layers, names ) = Utils.getRasterLayers()
+      ( self.layers, names ) = Utils.LayerRegistry.instance().getRasterLayers()
       self.inputLayerCombo.addItems( names )
 
   def finished( self ):

Modified: trunk/qgis/python/plugins/GdalTools/tools/doNearBlack.py
===================================================================
--- trunk/qgis/python/plugins/GdalTools/tools/doNearBlack.py	2011-03-14 12:48:50 UTC (rev 15473)
+++ trunk/qgis/python/plugins/GdalTools/tools/doNearBlack.py	2011-03-14 16:01:10 UTC (rev 15474)
@@ -33,12 +33,12 @@
       self.connect(self.selectInputFileButton, SIGNAL("clicked()"), self.fillInputFileEdit)
       self.connect(self.selectOutputFileButton, SIGNAL("clicked()"), self.fillOutputFileEdit)
 
-      # fill layers combo
+  def onLayersChanged(self):
       self.fillInputLayerCombo()
 
   def fillInputLayerCombo( self ):
       self.inputLayerCombo.clear()
-      ( self.layers, names ) = Utils.getRasterLayers()
+      ( self.layers, names ) = Utils.LayerRegistry.instance().getRasterLayers()
       self.inputLayerCombo.addItems( names )
 
   def fillInputFileEdit(self):

Modified: trunk/qgis/python/plugins/GdalTools/tools/doOverview.py
===================================================================
--- trunk/qgis/python/plugins/GdalTools/tools/doOverview.py	2011-03-14 12:48:50 UTC (rev 15473)
+++ trunk/qgis/python/plugins/GdalTools/tools/doOverview.py	2011-03-14 16:01:10 UTC (rev 15474)
@@ -44,8 +44,6 @@
       self.connect( self.selectInputFileButton, SIGNAL( "clicked()" ), self.fillInputFile )
       self.connect( self.batchCheck, SIGNAL( "stateChanged( int )" ), self.switchToolMode )
 
-      # fill layers combo
-      self.fillInputLayerCombo()
 
   # switch to batch or normal mode
   def switchToolMode( self ):
@@ -71,9 +69,12 @@
         QObject.disconnect( self.selectInputFileButton, SIGNAL( "clicked()" ), self.fillInputDir )
         QObject.connect( self.selectInputFileButton, SIGNAL( "clicked()" ), self.fillInputFile )
 
+  def onLayersChanged(self):
+      self.fillInputLayerCombo()
+
   def fillInputLayerCombo( self ):
       self.inputLayerCombo.clear()
-      ( self.layers, names ) = Utils.getRasterLayers()
+      ( self.layers, names ) = Utils.LayerRegistry.instance().getRasterLayers()
       self.inputLayerCombo.addItems( names )
 
   def fillInputFile( self ):

Modified: trunk/qgis/python/plugins/GdalTools/tools/doPctRgb.py
===================================================================
--- trunk/qgis/python/plugins/GdalTools/tools/doPctRgb.py	2011-03-14 12:48:50 UTC (rev 15473)
+++ trunk/qgis/python/plugins/GdalTools/tools/doPctRgb.py	2011-03-14 16:01:10 UTC (rev 15474)
@@ -39,7 +39,6 @@
       self.connect(self.selectOutputFileButton, SIGNAL("clicked()"), self.fillOutputFileEdit)
       self.connect( self.batchCheck, SIGNAL( "stateChanged( int )" ), self.switchToolMode )
 
-      self.fillInputLayerCombo()
 
   # switch to batch or normal mode
   def switchToolMode( self ):
@@ -77,9 +76,12 @@
         QObject.connect( self.selectInputFileButton, SIGNAL( "clicked()" ), self.fillInputFile )
         QObject.connect( self.selectOutputFileButton, SIGNAL( "clicked()" ), self.fillOutputFileEdit )
 
+  def onLayersChanged(self):
+      self.fillInputLayerCombo()
+
   def fillInputLayerCombo(self):
       self.inputLayerCombo.clear()
-      ( self.layers, names ) = Utils.getRasterLayers()
+      ( self.layers, names ) = Utils.LayerRegistry.instance().getRasterLayers()
       self.inputLayerCombo.addItems( names )
 
   def fillInputFile(self):

Modified: trunk/qgis/python/plugins/GdalTools/tools/doPolygonize.py
===================================================================
--- trunk/qgis/python/plugins/GdalTools/tools/doPolygonize.py	2011-03-14 12:48:50 UTC (rev 15473)
+++ trunk/qgis/python/plugins/GdalTools/tools/doPolygonize.py	2011-03-14 16:01:10 UTC (rev 15474)
@@ -31,12 +31,12 @@
       self.connect(self.selectInputFileButton, SIGNAL("clicked()"), self.fillInputFileEdit)
       self.connect(self.selectOutputFileButton, SIGNAL("clicked()"), self.fillOutputFileEdit)
 
-      # fill layers combo
+  def onLayersChanged(self):
       self.fillInputLayerCombo()
 
   def fillInputLayerCombo( self ):
       self.inputLayerCombo.clear()
-      ( self.layers, names ) = Utils.getRasterLayers()
+      ( self.layers, names ) = Utils.LayerRegistry.instance().getRasterLayers()
       self.inputLayerCombo.addItems( names )
 
   def fillInputFileEdit(self):

Modified: trunk/qgis/python/plugins/GdalTools/tools/doProximity.py
===================================================================
--- trunk/qgis/python/plugins/GdalTools/tools/doProximity.py	2011-03-14 12:48:50 UTC (rev 15473)
+++ trunk/qgis/python/plugins/GdalTools/tools/doProximity.py	2011-03-14 16:01:10 UTC (rev 15474)
@@ -37,12 +37,12 @@
       self.connect(self.selectInputFileButton, SIGNAL("clicked()"), self.fillInputFileEdit)
       self.connect(self.selectOutputFileButton, SIGNAL("clicked()"), self.fillOutputFileEdit)
 
-      # fill layers combo
+  def onLayersChanged(self):
       self.fillInputLayerCombo()
 
   def fillInputLayerCombo( self ):
       self.inputLayerCombo.clear()
-      ( self.layers, names ) = Utils.getRasterLayers()
+      ( self.layers, names ) = Utils.LayerRegistry().getRasterLayers()
       self.inputLayerCombo.addItems( names )
 
   def fillInputFileEdit(self):

Modified: trunk/qgis/python/plugins/GdalTools/tools/doRasterize.py
===================================================================
--- trunk/qgis/python/plugins/GdalTools/tools/doRasterize.py	2011-03-14 12:48:50 UTC (rev 15473)
+++ trunk/qgis/python/plugins/GdalTools/tools/doRasterize.py	2011-03-14 16:01:10 UTC (rev 15474)
@@ -37,12 +37,12 @@
       self.connect(self.selectOutputFileButton, SIGNAL("clicked()"), self.fillOutputFileEdit)
       self.connect(self.inputLayerCombo, SIGNAL("currentIndexChanged(int)"), self.fillFieldsCombo)
 
-      # fill layers combo
+  def onLayersChanged(self):
       self.fillInputLayerCombo()
 
   def fillInputLayerCombo( self ):
       self.inputLayerCombo.clear()
-      ( self.layers, names ) = Utils.getVectorLayers()
+      ( self.layers, names ) = Utils.LayerRegistry.instance().getVectorLayers()
       self.inputLayerCombo.addItems( names )
 
   def fillFieldsCombo(self):

Modified: trunk/qgis/python/plugins/GdalTools/tools/doRgbPct.py
===================================================================
--- trunk/qgis/python/plugins/GdalTools/tools/doRgbPct.py	2011-03-14 12:48:50 UTC (rev 15473)
+++ trunk/qgis/python/plugins/GdalTools/tools/doRgbPct.py	2011-03-14 16:01:10 UTC (rev 15474)
@@ -37,7 +37,6 @@
       self.connect(self.selectOutputFileButton, SIGNAL("clicked()"), self.fillOutputFileEdit)
       self.connect( self.batchCheck, SIGNAL( "stateChanged( int )" ), self.switchToolMode )
 
-      self.fillInputLayerCombo()
 
   # switch to batch or normal mode
   def switchToolMode( self ):
@@ -75,9 +74,12 @@
         QObject.connect( self.selectInputFileButton, SIGNAL( "clicked()" ), self.fillInputFile )
         QObject.connect( self.selectOutputFileButton, SIGNAL( "clicked()" ), self.fillOutputFileEdit )
 
+  def onLayersChanged(self):
+      self.fillInputLayerCombo()
+
   def fillInputLayerCombo(self):
       self.inputLayerCombo.clear()
-      ( self.layers, names ) = Utils.getRasterLayers()
+      ( self.layers, names ) = Utils.LayerRegistry().getRasterLayers()
       self.inputLayerCombo.addItems( names )
 
   def fillInputFile(self):

Modified: trunk/qgis/python/plugins/GdalTools/tools/doSettings.py
===================================================================
--- trunk/qgis/python/plugins/GdalTools/tools/doSettings.py	2011-03-14 12:48:50 UTC (rev 15473)
+++ trunk/qgis/python/plugins/GdalTools/tools/doSettings.py	2011-03-14 16:01:10 UTC (rev 15474)
@@ -11,6 +11,7 @@
 class GdalToolsSettingsDialog( QDialog, Ui_Dialog ):
   def __init__( self, iface ):
     QDialog.__init__( self, iface.mainWindow() )
+    self.setAttribute(Qt.WA_DeleteOnClose)
     self.iface = iface
     self.setupUi( self )
 

Modified: trunk/qgis/python/plugins/GdalTools/tools/doSieve.py
===================================================================
--- trunk/qgis/python/plugins/GdalTools/tools/doSieve.py	2011-03-14 12:48:50 UTC (rev 15473)
+++ trunk/qgis/python/plugins/GdalTools/tools/doSieve.py	2011-03-14 16:01:10 UTC (rev 15474)
@@ -32,12 +32,12 @@
       self.connect(self.selectInputFileButton, SIGNAL("clicked()"), self.fillInputFileEdit)
       self.connect(self.selectOutputFileButton, SIGNAL("clicked()"), self.fillOutputFileEdit)
 
-      # fill layers combo
+  def onLayersChanged(self):
       self.fillInputLayerCombo()
 
   def fillInputLayerCombo( self ):
       self.inputLayerCombo.clear()
-      ( self.layers, names ) = Utils.getRasterLayers()
+      ( self.layers, names ) = Utils.LayerRegistry.instance().getRasterLayers()
       self.inputLayerCombo.addItems( names )
 
   def fillInputFileEdit(self):

Modified: trunk/qgis/python/plugins/GdalTools/tools/doTranslate.py
===================================================================
--- trunk/qgis/python/plugins/GdalTools/tools/doTranslate.py	2011-03-14 12:48:50 UTC (rev 15473)
+++ trunk/qgis/python/plugins/GdalTools/tools/doTranslate.py	2011-03-14 16:01:10 UTC (rev 15474)
@@ -61,8 +61,6 @@
       # add raster filters to combo
       self.formatCombo.addItems( Utils.FileFilter.allRastersFilter().split( ";;" ) )
 
-      # add layers to combo
-      self.fillInputLayerCombo()
 
   def switchToolMode( self ):
       self.setCommandViewerEnabled( not self.batchCheck.isChecked() )
@@ -103,9 +101,12 @@
         QObject.connect( self.selectInputFileButton, SIGNAL( "clicked()" ), self.fillInputFile )
         QObject.connect( self.selectOutputFileButton, SIGNAL( "clicked()" ), self.fillOutputFileEdit )
 
+  def onLayersChanged(self):
+      self.fillInputLayerCombo()
+
   def fillInputLayerCombo(self):
       self.inputLayerCombo.clear()
-      ( self.layers, names ) = Utils.getRasterLayers()
+      ( self.layers, names ) = Utils.LayerRegistry.instance().getRasterLayers()
       self.inputLayerCombo.addItems( names )
 
   def fillInputFile( self ):

Modified: trunk/qgis/python/plugins/GdalTools/tools/doWarp.py
===================================================================
--- trunk/qgis/python/plugins/GdalTools/tools/doWarp.py	2011-03-14 12:48:50 UTC (rev 15473)
+++ trunk/qgis/python/plugins/GdalTools/tools/doWarp.py	2011-03-14 16:01:10 UTC (rev 15474)
@@ -51,7 +51,6 @@
       self.connect(self.selectTargetSRSButton, SIGNAL("clicked()"), self.fillTargetSRSEdit)
       self.connect( self.batchCheck, SIGNAL( "stateChanged( int )" ), self.switchToolMode )
 
-      self.fillInputLayerCombo()
 
   # switch to batch or normal mode
   def switchToolMode( self ):
@@ -89,9 +88,12 @@
         QObject.connect( self.selectInputFileButton, SIGNAL( "clicked()" ), self.fillInputFile )
         QObject.connect( self.selectOutputFileButton, SIGNAL( "clicked()" ), self.fillOutputFileEdit )
 
+  def onLayersChanged(self):
+      self.fillInputLayerCombo()
+
   def fillInputLayerCombo(self):
       self.inputLayerCombo.clear()
-      ( self.layers, names ) = Utils.getRasterLayers()
+      ( self.layers, names ) = Utils.LayerRegistry.instance().getRasterLayers()
       self.inputLayerCombo.addItems( names )
 
   def fillInputFile(self):

Modified: trunk/qgis/python/plugins/GdalTools/tools/widgetPluginBase.py
===================================================================
--- trunk/qgis/python/plugins/GdalTools/tools/widgetPluginBase.py	2011-03-14 12:48:50 UTC (rev 15473)
+++ trunk/qgis/python/plugins/GdalTools/tools/widgetPluginBase.py	2011-03-14 16:01:10 UTC (rev 15474)
@@ -24,11 +24,18 @@
   def someValueChanged(self):
       self.emit(SIGNAL("valuesChanged(const QStringList &)"), self.getArguments())
 
+  def onLayersChanged(self):
+      pass
+
   def exec_(self):
+      self.connect(Utils.LayerRegistry.instance(), SIGNAL("layersChanged"), self.onLayersChanged)
+      self.layersChanged()
       self.someValueChanged()
       return self.base.exec_()
 
   def show_(self):
+      self.connect(Utils.LayerRegistry.instance(), SIGNAL("layersChanged"), self.onLayersChanged)
+      self.onLayersChanged()
       self.someValueChanged()
       return self.base.show()
 
@@ -40,6 +47,7 @@
       self.base.onRun()
 
   def onClosing(self):
+      self.disconnect(Utils.LayerRegistry.instance(), SIGNAL("layersChanged"), self.onLayersChanged)
       self.base.onClosing()
 
   def onHelp(self):



More information about the QGIS-commit mailing list