Browse Source

wxNviz: minor fixes in volume page

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@47009 15284696-431f-4ddb-bdfa-cd5b030d7da7
Anna Petrášová 14 years ago
parent
commit
462af1b6d2

+ 4 - 2
gui/wxpython/gui_modules/nviz_mapdisp.py

@@ -1176,7 +1176,7 @@ class GLWindow(MapWindow, glcanvas.GLCanvas):
         #
         #
         isosurfId = 0
         isosurfId = 0
         for isosurf in data['isosurface']:
         for isosurf in data['isosurface']:
-            for attrb in ('color', 'mask',
+            for attrb in ('topo', 'color', 'mask',
                           'transp', 'shine'):
                           'transp', 'shine'):
                 if attrb not in isosurf or \
                 if attrb not in isosurf or \
                         'update' not in isosurf[attrb]:
                         'update' not in isosurf[attrb]:
@@ -1186,7 +1186,9 @@ class GLWindow(MapWindow, glcanvas.GLCanvas):
                 
                 
                 if map is None: # unset
                 if map is None: # unset
                     # only optional attributes
                     # only optional attributes
-                    if attrb ==  'mask':
+                    if attrb == 'topo' :
+                         self._display.SetIsosurfaceTopo(id, isosurfId, map, str(value))
+                    elif attrb ==  'mask':
                         # TODO: invert mask
                         # TODO: invert mask
                         # TODO: broken in NVIZ
                         # TODO: broken in NVIZ
                         self._display.UnsetIsosurfaceMask(id, isosurfId)
                         self._display.UnsetIsosurfaceMask(id, isosurfId)

+ 46 - 29
gui/wxpython/gui_modules/nviz_tools.py

@@ -1453,7 +1453,7 @@ class NvizToolWindow(FN.FlatNotebook):
                     size = (65, -1)
                     size = (65, -1)
                 if fs:
                 if fs:
                     value = fs.FloatSpin(parent = panel, id = wx.ID_ANY,
                     value = fs.FloatSpin(parent = panel, id = wx.ID_ANY,
-                                         size = size, increment = 0.5, value = 0)
+                                         size = size, increment = 1, value = 0)
                     value.SetFormat("%f")
                     value.SetFormat("%f")
                     value.SetDigits(1)
                     value.SetDigits(1)
                 else:
                 else:
@@ -2332,7 +2332,8 @@ class NvizToolWindow(FN.FlatNotebook):
             incSel = -1 # decrement selection (no 'unset')
             incSel = -1 # decrement selection (no 'unset')
         else:
         else:
             incSel = 0
             incSel = 0
-        
+        if nvizType == 'volume' and attrb == 'topo':
+            return
         if map is True: # map
         if map is True: # map
             if attrb != 'topo': # changing map topography not allowed
             if attrb != 'topo': # changing map topography not allowed
                 # not sure why, but here must be disabled both ids, should be fixed!
                 # not sure why, but here must be disabled both ids, should be fixed!
@@ -2346,10 +2347,11 @@ class NvizToolWindow(FN.FlatNotebook):
                 self.FindWindowById(self.win[nvizType][attrb]['const']).Enable(True)
                 self.FindWindowById(self.win[nvizType][attrb]['const']).Enable(True)
             self.FindWindowById(self.win[nvizType][attrb]['use']).SetSelection(2 + incSel)
             self.FindWindowById(self.win[nvizType][attrb]['use']).SetSelection(2 + incSel)
         else: # unset
         else: # unset
+            self.FindWindowById(self.win[nvizType][attrb]['use']).SetSelection(0)
             self.FindWindowById(self.win[nvizType][attrb]['map'] + 1).Enable(False)
             self.FindWindowById(self.win[nvizType][attrb]['map'] + 1).Enable(False)
             if self.win[nvizType][attrb]['const']:
             if self.win[nvizType][attrb]['const']:
                 self.FindWindowById(self.win[nvizType][attrb]['const']).Enable(False)
                 self.FindWindowById(self.win[nvizType][attrb]['const']).Enable(False)
