Просмотр исходного кода

wxGUI: replace utils cmd list <-> tuple by grass.script.gtask functions

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@64406 15284696-431f-4ddb-bdfa-cd5b030d7da7
Martin Landa 10 лет назад
Родитель
Сommit
8fac0f25e2

+ 2 - 2
gui/wxpython/animation/nviztask.py

@@ -22,7 +22,7 @@ except ImportError:
 
 
 from core.workspace import ProcessWorkspaceFile
 from core.workspace import ProcessWorkspaceFile
 from core.gcmd import RunCommand, GException
 from core.gcmd import RunCommand, GException
-from core.utils import GetLayerNameFromCmd, CmdToTuple, _
+from core.utils import GetLayerNameFromCmd, _
 from grass.script import task as gtask
 from grass.script import task as gtask
 from core.settings import UserSettings
 from core.settings import UserSettings
 
 
@@ -284,7 +284,7 @@ class NvizTask:
         self.task.set_flag('overwrite', True)
         self.task.set_flag('overwrite', True)
         self.task.set_param('output', 'tobechanged')
         self.task.set_param('output', 'tobechanged')
         cmd = self.task.get_cmd(ignoreErrors=False, ignoreRequired=False, ignoreDefault=True)
         cmd = self.task.get_cmd(ignoreErrors=False, ignoreRequired=False, ignoreDefault=True)
-        return CmdToTuple(cmd)
+        return gtask.cmdlist_to_tuple(cmd)
 
 
     def GetRegion(self):
     def GetRegion(self):
         return self.region
         return self.region

+ 5 - 4
gui/wxpython/animation/provider.py

@@ -29,11 +29,12 @@ from multiprocessing import Process, Queue
 from core.gcmd import RunCommand, GException
 from core.gcmd import RunCommand, GException
 from core.settings import UserSettings
 from core.settings import UserSettings
 from core.debug import Debug
 from core.debug import Debug
-from core.utils import _, CmdToTuple, autoCropImageFromFile
+from core.utils import _, autoCropImageFromFile
 
 
 from animation.utils import HashCmd, HashCmds, GetFileFromCmd, GetFileFromCmds
 from animation.utils import HashCmd, HashCmds, GetFileFromCmd, GetFileFromCmds
 
 
 import grass.script.core as gcore
 import grass.script.core as gcore
+from grass.script.task import cmdlist_to_tuple
 from grass.pydispatch.signal import Signal
 from grass.pydispatch.signal import Signal
 
 
 
 
@@ -269,7 +270,7 @@ class BitmapProvider:
                         transparent=True, bgcolor=(0, 0, 0))
                         transparent=True, bgcolor=(0, 0, 0))
 
 
         Debug.msg(1, "Render raster legend " + str(filename))
         Debug.msg(1, "Render raster legend " + str(filename))
-        cmdTuple = CmdToTuple(cmd)
+        cmdTuple = cmdlist_to_tuple(cmd)
         returncode, stdout, messages = read2_command(cmdTuple[0], **cmdTuple[1])
         returncode, stdout, messages = read2_command(cmdTuple[0], **cmdTuple[1])
 
 
         if returncode == 0:
         if returncode == 0:
@@ -490,7 +491,7 @@ def RenderProcess2D(imageWidth, imageHeight, tempDir, cmd, region, bgcolor, file
                     transparent=transparency, bgcolor=bgcolor)
                     transparent=transparency, bgcolor=bgcolor)
     if region:
     if region:
         os.environ['GRASS_REGION'] = gcore.region_env(**region)
         os.environ['GRASS_REGION'] = gcore.region_env(**region)
-    cmdTuple = CmdToTuple(cmd)
+    cmdTuple = cmdlist_to_tuple(cmd)
     returncode, stdout, messages = read2_command(cmdTuple[0], **cmdTuple[1])
     returncode, stdout, messages = read2_command(cmdTuple[0], **cmdTuple[1])
     if returncode != 0:
     if returncode != 0:
         gcore.warning("Rendering failed:\n" + messages)
         gcore.warning("Rendering failed:\n" + messages)
