Explorar o código

wx.vnet: cleanup fix

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@56998 15284696-431f-4ddb-bdfa-cd5b030d7da7
Štěpán Turek %!s(int64=12) %!d(string=hai) anos
pai
achega
64a4377f7b

+ 2 - 5
gui/wxpython/vnet/dialogs.py

@@ -158,10 +158,6 @@ class VNETDialog(wx.Dialog):
 
 
         self.toolbars['mainToolbar'].UpdateUndoRedo(0, 0)
         self.toolbars['mainToolbar'].UpdateUndoRedo(0, 0)
 
 
-    def  __del__(self):
-        """!Removes temp layers, unregisters handlers and graphics"""
-        #TODO onclose
-        pass
 
 
     def _addPanes(self):
     def _addPanes(self):
         """!Adds toolbar pane and pane with tabs"""
         """!Adds toolbar pane and pane with tabs"""
@@ -759,6 +755,7 @@ class VNETDialog(wx.Dialog):
 
 
     def OnCloseDialog(self, event):
     def OnCloseDialog(self, event):
         """!Cancel dialog"""
         """!Cancel dialog"""
+        self.vnet_mgr.CleanUp()
         self.parent.dialogs['vnet'] = None
         self.parent.dialogs['vnet'] = None
         self.Destroy()
         self.Destroy()
 
 
@@ -1633,7 +1630,7 @@ class DefGlobalTurnsDialog(wx.Dialog):
 
 
         self.btnAdd.Bind(wx.EVT_BUTTON, self.OnAddButtonClick)
         self.btnAdd.Bind(wx.EVT_BUTTON, self.OnAddButtonClick)
         self.btnRemove.Bind(wx.EVT_BUTTON, self.OnRemoveButtonClick)
         self.btnRemove.Bind(wx.EVT_BUTTON, self.OnRemoveButtonClick)
-        self.btnClose.Bind(wx.EVT_BUTTON, self.OnCloseDialog)
+        self.Bind(wx.EVT_CLOSE, self.OnCloseDialog)
         self.useUTurns.Bind(wx.EVT_CHECKBOX, self.OnCheckedUTurns)
         self.useUTurns.Bind(wx.EVT_CHECKBOX, self.OnCheckedUTurns)
                 
                 
         self.btnClose.SetDefault()
         self.btnClose.SetDefault()

+ 6 - 3
gui/wxpython/vnet/vnet_core.py

@@ -60,9 +60,6 @@ class VNETManager:
         self.history = VNETHistory(self.guiparent, self.vnet_data, self.tmp_maps)
         self.history = VNETHistory(self.guiparent, self.vnet_data, self.tmp_maps)
         self.analyses = VNETAnalyses(self.vnet_data, self.RunAnDone, self.goutput, self.tmp_maps)
         self.analyses = VNETAnalyses(self.vnet_data, self.RunAnDone, self.goutput, self.tmp_maps)
 
 
-        # information, whether mouse event handler is registered in map window
-        self.handlerRegistered = False
-
         self.snap_nodes = SnappingNodes(self.vnet_data, self.tmp_maps, self.mapWin)
         self.snap_nodes = SnappingNodes(self.vnet_data, self.tmp_maps, self.mapWin)
 
 
         self.ttbCreated = Signal('VNETManager.ttbCreated')
         self.ttbCreated = Signal('VNETManager.ttbCreated')
@@ -75,9 +72,15 @@ class VNETManager:
 
 
 
 
     def  __del__(self):
     def  __del__(self):
+        self.CleanUp()
+
+    def CleanUp(self):
         """!Removes temp layers, unregisters handlers and graphics"""
         """!Removes temp layers, unregisters handlers and graphics"""
+
         update = self.tmp_maps.DeleteAllTmpMaps()
         update = self.tmp_maps.DeleteAllTmpMaps()
 
 
+        self.vnet_data.CleanUp()
+        
         if update:
         if update:
             up_map_evt = gUpdateMap(render = True, renderVector = True)
             up_map_evt = gUpdateMap(render = True, renderVector = True)
             wx.PostEvent(self.mapWin, up_map_evt)
             wx.PostEvent(self.mapWin, up_map_evt)

+ 6 - 0
gui/wxpython/vnet/vnet_data.py

@@ -60,6 +60,9 @@ class VNETData:
         self.pointsChanged = self.an_points.pointsChanged
         self.pointsChanged = self.an_points.pointsChanged
         self.parametersChanged = self.an_params.parametersChanged
         self.parametersChanged = self.an_params.parametersChanged
 
 
+    def CleanUp(self):
+        self.an_points.CleanUp()
+
     def GetAnalyses(self):
     def GetAnalyses(self):
         return self.an_props.used_an
         return self.an_props.used_an
 
 
@@ -220,6 +223,7 @@ class VNETPointsData:
         self.an_data = an_data
         self.an_data = an_data
         self.an_params = an_params
         self.an_params = an_params
 
 
+        # information, whether mouse event handler is registered in map window
         self.handlerRegistered = False
         self.handlerRegistered = False
 
 
         self.pointsChanged = Signal('VNETPointsData.pointsChanged')
         self.pointsChanged = Signal('VNETPointsData.pointsChanged')
@@ -250,7 +254,9 @@ class VNETPointsData:
         self.selected = 0
         self.selected = 0
 
 
     def  __del__(self):
     def  __del__(self):
+        self.CleanUp()
 
 
+    def CleanUp(self):
         self.mapWin.UnregisterGraphicsToDraw(self.pointsToDraw)
         self.mapWin.UnregisterGraphicsToDraw(self.pointsToDraw)
 
 
         if self.handlerRegistered:
         if self.handlerRegistered: