浏览代码

wxGUI/prompt: auto-complete mapsets

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@48982 15284696-431f-4ddb-bdfa-cd5b030d7da7
Martin Landa 13 年之前
父节点
当前提交
08e2a0fbaf
共有 1 个文件被更改,包括 21 次插入14 次删除
  1. 21 14
      gui/wxpython/gui_modules/prompt.py

+ 21 - 14
gui/wxpython/gui_modules/prompt.py

@@ -489,6 +489,7 @@ class GPrompt(object):
                 self.moduleDesc = parent.parent.menubar.GetData().GetModules()
             self.moduleList = self._getListOfModules()
             self.mapList = self._getListOfMaps()
+            self.mapsetList = utils.ListOfMapsets()
         else:
             self.moduleDesc = self.moduleList = self.mapList = None
         
@@ -829,22 +830,22 @@ class GPromptSTC(GPrompt, wx.stc.StyledTextCtrl):
         except IndexError:
             return None
         
-        if len(entry.split(' ')) > 1:
+        if len(utils.split(str(entry))) > 1:
             if cmd in globalvar.grassCmd['all']:
                 toComplete['cmd'] = cmd
                 if entry[-1] == ' ':
                     words = entry.split(' ')
                     if any(word.startswith('-') for word in words):
                         toComplete['entity'] = 'params'
-                        return toComplete
                     else:
                         toComplete['entity'] = 'params+flags'
-                        return toComplete
-                    
                 else:
-                    #get word left from current position
+                    # get word left from current position
                     word = self.GetWordLeft(withDelimiter = True)
-                    if word[0] == '=':
+                    
+                    if word[0] == '=' and word[-1] == '@':
+                        toComplete['entity'] = 'mapsets'
+                    elif word[0] == '=':
                         # get name of parameter
                         paramName = self.GetWordLeft(withDelimiter = False, ignoredDelimiter = '=').strip('=')
                         if paramName:
@@ -854,29 +855,24 @@ class GPromptSTC(GPrompt, wx.stc.StyledTextCtrl):
                                 return
                         else:
                             return
-
+                        
                         if param['values']:
                             toComplete['entity'] = 'param values'
-                            return toComplete
                         elif param['prompt'] == 'raster' and param['element'] == 'cell':
                             toComplete['entity'] = 'raster map'
-                            return toComplete
                         elif param['prompt'] == 'vector' and param['element'] == 'vector':
                             toComplete['entity'] = 'vector map'
-                            return toComplete
                     elif word[0] == '-':
                         toComplete['entity'] = 'flags'
-                        return toComplete
                     elif word[0] == ' ':
                         toComplete['entity'] = 'params'
-                        return toComplete
-                                       
             else:
                 return None
         else:
             toComplete['entity'] = 'command'
             toComplete['cmd'] = cmd
-            return toComplete
+        
+        return toComplete
     
     def GetWordLeft(self, withDelimiter = False, ignoredDelimiter = None):
         """!Get word left from current cursor position. The beginning
@@ -959,6 +955,17 @@ class GPromptSTC(GPrompt, wx.stc.StyledTextCtrl):
                     param = self.GetWordLeft(withDelimiter = False, ignoredDelimiter='=').strip(' =')
                     self.autoCompList = self.cmdDesc.get_param(param)['values']
             self.ShowList()
+        
+        # complete mapset ('@')
+        elif event.GetKeyCode() == 50 and event.ShiftDown():
+            self.autoCompList = list()
+            self.InsertText(pos, '@')
+            self.CharRight()
+            self.toComplete = self.EntityToComplete()
+            
+            if self.toComplete and self.toComplete['entity'] == 'mapsets':
+                self.autoCompList = self.mapsetList
+            self.ShowList()
             
         # complete after pressing CTRL + Space          
         elif event.GetKeyCode() == wx.WXK_SPACE and event.ControlDown():