chiark / gitweb /
Properly clean up the temp files from slicing.
authordaid303 <daid303@gmail.com>
Tue, 9 Apr 2013 16:51:00 +0000 (18:51 +0200)
committerdaid303 <daid303@gmail.com>
Tue, 9 Apr 2013 16:51:00 +0000 (18:51 +0200)
Cura/gui/mainWindow.py
Cura/util/sliceEngine.py

index 8216af47ef2bb24df12b6e80f266e56870fa735e..36102017fc296936eed787826421fe04e7bf61ed 100644 (file)
@@ -423,6 +423,7 @@ class mainWindow(wx.Frame):
                #HACK: Set the paint function of the glCanvas to nothing so it won't keep refreshing. Which keeps wxWidgets from quiting.
                print "Closing down"
                self.scene.OnPaint = lambda e : e
+               self.scene._slicer.cleanup()
                self.Destroy()
 
        def OnQuit(self, e):
index 2fa333e366c01403f356eece0bee9e93e8cb7514..4866b4ecbd3416c30ebb2f3d15171f98ebd8210a 100644 (file)
@@ -32,6 +32,11 @@ class Slicer(object):
                self._progressSteps = ['inset', 'skin', 'export']
                self._objCount = 0
 
+       def cleanup(self):
+               self.abortSlicer()
+               os.remove(self._binaryStorageFilename)
+               os.remove(self._exportFilename)
+
        def abortSlicer(self):
                if self._process is not None:
                        self._process.terminate()
@@ -90,7 +95,10 @@ class Slicer(object):
 
                                        progressValue /= self._objCount
                                        progressValue += 1.0 / self._objCount * objectNr
-                                       self._callback(progressValue, False)
+                                       try:
+                                               self._callback(progressValue, False)
+                                       except:
+                                               pass
                        else:
                                print '#', line.strip()
                        line = self._process.stdout.readline()
@@ -98,10 +106,13 @@ class Slicer(object):
                        print line.strip()
                returnCode = self._process.wait()
                print returnCode
-               if returnCode == 0:
-                       self._callback(1.0, True)
-               else:
-                       self._callback(0.0, False)
+               try:
+                       if returnCode == 0:
+                               self._callback(1.0, True)
+                       else:
+                               self._callback(0.0, False)
+               except:
+                       pass
                self._process = None
 
        def _engineSettings(self):