From 24f9804f0340bc4465cc90ce245df4930e4180a8 Mon Sep 17 00:00:00 2001 From: Remco Burema Date: Fri, 26 Oct 2018 11:01:46 +0200 Subject: [PATCH 1/4] Disable per-meshgroup settings in the per-mesh settings when in one-at-a-time mode. [CURA-5767] The backend can't handle per mesh-group settings (as opposed to per mesh settings) when sequence was in one-at-a-time mode. The problem is that the extruder train is in between the per-meshgroup-settings (child-of) and per-mesh-settings (parent-of). For any per-mesh-group settings, the possibility exists that they'll be overridden by settings we always set (and that need to be set) per extruder. Changing this would require the engine-architecture to change, and _all_ settings would need to be thouroughly retested. As this was a too extensive change, it was decied just to disable the per-meshgroup settings when printing one-at-a-time (too). The issue was originally reported as: '"Printing Temperature Initial layer" setting per mode does not work' --- .../PerObjectSettingsTool/PerObjectSettingsPanel.qml | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml index 4c9ba2169c..5d4e17a102 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml +++ b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml @@ -407,14 +407,9 @@ Item { function updateFilter() { var new_filter = {}; - if (printSequencePropertyProvider.properties.value == "one_at_a_time") - { - new_filter["settable_per_meshgroup"] = true; - } - else - { - new_filter["settable_per_mesh"] = true; - } + new_filter["settable_per_mesh"] = true; + // Don't filter on "settable_per_meshgroup" any more when `printSequencePropertyProvider.properties.value` + // is set to "one_at_a_time", because the current backend architecture isn't ready for that. if(filterInput.text != "") { From 54afa799c54bf3727481241e5e5f45dffb7e3442 Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Mon, 29 Oct 2018 15:04:50 +0100 Subject: [PATCH 2/4] Ignore per-meshgroup settings in per object stack CURA-5767 --- cura/Settings/PerObjectContainerStack.py | 18 +++++++++++++++++- plugins/3MFReader/ThreeMFReader.py | 2 +- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/cura/Settings/PerObjectContainerStack.py b/cura/Settings/PerObjectContainerStack.py index 3589029517..3623e1e0be 100644 --- a/cura/Settings/PerObjectContainerStack.py +++ b/cura/Settings/PerObjectContainerStack.py @@ -5,6 +5,7 @@ from typing import Any, Optional from UM.Application import Application from UM.Decorators import override +from UM.Logger import Logger from UM.Settings.Interfaces import PropertyEvaluationContext from UM.Settings.SettingInstance import InstanceState @@ -57,7 +58,22 @@ class PerObjectContainerStack(CuraContainerStack): return result @override(CuraContainerStack) - def setNextStack(self, stack: CuraContainerStack) -> None: + def setProperty(self, key: str, property_name: str, property_value: Any, container: "ContainerInterface" = None, set_from_cache: bool = False) -> None: + application = Application.getInstance() + machine_manager = application.getMachineManager() + global_stack = machine_manager.activeMachine + + # Ignore all settable-per-meshgroup settings for now because the current CuraEngine architecture cannot handle + # that correctly. This check is also here is because if an old project file includes per-object settings that + # are settable-per-meshgroup, when it is loaded, we need to filter out those settings. + if not global_stack.getProperty(key, "settable_per_mesh"): + Logger.log("i", "Setting [%s] ignored as a per-object setting because it's not settable-per-mesh.", key) + return + super().setProperty(self, key, property_name, property_value, + container = container, set_from_cache = set_from_cache) + + @override(CuraContainerStack) + def setNextStack(self, stack: "CuraContainerStack") -> None: super().setNextStack(stack) # trigger signal to re-evaluate all default settings diff --git a/plugins/3MFReader/ThreeMFReader.py b/plugins/3MFReader/ThreeMFReader.py index 49c6995d18..75ce7d932c 100755 --- a/plugins/3MFReader/ThreeMFReader.py +++ b/plugins/3MFReader/ThreeMFReader.py @@ -135,7 +135,7 @@ class ThreeMFReader(MeshReader): definition_id = getMachineDefinitionIDForQualitySearch(global_container_stack.definition) um_node.callDecoration("getStack").getTop().setDefinition(definition_id) - setting_container = um_node.callDecoration("getStack").getTop() + setting_container = um_node.callDecoration("getStack") for key in settings: setting_value = settings[key] From 39158a643cdade93b14aa23244f8485a9a34b92b Mon Sep 17 00:00:00 2001 From: Lipu Fei Date: Tue, 30 Oct 2018 07:33:55 +0100 Subject: [PATCH 3/4] Revert "Ignore per-meshgroup settings in per object stack" CURA-5767 This reverts commit 54afa799c54bf3727481241e5e5f45dffb7e3442. --- cura/Settings/PerObjectContainerStack.py | 18 +----------------- plugins/3MFReader/ThreeMFReader.py | 2 +- 2 files changed, 2 insertions(+), 18 deletions(-) diff --git a/cura/Settings/PerObjectContainerStack.py b/cura/Settings/PerObjectContainerStack.py index 3623e1e0be..3589029517 100644 --- a/cura/Settings/PerObjectContainerStack.py +++ b/cura/Settings/PerObjectContainerStack.py @@ -5,7 +5,6 @@ from typing import Any, Optional from UM.Application import Application from UM.Decorators import override -from UM.Logger import Logger from UM.Settings.Interfaces import PropertyEvaluationContext from UM.Settings.SettingInstance import InstanceState @@ -58,22 +57,7 @@ class PerObjectContainerStack(CuraContainerStack): return result @override(CuraContainerStack) - def setProperty(self, key: str, property_name: str, property_value: Any, container: "ContainerInterface" = None, set_from_cache: bool = False) -> None: - application = Application.getInstance() - machine_manager = application.getMachineManager() - global_stack = machine_manager.activeMachine - - # Ignore all settable-per-meshgroup settings for now because the current CuraEngine architecture cannot handle - # that correctly. This check is also here is because if an old project file includes per-object settings that - # are settable-per-meshgroup, when it is loaded, we need to filter out those settings. - if not global_stack.getProperty(key, "settable_per_mesh"): - Logger.log("i", "Setting [%s] ignored as a per-object setting because it's not settable-per-mesh.", key) - return - super().setProperty(self, key, property_name, property_value, - container = container, set_from_cache = set_from_cache) - - @override(CuraContainerStack) - def setNextStack(self, stack: "CuraContainerStack") -> None: + def setNextStack(self, stack: CuraContainerStack) -> None: super().setNextStack(stack) # trigger signal to re-evaluate all default settings diff --git a/plugins/3MFReader/ThreeMFReader.py b/plugins/3MFReader/ThreeMFReader.py index 75ce7d932c..49c6995d18 100755 --- a/plugins/3MFReader/ThreeMFReader.py +++ b/plugins/3MFReader/ThreeMFReader.py @@ -135,7 +135,7 @@ class ThreeMFReader(MeshReader): definition_id = getMachineDefinitionIDForQualitySearch(global_container_stack.definition) um_node.callDecoration("getStack").getTop().setDefinition(definition_id) - setting_container = um_node.callDecoration("getStack") + setting_container = um_node.callDecoration("getStack").getTop() for key in settings: setting_value = settings[key] From e2b6a3f411138aaa2e6f6bb36842f686bc0818af Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Tue, 30 Oct 2018 10:39:10 +0100 Subject: [PATCH 4/4] Add white background to thumbnails Regardless of the theme, the thumbnail should always have a white background so that the author can base their colours on that. Also this properly renders transparent images with a white background so that the Ultimaker robot is visible again in the dark theme. --- plugins/Toolbox/resources/qml/ToolboxDetailPage.qml | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml b/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml index cba55051f5..437a2ef351 100644 --- a/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml +++ b/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml @@ -25,14 +25,11 @@ Item rightMargin: UM.Theme.getSize("wide_margin").width } height: UM.Theme.getSize("toolbox_detail_header").height - Image + Rectangle { id: thumbnail width: UM.Theme.getSize("toolbox_thumbnail_medium").width height: UM.Theme.getSize("toolbox_thumbnail_medium").height - fillMode: Image.PreserveAspectFit - source: details === null ? "" : (details.icon_url || "../images/logobot.svg") - mipmap: true anchors { top: parent.top @@ -40,6 +37,14 @@ Item leftMargin: UM.Theme.getSize("wide_margin").width topMargin: UM.Theme.getSize("wide_margin").height } + color: white //Always a white background for image (regardless of theme). + Image + { + anchors.fill: parent + fillMode: Image.PreserveAspectFit + source: details === null ? "" : (details.icon_url || "../images/logobot.svg") + mipmap: true + } } Label