From 70242ba502c6237ffca8679a85d6a02afaf5bb39 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Mon, 25 Jul 2016 15:44:16 +0200 Subject: [PATCH] Saving a file no longer causes a re-slice CURA-1933 --- cura/Settings/MachineManager.py | 9 ++------- plugins/GCodeWriter/GCodeWriter.py | 10 +++++++++- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 9f51591a58..7f6da8d821 100644 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -543,15 +543,10 @@ class MachineManager(QObject): if containers: new_name = self._createUniqueName("quality", "", containers[0].getName(), catalog.i18nc("@label", "Custom profile")) - new_container = UM.Settings.InstanceContainer("") + new_container = containers[0].duplicate(new_name, new_name) - ## Copy all values - new_container.deserialize(containers[0].serialize()) - - new_container.setReadOnly(False) - new_container.setName(new_name) - new_container._id = new_name UM.Settings.ContainerRegistry.getInstance().addContainer(new_container) + return new_name return "" diff --git a/plugins/GCodeWriter/GCodeWriter.py b/plugins/GCodeWriter/GCodeWriter.py index 08105b06e8..15de585ae0 100644 --- a/plugins/GCodeWriter/GCodeWriter.py +++ b/plugins/GCodeWriter/GCodeWriter.py @@ -78,15 +78,19 @@ class GCodeWriter(MeshWriter): # Duplicate the current quality profile and update it with any user settings. flat_quality_id = machine_manager.duplicateContainer(container_with_profile.getId()) + flat_quality = UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(id = flat_quality_id)[0] user_settings = stack.getTop() + + # We don't want to send out any signals, so disconnect them. + flat_quality.propertyChanged.disconnectAll() + for key in user_settings.getAllKeys(): flat_quality.setProperty(key, "value", user_settings.getProperty(key, "value")) serialized = flat_quality.serialize() data = {"global_quality": serialized} - manager = ExtruderManager.getInstance() for extruder in manager.getMachineExtruders(stack.getId()): extruder_quality = extruder.findContainer({"type": "quality"}) @@ -94,6 +98,10 @@ class GCodeWriter(MeshWriter): flat_extruder_quality_id = machine_manager.duplicateContainer(extruder_quality.getId()) flat_extruder_quality = UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(id=flat_extruder_quality_id)[0] extruder_user_settings = extruder.getTop() + + # We don't want to send out any signals, so disconnect them. + flat_extruder_quality.propertyChanged.disconnectAll() + for key in extruder_user_settings.getAllKeys(): flat_extruder_quality.setProperty(key, "value", extruder_user_settings.getProperty(key, "value"))