Merge branch '3.2'

This commit is contained in:
Mark 2018-01-18 16:29:44 +01:00
commit 00cf47a941
3 changed files with 24 additions and 5 deletions

View file

@ -24,6 +24,7 @@ from cura.Settings.ExtruderStack import ExtruderStack
from cura.Settings.GlobalStack import GlobalStack from cura.Settings.GlobalStack import GlobalStack
from cura.Settings.CuraContainerStack import _ContainerIndexes from cura.Settings.CuraContainerStack import _ContainerIndexes
from cura.QualityManager import QualityManager from cura.QualityManager import QualityManager
from cura.CuraApplication import CuraApplication
from configparser import ConfigParser from configparser import ConfigParser
import zipfile import zipfile
@ -750,8 +751,16 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
# If not extruder stacks were saved in the project file (pre 3.1) create one manually # If not extruder stacks were saved in the project file (pre 3.1) create one manually
# We re-use the container registry's addExtruderStackForSingleExtrusionMachine method for this # We re-use the container registry's addExtruderStackForSingleExtrusionMachine method for this
if not extruder_stacks: if not extruder_stacks:
if self._resolve_strategies["machine"] == "new":
stack = self._container_registry.addExtruderStackForSingleExtrusionMachine(global_stack, "fdmextruder") stack = self._container_registry.addExtruderStackForSingleExtrusionMachine(global_stack, "fdmextruder")
else:
stack = global_stack.extruders.get("0")
if not stack:
# this should not happen
Logger.log("e", "Cannot find any extruder in an existing global stack [%s].", global_stack.getId())
if stack: if stack:
if global_stack.quality.getId() in ("empty", "empty_quality"):
stack.quality = empty_quality_container
if self._resolve_strategies["machine"] == "override": if self._resolve_strategies["machine"] == "override":
# in case the extruder is newly created (for a single-extrusion machine), we need to override # in case the extruder is newly created (for a single-extrusion machine), we need to override
# the existing extruder stack. # the existing extruder stack.
@ -991,6 +1000,9 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
for stack in extruder_stacks: for stack in extruder_stacks:
stack.setNextStack(global_stack) stack.setNextStack(global_stack)
stack.containersChanged.emit(stack.getTop()) stack.containersChanged.emit(stack.getTop())
else:
if quality_has_been_changed:
CuraApplication.getInstance().getMachineManager().activeQualityChanged.emit()
# Actually change the active machine. # Actually change the active machine.
Application.getInstance().setGlobalContainerStack(global_stack) Application.getInstance().setGlobalContainerStack(global_stack)
@ -1040,13 +1052,13 @@ class ThreeMFWorkspaceReader(WorkspaceReader):
# find the old material ID # find the old material ID
old_material_id_in_stack = stack.material.getId() old_material_id_in_stack = stack.material.getId()
best_matching_old_material_id = None best_matching_old_material_id = None
best_matching_old_meterial_prefix_length = -1 best_matching_old_material_prefix_length = -1
for old_parent_material_id in old_new_material_dict: for old_parent_material_id in old_new_material_dict:
if len(old_parent_material_id) < best_matching_old_meterial_prefix_length: if len(old_parent_material_id) < best_matching_old_material_prefix_length:
continue continue
if len(old_parent_material_id) <= len(old_material_id_in_stack): if len(old_parent_material_id) <= len(old_material_id_in_stack):
if old_parent_material_id == old_material_id_in_stack[0:len(old_parent_material_id)]: if old_parent_material_id == old_material_id_in_stack[0:len(old_parent_material_id)]:
best_matching_old_meterial_prefix_length = len(old_parent_material_id) best_matching_old_material_prefix_length = len(old_parent_material_id)
best_matching_old_material_id = old_parent_material_id best_matching_old_material_id = old_parent_material_id
if best_matching_old_material_id is None: if best_matching_old_material_id is None:

View file

@ -426,6 +426,13 @@ class CuraEngineBackend(QObject, Backend):
if not isinstance(source, SceneNode): if not isinstance(source, SceneNode):
return return
# This case checks if the source node is a node that contains a GCode. In this case the
# cached layer data is removed so the previous data is not rendered - CURA-4821
if source.callDecoration("isBlockSlicing") and source.callDecoration("getLayerData"):
if self._stored_optimized_layer_data:
print(self._stored_optimized_layer_data)
del self._stored_optimized_layer_data[source.callDecoration("getBuildPlateNumber")]
build_plate_changed = set() build_plate_changed = set()
source_build_plate_number = source.callDecoration("getBuildPlateNumber") source_build_plate_number = source.callDecoration("getBuildPlateNumber")
if source == self._scene.getRoot(): if source == self._scene.getRoot():

View file

@ -31,7 +31,7 @@ Rectangle
border.width: UM.Theme.getSize("default_lining").width border.width: UM.Theme.getSize("default_lining").width
border.color: UM.Theme.getColor("lining") border.color: UM.Theme.getColor("lining")
property bool collapsed: false; property bool collapsed: true;
SystemPalette { id: palette } SystemPalette { id: palette }