chiark / gitweb /
Load GCode in background thread instead of the slice thread.
authordaid303 <daid303@gmail.com>
Fri, 19 Apr 2013 20:00:18 +0000 (22:00 +0200)
committerdaid303 <daid303@gmail.com>
Fri, 19 Apr 2013 20:00:18 +0000 (22:00 +0200)
Cura/gui/sceneView.py

index 1b9de02e104a5cd0497ad191b10dcfad507a80c4..9245789dae6392780611938cc6bf6c69a9314f52 100644 (file)
@@ -6,6 +6,7 @@ import time
 import os
 import traceback
 import shutil
+import threading
 
 import OpenGL
 OpenGL.ERROR_CHECKING = False
@@ -245,6 +246,8 @@ class SceneView(openglGui.glGuiPanel):
                self._selectedObj.scaleUpTo(self._machineSize - numpy.array(profile.calculateObjectSizeOffsets() + [0.0], numpy.float32) * 2)
                self._scene.pushFree()
                self._selectObject(self._selectedObj)
+               self.updateProfileToControls()
+               self.sceneUpdated()
 
        def OnMirror(self, axis):
                if self._selectedObj is None:
@@ -341,9 +344,14 @@ class SceneView(openglGui.glGuiPanel):
                if ready:
                        self._gcode = gcodeInterpreter.gcode()
                        self._gcode.progressCallback = self._gcodeLoadCallback
-                       self._gcode.load(self._slicer.getGCodeFilename())
+                       self._thread = threading.Thread(target=self._loadGCode)
+                       self._thread.daemon = True
+                       self._thread.start()
                self.QueueRefresh()
 
+       def _loadGCode(self):
+               self._gcode.load(self._slicer.getGCodeFilename())
+
        def _gcodeLoadCallback(self, progress):
                if self._gcode is None:
                        return True