-            self.FindWindowById(self.win[nvizType][attrb]['use']).SetSelection(0)
+            
         
         
     def OnSurfaceMap(self, event):
     def OnSurfaceMap(self, event):
         """!Set surface attribute"""
         """!Set surface attribute"""
@@ -2363,31 +2365,33 @@ class NvizToolWindow(FN.FlatNotebook):
         if not self.mapWindow.init:
         if not self.mapWindow.init:
             return
             return
         
         
-        attrb = self.__GetWindowName(self.win[nvizType], winId) 
+        attrb = self.__GetWindowName(self.win[nvizType], winId)
         if not attrb:
         if not attrb:
             return
             return
         
         
-        if nvizType == 'volume' and attrb == 'topo':
-            return
-        
-        selection = self.FindWindowById(self.win[nvizType][attrb]['use']).GetSelection()
-        if self.win[nvizType][attrb]['required']:
-            selection += 1
-
-        if selection == 0: # unset
-            useMap = None
-            value = ''
-        elif selection == 1: # map
-            value = self.FindWindowById(self.win[nvizType][attrb]['map']).GetValue()
-            useMap = True
-        else: # constant
-            if attrb == 'color':
-                value = self.FindWindowById(self.win[nvizType][attrb]['const']).GetColour()
-                # tuple to string
-                value = self._getColorString(value)
-            else:
-                value = self.FindWindowById(self.win[nvizType][attrb]['const']).GetValue()
+        if not (nvizType == 'volume' and attrb == 'topo'):
+            selection = self.FindWindowById(self.win[nvizType][attrb]['use']).GetSelection()
+            if self.win[nvizType][attrb]['required']:
+                selection += 1
+
+            if selection == 0: # unset
+                useMap = None
+                value = ''
+            elif selection == 1: # map
+                value = self.FindWindowById(self.win[nvizType][attrb]['map']).GetValue()
+                useMap = True
+            else: # constant
+                if attrb == 'color':
+                    value = self.FindWindowById(self.win[nvizType][attrb]['const']).GetColour()
+                    # tuple to string
+                    value = self._getColorString(value)
+                else:
+                    value = self.FindWindowById(self.win[nvizType][attrb]['const']).GetValue()
+                    
             useMap = False
             useMap = False
+        else:
+            useMap = None
+            value = self.FindWindowById(self.win[nvizType][attrb]['const']).GetValue()
         if not self.pageChanging:
         if not self.pageChanging:
             name = self.FindWindowById(self.win[nvizType]['map']).GetValue()
             name = self.FindWindowById(self.win[nvizType]['map']).GetValue()
             if nvizType == 'surface':
             if nvizType == 'surface':
@@ -2403,6 +2407,11 @@ class NvizToolWindow(FN.FlatNotebook):
                     data[nvizType]['isosurface'][id][attrb] = { 'map' : useMap,
                     data[nvizType]['isosurface'][id][attrb] = { 'map' : useMap,
                                                                 'value' : str(value),
                                                                 'value' : str(value),
                                                                 'update' : None }
                                                                 'update' : None }
+                    if attrb == 'topo':
+                        list = self.FindWindowById(self.win['volume']['isosurfs'])
+                        sel = list.GetSelection()
+                        list.SetString(sel, "%s %s" % (_("Level"), str(value)))
+                        list.Check(sel)
             
             
             # update properties
             # update properties
             event = wxUpdateProperties(data = data)
             event = wxUpdateProperties(data = data)
@@ -3362,7 +3371,15 @@ class NvizToolWindow(FN.FlatNotebook):
             self.FindWindowById(self.win['surface']['shine']['map']).SetValue(value)
             self.FindWindowById(self.win['surface']['shine']['map']).SetValue(value)
         else:
         else:
             self.FindWindowById(self.win['surface']['shine']['const']).SetValue(value)
             self.FindWindowById(self.win['surface']['shine']['const']).SetValue(value)
