From e0aea1817710a871c9695eb1707408772919d1d8 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Wed, 29 Aug 2018 11:42:45 +0200 Subject: [PATCH] Reset machines that use a removed quality changes CURA-5675 When a custom quality gets removed, Cura should reset all machines which use this custom quality to default. --- cura/Machines/QualityManager.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/cura/Machines/QualityManager.py b/cura/Machines/QualityManager.py index cb2776429f..6869d99bc7 100644 --- a/cura/Machines/QualityManager.py +++ b/cura/Machines/QualityManager.py @@ -363,8 +363,19 @@ class QualityManager(QObject): @pyqtSlot(QObject) def removeQualityChangesGroup(self, quality_changes_group: "QualityChangesGroup"): Logger.log("i", "Removing quality changes group [%s]", quality_changes_group.name) + removed_quality_changes_ids = set() for node in quality_changes_group.getAllNodes(): - self._container_registry.removeContainer(node.getMetaDataEntry("id")) + container_id = node.getMetaDataEntry("id") + self._container_registry.removeContainer(container_id) + removed_quality_changes_ids.add(container_id) + + # Reset all machines that have activated this quality changes to empty. + for global_stack in self._container_registry.findContainerStacks(type = "machine"): + if global_stack.qualityChanges.getId() in removed_quality_changes_ids: + global_stack.qualityChanges = self._empty_quality_changes_container + for extruder_stack in self._container_registry.findContainerStacks(type = "extruder_train"): + if extruder_stack.qualityChanges.getId() in removed_quality_changes_ids: + extruder_stack.qualityChanges = self._empty_quality_changes_container # # Rename a set of quality changes containers. Returns the new name.