@@ -523,7 +524,7 @@ def RenderProcess3D(imageWidth, imageHeight, tempDir, cmd, region, bgcolor, file
     os.environ['GRASS_REGION'] = gcore.region_env(region3d=True, **region)
     os.environ['GRASS_REGION'] = gcore.region_env(region3d=True, **region)
     Debug.msg(1, "Render image to file " + str(filename))
     Debug.msg(1, "Render image to file " + str(filename))
 
 
-    cmdTuple = CmdToTuple(cmd)
+    cmdTuple = cmdlist_to_tuple(cmd)
     cmdTuple[1]['output'] = os.path.splitext(filename)[0]
     cmdTuple[1]['output'] = os.path.splitext(filename)[0]
     # set size
     # set size
     cmdTuple[1]['size'] = '%d,%d' % (imageWidth, imageHeight)
     cmdTuple[1]['size'] = '%d,%d' % (imageWidth, imageHeight)

+ 5 - 4
gui/wxpython/core/render.py

@@ -39,6 +39,7 @@ import wx
 
 
 from grass.script import core as grass
 from grass.script import core as grass
 from grass.script.utils import try_remove
 from grass.script.utils import try_remove
+from grass.script.task import cmdlist_to_tuple
 from grass.pydispatch.signal import Signal
 from grass.pydispatch.signal import Signal
 
 
 from core          import utils
 from core          import utils
@@ -104,9 +105,9 @@ class Layer(object):
         if self.type == 'command':
         if self.type == 'command':
             self.cmd = list()
             self.cmd = list()
             for c in cmd:
             for c in cmd:
-                self.cmd.append(utils.CmdToTuple(c))
+                self.cmd.append(cmdlist_to_tuple(c))
         else:
         else:
-            self.cmd = utils.CmdToTuple(cmd)
+            self.cmd = cmdlist_to_tuple(cmd)
 
 
         self.active  = active
         self.active  = active
         self.hidden  = hidden
         self.hidden  = hidden
@@ -302,9 +303,9 @@ class Layer(object):
         if self.type == 'command':
         if self.type == 'command':
             self.cmd = []
             self.cmd = []
             for c in cmd:
             for c in cmd:
-                self.cmd.append(utils.CmdToTuple(c))
+                self.cmd.append(cmdlist_to_tuple(c))
         else:
         else:
-            self.cmd = utils.CmdToTuple(cmd)
+            self.cmd = cmdlist_to_tuple(cmd)
         Debug.msg(3, "Layer.SetCmd(): cmd='%s'" % self.GetCmd(string = True))
         Debug.msg(3, "Layer.SetCmd(): cmd='%s'" % self.GetCmd(string = True))
 
 
         # for re-rendering
         # for re-rendering

+ 1 - 52
gui/wxpython/core/utils.py

@@ -480,58 +480,7 @@ def GetCmdString(cmd):
     
     
     :return: command string
     :return: command string
     """
     """
-    return ' '.join(CmdTupleToList(cmd))
-
-def CmdTupleToList(cmd):
-    """Convert command tuple to list.
-    
-    :param cmd: GRASS command given as tuple
-    
-    :return: command in list
-    """
-    cmdList = []
-    if not cmd:
-        return cmdList
-    
-    cmdList.append(cmd[0])
-    
-    if 'flags' in cmd[1]:
-        for flag in cmd[1]['flags']:
-            cmdList.append('-' + flag)
-    for flag in ('help', 'verbose', 'quiet', 'overwrite'):
-        if flag in cmd[1] and cmd[1][flag] is True:
-            cmdList.append('--' + flag)
-    
-    for k, v in cmd[1].iteritems():
-        if k in ('flags', 'help', 'verbose', 'quiet', 'overwrite'):
-            continue
-        cmdList.append('%s=%s' % (k, v))
-            
-    return cmdList
-
-def CmdToTuple(cmd):
-    """Convert command list to tuple for gcmd.RunCommand()"""
-    if len(cmd) < 1:
-        return None
-    
-    dcmd = {}
-    for item in cmd[1:]:
-        if '=' in item: # params
-            key, value = item.split('=', 1)
-            dcmd[str(key)] = str(value).replace('"', '')
-        elif item[:2] == '--': # long flags
-            flag = item[2:]
-            if flag in ('help', 'verbose', 'quiet', 'overwrite'):
-                dcmd[str(flag)] = True
-        elif len(item) == 2 and item[0] == '-': # -> flags
-            if 'flags' not in dcmd:
-                dcmd['flags'] = ''
-            dcmd['flags'] += item[1]
-        else: # unnamed parameter
-            module = gtask.parse_interface(cmd[0])
-            dcmd[module.define_first()] = item
-    
-    return (cmd[0], dcmd)
+    return ' '.join(gtask.cmdtuple_to_list(cmd))
 
 
 def PathJoin(*args):
 def PathJoin(*args):
     """Check path created by os.path.join"""
     """Check path created by os.path.join"""

+ 2 - 1
gui/wxpython/core/ws.py

@@ -23,6 +23,7 @@ import wx
 from wx.lib.newevent import NewEvent
 from wx.lib.newevent import NewEvent
 
 
 from grass.script.utils import try_remove
 from grass.script.utils import try_remove
+from grass.script.task import cmdtuple_to_list
 from grass.script import core as grass
 from grass.script import core as grass
 
 
 from core          import utils
 from core          import utils
@@ -126,7 +127,7 @@ class RenderWMSMgr(wx.EvtHandler):
             self.downloading = True
             self.downloading = True
 
 
             self.fetching_cmd = cmd
             self.fetching_cmd = cmd
-            cmdList = utils.CmdTupleToList(cmd)
+            cmdList = cmdtuple_to_list(cmd)
 
 
             if Debug.GetLevel() < 3:
             if Debug.GetLevel() < 3:
                 cmdList.append('--quiet')
                 cmdList.append('--quiet')

+ 1 - 1
gui/wxpython/gmodeler/model.py

@@ -670,7 +670,7 @@ class Model(object):
                 vlist = list()
                 vlist = list()
                 if condText[0] == '`' and condText[-1] == '`':
                 if condText[0] == '`' and condText[-1] == '`':
                     # run command
                     # run command
-                    cmd, dcmd = utils.CmdToTuple(condText[1:-1].split(' '))
+                    cmd, dcmd = gtask.cmdlist_to_tuple(condText[1:-1].split(' '))
                     ret = RunCommand(cmd,
                     ret = RunCommand(cmd,
                                      read = True,
                                      read = True,
                                      **dcmd)
                                      **dcmd)

+ 2 - 1
gui/wxpython/mapdisp/main.py

@@ -44,6 +44,7 @@ from core.settings import UserSettings
 
 
 from grass.script.utils import try_remove
 from grass.script.utils import try_remove
 from grass.script import core as grass
 from grass.script import core as grass
+from grass.script.task import cmdtuple_to_list
 from grass.pydispatch.signal import Signal
 from grass.pydispatch.signal import Signal
 
 
 # for standalone app
 # for standalone app
@@ -248,7 +249,7 @@ class Layer(object):
 
 
     def __getattr__(self, name):
     def __getattr__(self, name):
         if name == 'cmd':
         if name == 'cmd':
-            return utils.CmdTupleToList(self._maplayer.GetCmd())
+            return cmdtuple_to_list(self._maplayer.GetCmd())
         elif hasattr(self._maplayer, name):
         elif hasattr(self._maplayer, name):
             return getattr(self._maplayer, name)
             return getattr(self._maplayer, name)
         elif name == 'maplayer':
         elif name == 'maplayer':

+ 4 - 3
gui/wxpython/modules/colorrules.py

@@ -33,6 +33,7 @@ import wx.lib.scrolledpanel    as scrolled
 import wx.lib.filebrowsebutton as filebrowse
 import wx.lib.filebrowsebutton as filebrowse
 
 
 import grass.script as grass
 import grass.script as grass
+from grass.script.task import cmdlist_to_tuple
 
 
 from core             import globalvar
 from core             import globalvar
 from core             import utils
 from core             import utils
@@ -692,7 +693,7 @@ class ColorTable(wx.Frame):
             if self.properties['sourceColumn'] and self.properties['sourceColumn'] != 'cat':
             if self.properties['sourceColumn'] and self.properties['sourceColumn'] != 'cat':
                 cmd.append('column=%s' % self.properties['sourceColumn'])
                 cmd.append('column=%s' % self.properties['sourceColumn'])
             
             
-        cmd = utils.CmdToTuple(cmd)
+        cmd = cmdlist_to_tuple(cmd)
         
         
         if self.inmap:
         if self.inmap:
             ctable = RunCommand(cmd[0], **cmd[1])
             ctable = RunCommand(cmd[0], **cmd[1])
@@ -739,7 +740,7 @@ class ColorTable(wx.Frame):
         if self.mapType == 'vector' and self.properties['sourceColumn'] \
         if self.mapType == 'vector' and self.properties['sourceColumn'] \
                 and self.properties['sourceColumn'] != 'cat':
                 and self.properties['sourceColumn'] != 'cat':
             cmd.append('column=%s' % self.properties['sourceColumn'])
             cmd.append('column=%s' % self.properties['sourceColumn'])
-        cmd = utils.CmdToTuple(cmd)
+        cmd = cmdlist_to_tuple(cmd)
         ret = RunCommand(cmd[0], **cmd[1])               
         ret = RunCommand(cmd[0], **cmd[1])               
         if ret != 0:
         if ret != 0:
             return False
             return False
@@ -1371,7 +1372,7 @@ class VectorColorTable(ColorTable):
     def CreateAttrTable(self, dcmd, layer, params, propwin):
     def CreateAttrTable(self, dcmd, layer, params, propwin):
         """Create attribute table"""
         """Create attribute table"""
         if dcmd:
         if dcmd:
-            cmd = utils.CmdToTuple(dcmd)
+            cmd = cmdlist_to_tuple(dcmd)
             ret = RunCommand(cmd[0], **cmd[1])
             ret = RunCommand(cmd[0], **cmd[1])
             if ret == 0:
             if ret == 0:
                 self.OnSelectionInput(None)
                 self.OnSelectionInput(None)

+ 3 - 2
gui/wxpython/psmap/instructions.py

@@ -39,9 +39,10 @@ from time import strftime, localtime
 
 
 import wx
 import wx
 import grass.script as grass
 import grass.script as grass
+from grass.script.task import cmdlist_to_tuple
 
 
 from core.gcmd          import RunCommand, GError, GMessage, GWarning
 from core.gcmd          import RunCommand, GError, GMessage, GWarning
-from core.utils         import CmdToTuple, GetCmdString, _
+from core.utils         import GetCmdString, _
 from dbmgr.vinfo        import VectorDBInfo
 from dbmgr.vinfo        import VectorDBInfo
 from psmap.utils        import *
 from psmap.utils        import *
 
 
@@ -439,7 +440,7 @@ class Instruction:
         map = MapFrame(wx.NewId())
         map = MapFrame(wx.NewId())
         self.AddInstruction(map)
         self.AddInstruction(map)
         if regionInstruction:
         if regionInstruction:
-            cmd = CmdToTuple(regionInstruction.strip('# ').split())
+            cmd = cmdlist_to_tuple(regionInstruction.strip('# ').split())
             
             
             # define scaleType
             # define scaleType
             if len(cmd[1]) <= 3:
             if len(cmd[1]) <= 3:

+ 2 - 1
gui/wxpython/vnet/vnet_core.py

@@ -22,6 +22,7 @@ This program is free software under the GNU General Public License
 import os
 import os
 from grass.script.utils import try_remove
 from grass.script.utils import try_remove
 from grass.script     import core as grass
 from grass.script     import core as grass
+from grass.script.task import cmdlist_to_tuple
 
 
 import wx
 import wx
 
 
@@ -361,7 +362,7 @@ class VNETManager:
                                                 cmd=cmd,
                                                 cmd=cmd,
                                                 checked=True)
                                                 checked=True)
             if cmd_colors:
             if cmd_colors:
