[GRASS-SVN] r39338 - grass/branches/develbranch_6/gui/wxpython/gui_modules

svn_grass at osgeo.org svn_grass at osgeo.org
Tue Sep 29 14:25:49 EDT 2009


Author: martinl
Date: 2009-09-29 14:25:49 -0400 (Tue, 29 Sep 2009)
New Revision: 39338

Modified:
   grass/branches/develbranch_6/gui/wxpython/gui_modules/utils.py
Log:
wxGUI: support multi-line map names (useful for rgb, his) 
       (merge r39337 from trunk)


Modified: grass/branches/develbranch_6/gui/wxpython/gui_modules/utils.py
===================================================================
--- grass/branches/develbranch_6/gui/wxpython/gui_modules/utils.py	2009-09-29 18:22:37 UTC (rev 39337)
+++ grass/branches/develbranch_6/gui/wxpython/gui_modules/utils.py	2009-09-29 18:25:49 UTC (rev 39338)
@@ -71,7 +71,7 @@
                         layerType=None):
     """!Get map name from GRASS command
 
-    @param dcmd GRASS command (given as tuple)
+    @param dcmd GRASS command (given as list)
     @param fullyQualified change map name to be fully qualified
     @param force parameter otherwise 'input'/'map'
     @param update change map name in command
@@ -82,7 +82,7 @@
     """
     mapname = ''
 
-    if not dcmd:
+    if len(dcmd) < 1:
         return mapname
     
     if 'd.grid' == dcmd[0]:
@@ -94,41 +94,54 @@
     elif 'labels=' in dcmd[0]:
         mapname = dcmd[idx].split('=')[1]+' labels'
     else:
+        params = list()
         for idx in range(len(dcmd)):
-            if param and param in dcmd[idx]:
+            try:
+                p, v = dcmd[idx].split('=')
+            except ValueError:
+                continue
+            
+            if p == param:
+                params.append((idx, p, v))
                 break
-            elif not param:
-                if 'map=' in dcmd[idx] or \
-                        'input=' in dcmd[idx] or \
-                        'red=' in dcmd[idx] or \
-                        'h_map=' in dcmd[idx] or \
-                        'reliefmap' in dcmd[idx]:
-                    break
             
-        if idx < len(dcmd):
-            try:
-                mapname = dcmd[idx].split('=')[1]
-            except IndexError:
-                return ''
+            if p in ('map', 'input',
+                     'red', 'blue', 'green',
+                     'h_map', 's_map', 'i_map',
+                     'reliefmap'):
+                params.append((idx, p, v))
             
-            if fullyQualified and '@' not in mapname:
-                if layerType in ('raster', 'vector', '3d-raster'):
-                    try:
-                        if layerType == 'raster':
-                            findType = 'cell'
-                        else:
-                            findType = layerType
-                        result = grass.find_file(mapname, element=findType)
-                    except AttributeError, e: # not found
-                        return ''
-                    if result:
-                        mapname = result['fullname']
+        if len(params) < 1:
+            return mapname
+            
+        mapname = params[0][2]
+        mapset = ''
+        if fullyQualified and '@' not in mapname:
+            if layerType in ('raster', 'vector', '3d-raster'):
+                try:
+                    if layerType == 'raster':
+                        findType = 'cell'
                     else:
-                        mapname += '@' + grass.gisenv()['MAPSET']
+                        findType = layerType
+                    result = grass.find_file(mapname, element=findType)
+                except AttributeError, e: # not found
+                    return ''
+                if result:
+                    mapset = result['mapset']
                 else:
-                    mapname += '@' + grass.gisenv()['MAPSET']
-                dcmd[idx] = dcmd[idx].split('=')[0] + '=' + mapname
-                
+                    mapset = grass.gisenv()['MAPSET']
+            else:
+                mapset = grass.gisenv()['MAPSET']
+            
+            # update dcmd
+            for i, p, v in params:
+                dcmd[i] = p + '=' + v + '@' + mapset
+    
+        maps = list()
+        for i, p, v in params:
+            maps.append(dcmd[i].split('=')[1])
+        mapname = '\n'.join(maps)
+    
     return mapname
 
 def GetValidLayerName(name):



More information about the grass-commit mailing list