瀏覽代碼

improve vector layer selection

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@46851 15284696-431f-4ddb-bdfa-cd5b030d7da7
Markus Metz 14 年之前
父節點
當前提交
5d43539968
共有 2 個文件被更改,包括 14 次插入12 次删除
  1. 12 10
      gui/wxpython/gui_modules/gselect.py
  2. 2 2
      gui/wxpython/gui_modules/menuform.py

+ 12 - 10
gui/wxpython/gui_modules/gselect.py

@@ -646,8 +646,6 @@ class LayerSelect(wx.ComboBox):
     def InsertLayers(self, vector = None, dsn = None):
         """!Insert layers for a vector into the layer combobox
 
-        @todo Implement native format
-        
         @param vector vector map name (native or connected via v.external)
         @param dsn    OGR data source name
         """
@@ -656,7 +654,10 @@ class LayerSelect(wx.ComboBox):
             layers.append('-1')
 
         if vector:
-            # TODO
+            # TODO: use Vect_get_field2() in C modules where possible
+            # currently the following is identical to
+            # layers = utils.GetVectorNumberOfLayers(self, vector)
+
             ret = gcmd.RunCommand('v.db.connect',
                                   read = True,
                                   quiet = True,
@@ -672,7 +673,7 @@ class LayerSelect(wx.ComboBox):
                     # which is not the case right now
                     ### layers.append(layername[len(layername) - 1])
                     layers.append(layername[0])
-            
+
         elif dsn:
             ret = gcmd.RunCommand('v.in.ogr',
                                   read = True,
@@ -682,13 +683,14 @@ class LayerSelect(wx.ComboBox):
             if ret:
                 layers = ret.splitlines()
     
-        if len(layers) == 0:
-            if self.default == None:
-                layers.append('')
-            else:
+        if self.default:
+            if len(layers) == 0:
+                layers.insert(0, str(self.default))
+            elif self.default not in layers:
                 layers.append(self.default)
-        self.SetItems(layers)
-        #self.SetSelection(0)
+
+        if len(layers) > 0:
+            self.SetItems(layers)
         
 class DriverSelect(wx.ComboBox):
     """!Creates combo box for selecting database driver.

+ 2 - 2
gui/wxpython/gui_modules/menuform.py

@@ -1239,13 +1239,13 @@ class cmdPanel(wx.Panel):
                                                           default = p['default'])
                                 win.Bind(wx.EVT_TEXT, self.OnUpdateSelection)
                                 win.Bind(wx.EVT_TEXT, self.OnSetValue)
+                                win.SetValue(str(value))    # default or previously set value
                             else:
                                 win = wx.SpinCtrl(parent = which_panel, id = wx.ID_ANY,
                                                   min = 1, max = 100, initial = int(p['default']))
                                 win.Bind(wx.EVT_SPINCTRL, self.OnSetValue)
+                                win.SetValue(int(value))    # default or previously set value
 
-                            win.SetValue(str(value))
-                            
                             p['wxId'] = [ win.GetId() ]
 
                         elif p.get('prompt', '') ==  'dbdriver':