-                layerStyleVnetColors = utils.CmdToTuple(cmd_colors)
+                layerStyleVnetColors = cmdlist_to_tuple(cmd_colors)
 
 
                 RunCommand(layerStyleVnetColors[0],
                 RunCommand(layerStyleVnetColors[0],
                         **layerStyleVnetColors[1])
                         **layerStyleVnetColors[1])

+ 2 - 1
gui/wxpython/vnet/vnet_data.py

@@ -28,6 +28,7 @@ from copy import deepcopy
 
 
 from grass.script.utils import try_remove
 from grass.script.utils import try_remove
 from grass.script     import core as grass
 from grass.script     import core as grass
+from grass.script.task import cmdlist_to_tuple
 
 
 import wx
 import wx
 
 
@@ -992,7 +993,7 @@ class VectMap:
 
 
         if colorsCmd:
         if colorsCmd:
             colorsCmd.append('map=%s' % self.fullName)
             colorsCmd.append('map=%s' % self.fullName)
-            layerStyleVnetColors = utils.CmdToTuple(colorsCmd)
+            layerStyleVnetColors = cmdlist_to_tuple(colorsCmd)
 
 
             RunCommand(layerStyleVnetColors[0],
             RunCommand(layerStyleVnetColors[0],
                         **layerStyleVnetColors[1])
                         **layerStyleVnetColors[1])

