[GRASS-SVN] r47150 -
grass/branches/develbranch_6/gui/wxpython/gui_modules
svn_grass at osgeo.org
svn_grass at osgeo.org
Mon Jul 18 03:38:18 EDT 2011
Author: martinl
Date: 2011-07-18 00:38:18 -0700 (Mon, 18 Jul 2011)
New Revision: 47150
Modified:
grass/branches/develbranch_6/gui/wxpython/gui_modules/gcmd.py
grass/branches/develbranch_6/gui/wxpython/gui_modules/gselect.py
grass/branches/develbranch_6/gui/wxpython/gui_modules/menuform.py
grass/branches/develbranch_6/gui/wxpython/gui_modules/utils.py
Log:
wxGUI: don't crash on v.db.connect
Modified: grass/branches/develbranch_6/gui/wxpython/gui_modules/gcmd.py
===================================================================
--- grass/branches/develbranch_6/gui/wxpython/gui_modules/gcmd.py 2011-07-18 07:03:03 UTC (rev 47149)
+++ grass/branches/develbranch_6/gui/wxpython/gui_modules/gcmd.py 2011-07-18 07:38:18 UTC (rev 47150)
@@ -619,10 +619,7 @@
else:
GError(parent = parent,
message = stderr)
-
- if ret != 0:
- return None
-
+
Debug.msg(3, "gcmd.RunCommand(): print read error")
if not read:
if not getErrorMsg:
Modified: grass/branches/develbranch_6/gui/wxpython/gui_modules/gselect.py
===================================================================
--- grass/branches/develbranch_6/gui/wxpython/gui_modules/gselect.py 2011-07-18 07:03:03 UTC (rev 47149)
+++ grass/branches/develbranch_6/gui/wxpython/gui_modules/gselect.py 2011-07-18 07:38:18 UTC (rev 47150)
@@ -626,16 +626,16 @@
class LayerSelect(wx.ComboBox):
"""!Creates combo box for selecting data layers defined for vector.
- The 'layer' terminology is likely to change for GRASS 7
"""
def __init__(self, parent,
- id=wx.ID_ANY, pos=wx.DefaultPosition,
- size=globalvar.DIALOG_LAYER_SIZE,
- vector=None, choices=[], initial=[], default=None):
-
+ id = wx.ID_ANY, pos = wx.DefaultPosition,
+ size = globalvar.DIALOG_LAYER_SIZE,
+ vector = None, choices = [], initial = [], default = None):
+
super(LayerSelect, self).__init__(parent, id, pos=pos, size=size,
choices=choices)
-
+
+ self.parent = parent
self.initial = initial
self.SetName("LayerSelect")
@@ -646,25 +646,39 @@
self.InsertLayers(vector = vector)
def InsertLayers(self, vector):
- """!Insert layers for a vector into the layer combobox"""
+ """!Insert layers for a vector into the layer combobox
+
+ @param vector name of vector map
+ """
if vector:
- layers = utils.GetVectorNumberOfLayers(self, vector)
+ layers = utils.GetVectorNumberOfLayers(vector)
else:
layers = list()
-
+
for layer in self.initial:
if layer in layers:
continue
layers.append(layer)
-
+
if self.default:
if len(layers) == 0:
layers.insert(0, str(self.default))
elif self.default not in layers:
layers.append(self.default)
-
+
if len(layers) >= 1:
self.SetItems(layers)
+
+ def Reset(self):
+ """!Reset value"""
+ items = self.GetItems()
+ if items:
+ if '-1' in items:
+ self.SetStringSelection('-1')
+ else:
+ self.SetSelection(0)
+ else:
+ self.SetValue('')
class DriverSelect(wx.ComboBox):
"""!Creates combo box for selecting database driver.
Modified: grass/branches/develbranch_6/gui/wxpython/gui_modules/menuform.py
===================================================================
--- grass/branches/develbranch_6/gui/wxpython/gui_modules/menuform.py 2011-07-18 07:03:03 UTC (rev 47149)
+++ grass/branches/develbranch_6/gui/wxpython/gui_modules/menuform.py 2011-07-18 07:38:18 UTC (rev 47150)
@@ -220,6 +220,7 @@
if name == 'LayerSelect':
if map in cparams and not cparams[map]['layers']:
win.InsertLayers(vector = map)
+ win.Reset()
cparams[map]['layers'] = win.GetItems()
elif name == 'TableSelect':
@@ -1149,16 +1150,16 @@
if lyrvalue not in initial:
initial.append(str(lyrvalue))
- win = gselect.LayerSelect(parent=which_panel,
- initial=initial,
- default=p['default'])
+ win = gselect.LayerSelect(parent = which_panel,
+ initial = initial,
+ default = p['default'])
p['wxGetValue'] = win.GetStringSelection
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 = 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
Modified: grass/branches/develbranch_6/gui/wxpython/gui_modules/utils.py
===================================================================
--- grass/branches/develbranch_6/gui/wxpython/gui_modules/utils.py 2011-07-18 07:03:03 UTC (rev 47149)
+++ grass/branches/develbranch_6/gui/wxpython/gui_modules/utils.py 2011-07-18 07:38:18 UTC (rev 47150)
@@ -272,8 +272,12 @@
"""!Sort list items (not case-sensitive)"""
list.sort(cmp=lambda x, y: cmp(x.lower(), y.lower()))
-def GetVectorNumberOfLayers(parent, vector):
- """!Get list of vector layers"""
+def GetVectorNumberOfLayers(vector, parent = None):
+ """!Get list of vector layers
+
+ @param vector name of vector map
+ @param parent parent window (to show dialog) or None
+ """
layers = []
if not vector:
return layers
@@ -283,19 +287,19 @@
Debug.msg(5, "utils.GetVectorNumberOfLayers(): vector map '%s' not found" % vector)
return layers
- ret = gcmd.RunCommand('v.db.connect',
- parent = parent,
- flags = 'g',
- read = True,
- map = fullname,
- fs = ';')
-
- if not ret:
+ ret, out, msg = gcmd.RunCommand('v.db.connect',
+ getErrorMsg = True,
+ read = True,
+ flags = 'g',
+ map = fullname,
+ fs = ';')
+ if ret != 0:
+ sys.stderr.write(_("Vector map <%s>") % fullname + ": " + msg + "\n")
return layers
- else:
- Debug.msg(1, "GetVectorNumberOfLayers(): ret %s" % ret)
- for line in ret.splitlines():
+ Debug.msg(1, "GetVectorNumberOfLayers(): ret %s" % ret)
+
+ for line in out.splitlines():
try:
layer = line.split(';')[0]
if '/' in layer:
More information about the grass-commit
mailing list