-
+        if 'transp' in data['attribute']:  
+            value = data['attribute']['transp']['value']  
+            if data['attribute']['transp']['map']:
+                self.FindWindowById(self.win['surface']['color']['map']).SetValue(value)
+            else:
+                self.FindWindowById(self.win['surface']['transp']['const']).SetValue(value)
+            self.SetMapObjUseMap(nvizType = 'surface', attrb = 'transp', map = data['attribute']['transp']['map'])
+        else:
+            self.SetMapObjUseMap(nvizType = 'surface', attrb = 'transp', map = None)
         #
         #
         # draw
         # draw
         #
         #
@@ -3581,9 +3598,6 @@ class NvizToolWindow(FN.FlatNotebook):
         for attrb in ('topo', 'color', 'mask',
         for attrb in ('topo', 'color', 'mask',
                      'transp', 'shine'):
                      'transp', 'shine'):
             # check required first
             # check required first
-            if attrb == 'topo':
-                self.FindWindowById(self.win['volume'][attrb]['const']).SetValue(0)
-                continue
             if attrb == 'color':
             if attrb == 'color':
                 if layer and layer.type == '3d-raster':
                 if layer and layer.type == '3d-raster':
                     self.FindWindowById(self.win['volume'][attrb]['map']).SetValue(layer.name)
                     self.FindWindowById(self.win['volume'][attrb]['map']).SetValue(layer.name)
@@ -3595,6 +3609,8 @@ class NvizToolWindow(FN.FlatNotebook):
             
             
             # skip empty attributes
             # skip empty attributes
             if attrb not in data:
             if attrb not in data:
+                self.SetMapObjUseMap(nvizType = 'volume',
+                                     attrb = attrb, map = None)
                 continue
                 continue
             
             
             value = data[attrb]['value']
             value = data[attrb]['value']
@@ -3607,9 +3623,10 @@ class NvizToolWindow(FN.FlatNotebook):
             else:
             else:
                 if data[attrb]['map']:
                 if data[attrb]['map']:
                     win = self.FindWindowById(self.win['volume'][attrb]['map'])
                     win = self.FindWindowById(self.win['volume'][attrb]['map'])
+                    win.SetValue(value)
                 else:
                 else:
                     win = self.FindWindowById(self.win['volume'][attrb]['const'])
                     win = self.FindWindowById(self.win['volume'][attrb]['const'])
-                win.SetValue(value)
+                    win.SetValue(float(value))
             
             
             self.SetMapObjUseMap(nvizType = 'volume',
             self.SetMapObjUseMap(nvizType = 'volume',
                                  attrb = attrb, map = data[attrb]['map'])
                                  attrb = attrb, map = data[attrb]['map'])

+ 16 - 1
gui/wxpython/gui_modules/wxnviz.py

@@ -1021,6 +1021,21 @@ class Nviz(object):
 
 
         return 1
         return 1
 
 
+    def SetIsosurfaceTopo(self, id, isosurf_id, map, value):
+        """!Set isosurface level
+        
+        @param id volume id
+        @param isosurf_id isosurface id (0 - MAX_ISOSURFS)
+        @param map if true use map otherwise constant
+        @param value map name of value
+        
+        @return 1 on success
+        @return -1 volume not found
+        @return -2 isosurface not found
+        @return -3 on failure
+        """
+        return self.SetIsosurfaceAttr(id, isosurf_id, ATT_TOPO, map, value)
+    
     def SetIsosurfaceColor(self, id, isosurf_id, map, value):
     def SetIsosurfaceColor(self, id, isosurf_id, map, value):
         """!Set isosurface color
         """!Set isosurface color
         
         
@@ -1051,7 +1066,7 @@ class Nviz(object):
         @return -2 isosurface not found
         @return -2 isosurface not found
         @return -3 on failure
         @return -3 on failure
         """
         """
-        return self.SetIsosurfaceAttr(id, isosurf_id, ATT_MASK, true, value)
+        return self.SetIsosurfaceAttr(id, isosurf_id, ATT_MASK, True, value)
     
     
     def SetIsosurfaceTransp(self, id, isosurf_id, map, value):
     def SetIsosurfaceTransp(self, id, isosurf_id, map, value):
         """!Set isosurface transparency
         """!Set isosurface transparency