From e793ce1a2c289cca27c1d4b42b788118521c4855 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Thu, 9 Jun 2016 16:57:40 +0200 Subject: [PATCH 1/7] Use ID instead of definition --- cura/ExtrudersModel.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cura/ExtrudersModel.py b/cura/ExtrudersModel.py index 3265667dc6..2a4ae54310 100644 --- a/cura/ExtrudersModel.py +++ b/cura/ExtrudersModel.py @@ -80,7 +80,7 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): } self.appendItem(item) - for extruder in manager.getMachineExtruders(global_container_stack.getBottom()): + for extruder in manager.getMachineExtruders(global_container_stack.getBottom().getId()): material = extruder.findContainer({ "type": "material" }) colour = material.getMetaDataEntry("color_code", default = "#FFFF00") if material else "#FFFF00" position = extruder.getBottom().getMetaDataEntry("position", default = "0") #Position in the definition. From beb263025b5041ec00a222355d02bd6625d9f983 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 9 Jun 2016 15:59:57 +0200 Subject: [PATCH 2/7] Make ExtruderSelector invisible if there is no choice in extruders It doesn't yet update well if you keep the panel open while switching machines. Contributes to issue CURA-340. --- plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml index 4610083674..03158266f5 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml +++ b/plugins/PerObjectSettingsTool/PerObjectSettingsPanel.qml @@ -36,6 +36,7 @@ Item { { id: extruders_model } + visible: extruders_model.rowCount() > 1 textRole: "name" width: items.width height: UM.Theme.getSize("section").height From 9d618282ed614b78ee263187af71f6ed25c3603f Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 9 Jun 2016 16:30:54 +0200 Subject: [PATCH 3/7] Save default material colour statically So if you wish to change that colour, you only need to change it in one place. Contributes to issue CURA-340. --- cura/ExtrudersModel.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/cura/ExtrudersModel.py b/cura/ExtrudersModel.py index 2a4ae54310..960c05bd5e 100644 --- a/cura/ExtrudersModel.py +++ b/cura/ExtrudersModel.py @@ -28,6 +28,10 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): # containers. IndexRole = Qt.UserRole + 4 + ## Colour to display if there is no material or the material has no known + # colour. + defaultColour = "#FFFF00" + ## Initialises the extruders model, defining the roles and listening for # changes in the data. # @@ -71,7 +75,7 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): if self._add_global: material = global_container_stack.findContainer({ "type": "material" }) - colour = material.getMetaDataEntry("color_code", default = "#FFFF00") if material else "#FFFF00" + colour = material.getMetaDataEntry("color_code", default = self.defaultColour) if material else self.defaultColour item = { "id": global_container_stack.getId(), "name": "Global", @@ -82,7 +86,7 @@ class ExtrudersModel(UM.Qt.ListModel.ListModel): for extruder in manager.getMachineExtruders(global_container_stack.getBottom().getId()): material = extruder.findContainer({ "type": "material" }) - colour = material.getMetaDataEntry("color_code", default = "#FFFF00") if material else "#FFFF00" + colour = material.getMetaDataEntry("color_code", default = self.defaultColour) if material else self.defaultColour position = extruder.getBottom().getMetaDataEntry("position", default = "0") #Position in the definition. try: position = int(position) From 9f3752276f701f5fb417f06d28aa94a6b3f34532 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 9 Jun 2016 16:43:53 +0200 Subject: [PATCH 4/7] Fix check if machine's extruders are processed Luckily this did never occur anyway since the rest of the code was sound. Contributes to issue CURA-340. --- cura/ExtruderManager.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cura/ExtruderManager.py b/cura/ExtruderManager.py index f5971ac141..edd6ab7d23 100644 --- a/cura/ExtruderManager.py +++ b/cura/ExtruderManager.py @@ -191,9 +191,10 @@ class ExtruderManager(QObject): container_registry.addContainer(container_stack) ## Generates extruders for a specific machine. + # + # \param machine_id The machine to get the extruders of. def getMachineExtruders(self, machine_id): - container_registry = UM.Settings.ContainerRegistry.getInstance() - if not machine_id in self._extruder_trains: + if machine_id not in self._extruder_trains: UM.Logger.log("w", "Tried to get the extruder trains for machine %s, which doesn't exist.", machine_id) return for name in self._extruder_trains[machine_id]: From 3206650f39cf6f7b034307d5f5afad79b632acb8 Mon Sep 17 00:00:00 2001 From: Ghostkeeper Date: Thu, 9 Jun 2016 16:59:01 +0200 Subject: [PATCH 5/7] Fix signal, repair per-object settings This was the wrong type of signal, which gave an error. Contributes to issue CURA-340. --- cura/SettingOverrideDecorator.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cura/SettingOverrideDecorator.py b/cura/SettingOverrideDecorator.py index 06dbc2cb31..23730fee60 100644 --- a/cura/SettingOverrideDecorator.py +++ b/cura/SettingOverrideDecorator.py @@ -1,11 +1,10 @@ # Copyright (c) 2016 Ultimaker B.V. # Cura is released under the terms of the AGPLv3 or higher. -from PyQt5.QtCore import pyqtSignal import copy from UM.Scene.SceneNodeDecorator import SceneNodeDecorator - +from UM.Signal import Signal, signalemitter from UM.Settings.ContainerStack import ContainerStack from UM.Settings.InstanceContainer import InstanceContainer from UM.Settings.ContainerRegistry import ContainerRegistry @@ -15,9 +14,10 @@ from UM.Application import Application ## A decorator that adds a container stack to a Node. This stack should be queried for all settings regarding # the linked node. The Stack in question will refer to the global stack (so that settings that are not defined by # this stack still resolve. +@signalemitter class SettingOverrideDecorator(SceneNodeDecorator): ## Event indicating that the user selected a different extruder. - activeExtruderChanged = pyqtSignal() + activeExtruderChanged = Signal() def __init__(self): super().__init__() From 959305ddf72769d5154771996b7a6c78e2db492d Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Thu, 9 Jun 2016 17:26:43 +0200 Subject: [PATCH 6/7] JSOn fix: removed buggy default:true for numeric values (CURA-1558) --- resources/definitions/fdmprinter.def.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 52aab1d26c..bc4b8dbc40 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -324,7 +324,6 @@ "minimum_value": "0.001", "minimum_value_warning": "0.04", "maximum_value_warning": "0.8 * machine_nozzle_size", - "default_value": true, "settable_per_mesh": false, "settable_per_extruder": false }, @@ -338,7 +337,6 @@ "minimum_value": "0.001", "minimum_value_warning": "0.04", "maximum_value_warning": "0.8 * machine_nozzle_size", - "default_value": true, "settable_per_mesh": false, "settable_per_extruder": false }, @@ -366,7 +364,6 @@ "value":"line_width", "default_value": 0.4, "type": "float", - "default_value": true, "settable_per_mesh": true, "children": { From b0198aedb089afb64be4322424503ddf9138e3f1 Mon Sep 17 00:00:00 2001 From: Tim Kuipers Date: Thu, 9 Jun 2016 17:27:20 +0200 Subject: [PATCH 7/7] JSON fix: line_width didn't supply any settable_per info (CURA-1558) --- resources/definitions/fdmprinter.def.json | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index bc4b8dbc40..1f7ed7c78a 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -351,6 +351,7 @@ "default_value": 0.4, "type": "float", "value": "machine_nozzle_size", + "settable_per_mesh": true, "children": { "wall_line_width":