[GRASS-SVN] r36996 - grass/branches/releasebranch_6_4/gui/wxpython/gui_modules

svn_grass at osgeo.org svn_grass at osgeo.org
Tue May 5 02:51:20 EDT 2009


Author: martinl
Date: 2009-05-05 02:51:19 -0400 (Tue, 05 May 2009)
New Revision: 36996

Modified:
   grass/branches/releasebranch_6_4/gui/wxpython/gui_modules/menuform.py
Log:
wxGUI: OnUpdateSelection() synchronized with devbr6 (minor speed-up)


Modified: grass/branches/releasebranch_6_4/gui/wxpython/gui_modules/menuform.py
===================================================================
--- grass/branches/releasebranch_6_4/gui/wxpython/gui_modules/menuform.py	2009-05-04 18:16:38 UTC (rev 36995)
+++ grass/branches/releasebranch_6_4/gui/wxpython/gui_modules/menuform.py	2009-05-05 06:51:19 UTC (rev 36996)
@@ -1529,8 +1529,10 @@
         event.Skip()
         
     def OnUpdateSelection(self, event):
-        """Update list of available layers, tables, columns for
-        vector map layer"""
+        """
+        Update dialog (layers, tables, columns, etc.)
+        """
+        # get widget id
         if not event:
             id = None
             for p in self.task.params:
@@ -1551,11 +1553,13 @@
         if not p or \
                 not p.has_key('wxId-bind'):
             return
-        
+
+        # get widget prompt
         pType = p.get('prompt', '')
         if not pType:
             return
 
+        # check for map/input parameter
         pMap = self.task.get_param('map', raiseError=False)
         if not pMap:
             pMap = self.task.get_param('input', raiseError=False)
@@ -1565,6 +1569,10 @@
         else:
             map = None
         
+        # avoid multiple updating
+        columns = []
+        
+        # update reference widgets
         for uid in p['wxId-bind']:
             win = self.FindWindowById(uid)
             name = win.GetName()
@@ -1584,33 +1592,37 @@
                 win.InsertTables(driver, db)
             
             elif name == 'ColumnSelect':
-                pLayer = self.task.get_param('layer', element='element', raiseError=False)
-                if pLayer:
-                    if pLayer.get('value', '') != '':
-                        layer = int(pLayer.get('value', 1))
+                if not columns:
+                    pLayer = self.task.get_param('layer', element='element', raiseError=False)
+                    if pLayer:
+                        if pLayer.get('value', '') != '':
+                            layer = int(pLayer.get('value', 1))
+                        else:
+                            layer = int(pLayer.get('default', 1))
                     else:
-                        layer = int(pLayer.get('default', 1))
+                        layer = 1
+                        
+                    if map:
+                        win.InsertColumns(map, layer)
+                        columns = win.GetItems()
+                    else: # table
+                        pDriver = self.task.get_param('dbdriver', element='prompt', raiseError=False)
+                        if pDriver:
+                            driver = pDriver.get('value', None)
+                        pDb = self.task.get_param('dbname', element='prompt', raiseError=False)
+                        if pDb:
+                            db = pDb.get('value', None)
+                        pTable = self.task.get_param('dbtable', element='element', raiseError=False)
+                        if pTable and \
+                                pTable.get('value', '') != '':
+                            if driver and db:
+                                win.InsertTableColumns(pTable.get('value'), driver, db)
+                            else:
+                                win.InsertTableColumns(pTable.get('value'))
+                            columns = win.GetItems()
                 else:
-                    layer = 1
-                if map:
-                    win.InsertColumns(map, layer)
-                else: # table
-                    pDriver = self.task.get_param('dbdriver', element='prompt', raiseError=False)
-                    if pDriver:
-                        driver = pDriver.get('value', None)
-                    pDb = self.task.get_param('dbname', element='prompt', raiseError=False)
-                    if pDb:
-                        db = pDb.get('value', None)
-                    pTable = self.task.get_param('dbtable', element='element', raiseError=False)
-                    if pTable and \
-                            pTable.get('value', '') != '':
-                        if driver and db:
-                            win.InsertTableColumns(pTable.get('value'), driver, db)
-                        else:
-                            win.InsertTableColumns(pTable.get('value'))
-        if event:
-            event.Skip()
-        
+                   win.SetItems(columns) 
+                
     def createCmd( self, ignoreErrors = False ):
         """
         Produce a command line string (list) or feeding into GRASS.



More information about the grass-commit mailing list