From 8d3c3c0e8079efe72d2328711aa7fc3361a6a911 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 12 Apr 2018 13:46:52 +0200 Subject: [PATCH 1/4] Fix the case that a quality_type is not available CURA-5218 --- cura/Settings/MachineManager.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 21810d394c..1272e043c4 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -1020,11 +1020,10 @@ class MachineManager(QObject): quality_type = quality_changes_group.quality_type # A custom quality can be created based on "not supported". # In that case, do not set quality containers to empty. - if quality_type == "not_supported": - quality_group = None - else: + quality_group = None + if quality_type != "not_supported": quality_group_dict = self._quality_manager.getQualityGroups(self._global_container_stack) - quality_group = quality_group_dict[quality_type] + quality_group = quality_group_dict.get(quality_type) quality_changes_container = self._empty_quality_changes_container if quality_changes_group.node_for_global: From 1c4c3a4a0b04f29fdc8cd497e71d0599ce764e95 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 12 Apr 2018 13:57:26 +0200 Subject: [PATCH 2/4] Fix quality changes that are based on no-long-available quality_type CURA-5218 --- cura/Settings/MachineManager.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 1272e043c4..c793acb4ad 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -1016,6 +1016,13 @@ class MachineManager(QObject): self.activeQualityGroupChanged.emit() self.activeQualityChangesGroupChanged.emit() + def _fixQualityChangesGroupToNotSupported(self, quality_changes_group): + nodes = [quality_changes_group.node_for_global] + list(quality_changes_group.nodes_for_extruders.values()) + containers = [n.getContainer() for n in nodes if n is not None] + for container in containers: + container.setMetaDataEntry("quality_type", "not_supported") + quality_changes_group.quality_type = "not_supported" + def _setQualityChangesGroup(self, quality_changes_group): quality_type = quality_changes_group.quality_type # A custom quality can be created based on "not supported". @@ -1024,6 +1031,8 @@ class MachineManager(QObject): if quality_type != "not_supported": quality_group_dict = self._quality_manager.getQualityGroups(self._global_container_stack) quality_group = quality_group_dict.get(quality_type) + if quality_group is None: + self._fixQualityChangesGroupToNotSupported(quality_changes_group) quality_changes_container = self._empty_quality_changes_container if quality_changes_group.node_for_global: From fdd78077697f9e3ff9f0fe654eff8af36a1623d9 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 12 Apr 2018 13:57:55 +0200 Subject: [PATCH 3/4] Custom qualities are always checkable CURA-5218 --- resources/qml/Menus/ProfileMenu.qml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/resources/qml/Menus/ProfileMenu.qml b/resources/qml/Menus/ProfileMenu.qml index 5b9a5a3b73..ffd3c556b6 100644 --- a/resources/qml/Menus/ProfileMenu.qml +++ b/resources/qml/Menus/ProfileMenu.qml @@ -51,8 +51,7 @@ Menu MenuItem { text: model.name - checkable: model.available - enabled: model.available + checkable: true checked: Cura.MachineManager.activeQualityOrQualityChangesName == model.name exclusiveGroup: group onTriggered: Cura.MachineManager.setQualityChangesGroup(model.quality_changes_group) From 33949c3b719b436fe0ac778271d458c1e66e557b Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Thu, 12 Apr 2018 14:02:54 +0200 Subject: [PATCH 4/4] Update build plate compatibility upon extruder enabled/disabled CURA-5219 --- cura/Settings/MachineManager.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index c793acb4ad..1d6a401b43 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -926,6 +926,8 @@ class MachineManager(QObject): ExtruderManager.getInstance().extrudersChanged.emit(self._global_container_stack.getId()) # Make sure the front end reflects changes self.forceUpdateAllSettings() + # Also trigger the build plate compatibility to update + self.activeMaterialChanged.emit() def _onMachineNameChanged(self): self.globalContainerChanged.emit()