+ 5 - 4
gui/wxpython/web_services/dialogs.py

@@ -27,11 +27,12 @@ import shutil
 from copy      import deepcopy
 from copy      import deepcopy
 
 
 import grass.script as grass
 import grass.script as grass
+from grass.script.task import cmdlist_to_tuple, cmdtuple_to_list
 
 
 from core             import globalvar
 from core             import globalvar
 from core.debug       import Debug
 from core.debug       import Debug
 from core.gcmd        import GMessage, GWarning, GError, RunCommand
 from core.gcmd        import GMessage, GWarning, GError, RunCommand
-from core.utils       import GetSettingsPath, CmdToTuple, CmdTupleToList, _
+from core.utils       import GetSettingsPath, _
 from core.gconsole    import CmdThread, GStderr, EVT_CMD_DONE, EVT_CMD_OUTPUT
 from core.gconsole    import CmdThread, GStderr, EVT_CMD_DONE, EVT_CMD_OUTPUT
 
 
 from gui_core.gselect import Select
 from gui_core.gselect import Select
@@ -549,7 +550,7 @@ class AddWSDialog(WSDialogBase):
         ws_cap_files = self._getCapFiles()
         ws_cap_files = self._getCapFiles()
         # create properties dialog
         # create properties dialog
         cmd_list = ltree.GetLayerInfo(layer,'cmd')
         cmd_list = ltree.GetLayerInfo(layer,'cmd')
