T466: Added pausing of backend work

This commit is contained in:
Victor Larchenko 2016-10-12 12:08:00 +06:00 committed by Youness Alaoui
parent b9514527dd
commit 65f3495a29
5 changed files with 28 additions and 8 deletions

View file

@ -69,6 +69,8 @@ class CuraEngineBackend(Backend):
self._scene = Application.getInstance().getController().getScene()
self._scene.sceneChanged.connect(self._onSceneChanged)
self._pauseSlicing = False
# Workaround to disable layer view processing if layer view is not active.
self._layer_view_active = False
Application.getInstance().getController().activeViewChanged.connect(self._onActiveViewChanged)
@ -399,6 +401,7 @@ class CuraEngineBackend(Backend):
#
# This indicates that we should probably re-slice soon.
def _onChanged(self, *args, **kwargs):
if not self._pauseSlicing:
self._change_timer.start()
## Called when the back-end connects to the front-end.

View file

@ -48,6 +48,16 @@ class GCODEReader(MeshReader):
scene_node.getBoundingBox = getBoundingBox
scene_node.gcode = True
backend = Application.getInstance().getBackend()
backend._pauseSlicing = True
backend.backendStateChange.emit(0)
mesh_builder = MeshBuilder()
mesh_builder.setFileName(file_name)
mesh_builder.addCube(10,10,10)
scene_node.setMeshData(mesh_builder.build())
layer_data = LayerDataBuilder.LayerDataBuilder()
layer_count = 1

View file

@ -45,16 +45,11 @@ class LayerPass(RenderPass):
tool_handle_batch = RenderBatch(self._tool_handle_shader, type = RenderBatch.RenderType.Overlay)
for node in DepthFirstIterator(self._scene.getRoot()):
flag = False
try:
flag = node.gcode
except AttributeError:
pass
if isinstance(node, ToolHandle):
tool_handle_batch.addItem(node.getWorldTransformation(), mesh = node.getSolidMesh())
elif isinstance(node, SceneNode) and (node.getMeshData() or flag) and node.isVisible():
elif isinstance(node, SceneNode) and (node.getMeshData()) and node.isVisible():
layer_data = node.callDecoration("getLayerData")
if not layer_data:
continue

View file

@ -118,8 +118,14 @@ class LayerView(View):
if type(node) is ConvexHullNode and not Selection.isSelected(node.getWatchedNode()):
continue
flag = False
try:
flag = node.gcode
except AttributeError:
pass
if not node.render(renderer):
if node.getMeshData() and node.isVisible():
if node.getMeshData() and node.isVisible() and not flag:
renderer.queueNode(node, transparent = True, shader = self._ghost_shader)
def setLayer(self, value):

View file

@ -14,6 +14,7 @@ Rectangle {
property real progress: UM.Backend.progress;
property int backendState: UM.Backend.state;
property bool backendPaused: UM.Backend.paused;
property bool activity: Printer.getPlatformActivity;
property int totalHeight: childrenRect.height + UM.Theme.getSize("default_margin").height
property string fileBaseName
@ -24,6 +25,11 @@ Rectangle {
return catalog.i18nc("@label:PrintjobStatus", "Please load a 3d model");
}
if (backendPaused)
{
return catalog.i18nc("@label:PrintjobStatus", "Slicing temporary disabled");
}
switch(base.backendState)
{
case 1: