[GRASS-SVN] r52809 - grass/branches/releasebranch_6_4/gui/wxpython/modules
svn_grass at osgeo.org
svn_grass at osgeo.org
Tue Aug 21 03:50:44 PDT 2012
Author: annakrat
Date: 2012-08-21 03:50:43 -0700 (Tue, 21 Aug 2012)
New Revision: 52809
Modified:
grass/branches/releasebranch_6_4/gui/wxpython/modules/mcalc_builder.py
Log:
wxGUI/mapcalc: fix #1305, improving focus problem when adding map (merge from trunk, r52807)
Modified: grass/branches/releasebranch_6_4/gui/wxpython/modules/mcalc_builder.py
===================================================================
--- grass/branches/releasebranch_6_4/gui/wxpython/modules/mcalc_builder.py 2012-08-21 10:50:27 UTC (rev 52808)
+++ grass/branches/releasebranch_6_4/gui/wxpython/modules/mcalc_builder.py 2012-08-21 10:50:43 UTC (rev 52809)
@@ -111,6 +111,11 @@
element = 'rast3d'
else:
element = 'cell'
+
+ # characters which can be in raster map name but the map name must be then quoted
+ self.charactersToQuote = '+-&!<>%~?^|'
+ # stores last typed map name in Select widget to distinguish typing from selection
+ self.lastMapName = ''
self.operatorBox = wx.StaticBox(parent = self.panel, id = wx.ID_ANY,
label=" %s " % _('Operators'))
@@ -236,7 +241,7 @@
self.btn_save.Bind(wx.EVT_BUTTON, self.OnSaveExpression)
self.btn_load.Bind(wx.EVT_BUTTON, self.OnLoadExpression)
- self.mapselect.Bind(wx.EVT_TEXT, self.OnSelect)
+ self.mapselect.Bind(wx.EVT_TEXT, self.OnSelectTextEvt)
self.function.Bind(wx.EVT_COMBOBOX, self._return_funct)
self.function.Bind(wx.EVT_TEXT_ENTER, self.OnSelect)
self.newmaptxt.Bind(wx.EVT_TEXT, self.OnUpdateStatusBar)
@@ -389,11 +394,26 @@
elif event.GetId() == self.btn['parenr'].GetId(): mark = ")"
self._addSomething(mark)
+ def OnSelectTextEvt(self, event):
+ """!Checks if user is typing or the event was emited by map selection.
+ Prevents from changing focus.
+ """
+ item = event.GetString()
+ if not (abs(len(item) - len(self.lastMapName)) == 1 and \
+ self.lastMapName in item or item in self.lastMapName):
+ self.OnSelect(event)
+ self.lastMapName = item
+
def OnSelect(self, event):
"""!Gets raster map or function selection and send it to
- insertion method
+ insertion method.
+
+ Checks for characters which can be in raster map name but
+ the raster map name must be then quoted.
"""
- item = event.GetString()
+ item = event.GetString().strip()
+ if any((char in item) for char in self.charactersToQuote):
+ item = '"' + item + '"'
self._addSomething(item)
def OnUpdateStatusBar(self, event):
More information about the grass-commit
mailing list