-        cmd = CmdToTuple(cmd_list)
+        cmd = cmdlist_to_tuple(cmd_list)
 
 
         prop_win = WSPropertiesDialog(parent = self.parent,
         prop_win = WSPropertiesDialog(parent = self.parent,
                                       giface = self.giface,
                                       giface = self.giface,
@@ -705,7 +706,7 @@ class WSPropertiesDialog(WSDialogBase):
                                               propwin = self)
                                               propwin = self)
 
 
         #TODO use just list or tuple
         #TODO use just list or tuple
-        cmd = CmdToTuple(lcmd)
+        cmd = cmdlist_to_tuple(lcmd)
         self.revert_cmd = cmd
         self.revert_cmd = cmd
         self._setRevertCapFiles(self._getCapFiles())
         self._setRevertCapFiles(self._getCapFiles())
 
 
@@ -992,7 +993,7 @@ class SaveWMSLayerDialog(wx.Dialog):
             region = self._giface.GetMapWindow().GetMap().SetRegion()
             region = self._giface.GetMapWindow().GetMap().SetRegion()
             env['GRASS_REGION'] = region
             env['GRASS_REGION'] = region
 
 
-        cmdList = CmdTupleToList(cmd)
+        cmdList = cmdtuple_to_list(cmd)
         self.currentPid = self.thread.GetId()
         self.currentPid = self.thread.GetId()
 
 
         self.thread.RunCmd(cmdList, env=env, stderr=self.cmdStdErr)
         self.thread.RunCmd(cmdList, env=env, stderr=self.cmdStdErr)