Bladeren bron

wxNviz: attempt to fix updating region when switching back to 3D view

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@47378 15284696-431f-4ddb-bdfa-cd5b030d7da7
Anna Petrášová 13 jaren geleden
bovenliggende
commit
6f47d81c0c
4 gewijzigde bestanden met toevoegingen van 24 en 13 verwijderingen
  1. 11 12
      gui/wxpython/gui_modules/mapdisp.py
  2. 4 1
      gui/wxpython/gui_modules/wxnviz.py
  3. 1 0
      include/rasterdefs.h
  4. 8 0
      lib/raster/set_window.c

+ 11 - 12
gui/wxpython/gui_modules/mapdisp.py

@@ -397,13 +397,16 @@ class MapFrame(wx.Frame):
             self.MapWindow3D.UpdateView(None)
         else:
             self.MapWindow = self.MapWindow3D
+            os.environ['GRASS_REGION'] = self.Map.SetRegion(windres = True)
             self.MapWindow3D.GetDisplay().Init()
+            del os.environ['GRASS_REGION']
+            
             self.MapWindow3D.UpdateOverlays()
             # add Nviz notebookpage
             self._layerManager.AddNviz()
             for page in ('view', 'light', 'fringe', 'constant', 'cplane'):
                 self._layerManager.nviz.UpdatePage(page)
-        
+
         # switch from MapWindow to MapWindowGL
         # add nviz toolbar
         self._mgr.DetachPane(self.MapWindow2D)
@@ -500,8 +503,6 @@ class MapFrame(wx.Frame):
             # switch from MapWindowGL to MapWindow
             self._mgr.DetachPane(self.MapWindow3D)
             self.MapWindow3D.Hide()
-            #self.MapWindow3D.Destroy()
-            #self.MapWindow3D = None
             self.MapWindow2D.Show()
             self._mgr.AddPane(self.MapWindow2D, wx.aui.AuiPaneInfo().CentrePane().
                               Dockable(False).BestSize((-1,-1)).
@@ -1792,20 +1793,18 @@ class MapFrame(wx.Frame):
             # delete object if it has no text or is not active
             if text == '' or active == False:
                 try:
-                    self.MapWindow2D.pdc.ClearId(id)
-                    self.MapWindow2D.pdc.RemoveId(id)
+                    self.MapWindow.pdc.ClearId(id)
+                    self.MapWindow.pdc.RemoveId(id)
                     del self.MapWindow.textdict[id]
-                    if self.MapWindow3D:
-                        self.MapWindow3D.UpdateOverlays()
                 except:
                     pass
                 return
 
-            self.MapWindow2D.pdc.ClearId(id)
-            self.MapWindow2D.pdc.SetId(id)
-            self.MapWindow2D.textdict[id] = self.dialogs['text'].GetValues()
-            if self.MapWindow3D:
-                self.MapWindow3D.textdict[id] = self.dialogs['text'].GetValues()
+            self.MapWindow.pdc.ClearId(id)
+            self.MapWindow.pdc.SetId(id)
+            self.MapWindow.textdict[id] = self.dialogs['text'].GetValues()
+##            if self.MapWindow3D:
+##                self.MapWindow3D.textdict[id] = self.dialogs['text'].GetValues()
                 
             
             self.MapWindow2D.UpdateMap(render = False, renderVector = False)

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

@@ -30,6 +30,7 @@ from grass.lib.gis   import *
 from grass.lib.g3d   import *
 from grass.lib.ogsf  import *
 from grass.lib.nviz  import *
+from grass.lib.raster import *
 
 from debug import Debug
 
@@ -96,9 +97,11 @@ class Nviz(object):
     def Init(self):
         """!Initialize window"""
         G_unset_window()
+        Rast_unset_window()
+        Rast__init_window()
         GS_libinit()
         GVL_libinit()
-        
+    
     def ResizeWindow(self, width, height):
         """!GL canvas resized
         

+ 1 - 0
include/rasterdefs.h

@@ -551,6 +551,7 @@ DCELL Rast_get_sample(int, const struct Cell_head *, struct Categories *, double
 /* set_window.c */
 void Rast__init_window(void);
 void Rast_set_window(struct Cell_head *);
+void Rast_unset_window(void);
 void Rast_set_output_window(struct Cell_head *);
 void Rast_set_input_window(struct Cell_head *);
 

+ 8 - 0
lib/raster/set_window.c

@@ -57,7 +57,15 @@ void Rast_set_window(struct Cell_head *window)
 
     update_window_mappings();
 }
+/*!
+  \brief Unset current window
+*/
+void Rast_unset_window(void)
+{
+    G_debug(4, "Rast_unset_window()");
 
+    R__.window_set = 0;
+}
 /*!
  * \brief Establishes 'window' as the current working window for output.
  *