From 151bf1f8de6cf240327ae700d1ebf7a774b7b39b Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Mon, 11 Jul 2016 17:25:59 +0200 Subject: [PATCH 1/5] Make style of sections on the Materials page match sections on the profiles page CURA-342 --- resources/qml/Preferences/MaterialsPage.qml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/resources/qml/Preferences/MaterialsPage.qml b/resources/qml/Preferences/MaterialsPage.qml index bacb4f73bb..55f29fad4f 100644 --- a/resources/qml/Preferences/MaterialsPage.qml +++ b/resources/qml/Preferences/MaterialsPage.qml @@ -51,7 +51,13 @@ UM.ManagementPage detailsVisible: true section.property: "section" - section.delegate: Label { text: section } + section.delegate: Label + { + text: section + font.bold: true + anchors.left: parent.left; + anchors.leftMargin: UM.Theme.getSize("default_lining").width; + } buttons: [ Button From 1b2514ae2e6e002a1190679843af60aa1ec1d5e9 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Mon, 11 Jul 2016 18:10:25 +0200 Subject: [PATCH 2/5] Fix setting the active container stack on start When starting Cura, no nozzle, material or quality would seem to be selected. This commit makes sure _active_container_stack gets properly initialised. I'll hijack CURA-1844 for this. --- cura/Settings/MachineManager.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 2448139897..f670bf2bf2 100644 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -217,6 +217,8 @@ class MachineManager(QObject): quality.nameChanged.disconnect(self._onQualityNameChanged) self._global_container_stack = Application.getInstance().getGlobalContainerStack() + self._active_container_stack = self._global_container_stack + self.globalContainerChanged.emit() if self._global_container_stack: From a7cfe1b5afc7c5b1e5f11afdccbcbc6658d38432 Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Mon, 11 Jul 2016 21:15:09 +0200 Subject: [PATCH 3/5] Emphasize settings that have a value in the user or quality profile (in a subtle way) --- resources/qml/Settings/SettingItem.qml | 5 +++-- resources/themes/cura/theme.json | 5 +++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/resources/qml/Settings/SettingItem.qml b/resources/qml/Settings/SettingItem.qml index 1e69704995..5e37288f4a 100644 --- a/resources/qml/Settings/SettingItem.qml +++ b/resources/qml/Settings/SettingItem.qml @@ -64,7 +64,7 @@ Item { return tooltip } - MouseArea + MouseArea { id: mouse; @@ -114,7 +114,8 @@ Item { elide: Text.ElideMiddle; color: UM.Theme.getColor("setting_control_text"); - font: UM.Theme.getFont("default"); + // emphasize the setting if it has a value in the user or quality profile + font: base.stackLevel != undefined && base.stackLevel <= 1 ? UM.Theme.getFont("default_italic") : UM.Theme.getFont("default") } Row diff --git a/resources/themes/cura/theme.json b/resources/themes/cura/theme.json index 5bc5e99765..053e5e3d84 100644 --- a/resources/themes/cura/theme.json +++ b/resources/themes/cura/theme.json @@ -14,6 +14,11 @@ "bold": true, "family": "Open Sans" }, + "default_italic": { + "size": 1.15, + "italic": true, + "family": "Open Sans" + }, "small": { "size": 1.0, "bold": true, From b5aa7c35455c6e37d7dfc1bcb96af1e296bdd2d8 Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 12 Jul 2016 10:34:58 +0200 Subject: [PATCH 4/5] Remove the extruder id from settingoverride decorator if the machine does not have multi extrusion CURA-1876 & CURA-1768 --- plugins/PerObjectSettingsTool/PerObjectSettingsTool.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/plugins/PerObjectSettingsTool/PerObjectSettingsTool.py b/plugins/PerObjectSettingsTool/PerObjectSettingsTool.py index 8b51852c15..b5c4c0f22c 100644 --- a/plugins/PerObjectSettingsTool/PerObjectSettingsTool.py +++ b/plugins/PerObjectSettingsTool/PerObjectSettingsTool.py @@ -3,10 +3,12 @@ from UM.Tool import Tool from UM.Scene.Selection import Selection +from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator from UM.Application import Application from UM.Preferences import Preferences from cura.Settings.SettingOverrideDecorator import SettingOverrideDecorator + ## This tool allows the user to add & change settings per node in the scene. # The settings per object are kept in a ContainerStack, which is linked to a node by decorator. class PerObjectSettingsTool(Tool): @@ -69,6 +71,11 @@ class PerObjectSettingsTool(Tool): global_container_stack = Application.getInstance().getGlobalContainerStack() if global_container_stack: self._multi_extrusion = global_container_stack.getProperty("machine_extruder_count", "value") > 1 + if not self._multi_extrusion: + # Ensure that all extruder data is reset + root_node = Application.getInstance().getController().getScene().getRoot() + for node in DepthFirstIterator(root_node): + node.callDecoration("setActiveExtruder", global_container_stack.getId()) self._updateEnabled() def _updateEnabled(self): From ae4beeb0ed71a64d55f7a482690ec153856a3e7e Mon Sep 17 00:00:00 2001 From: fieldOfView Date: Tue, 12 Jul 2016 10:53:50 +0200 Subject: [PATCH 5/5] Remove container stack and user profile for extruders when removing a printer CURA-1896 --- cura/Settings/ExtruderManager.py | 13 ++++++++++++- cura/Settings/MachineManager.py | 5 +++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/cura/Settings/ExtruderManager.py b/cura/Settings/ExtruderManager.py index 5062fc93b4..775596104b 100644 --- a/cura/Settings/ExtruderManager.py +++ b/cura/Settings/ExtruderManager.py @@ -221,7 +221,18 @@ class ExtruderManager(QObject): container_registry.addContainer(container_stack) - ## Generates extruders for a specific machine. + ## Removes the container stack and user profile for the extruders for a specific machine. + # + # \param machine_id The machine to remove the extruders for. + def removeMachineExtruders(self, machine_id): + for extruder in self.getMachineExtruders(machine_id): + current_settings_id = extruder.getId() + "_current_settings" + containers = UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(id = current_settings_id) + for container in containers: + UM.Settings.ContainerRegistry.getInstance().removeContainer(container.getId()) + UM.Settings.ContainerRegistry.getInstance().removeContainer(extruder.getId()) + + ## Returns extruders for a specific machine. # # \param machine_id The machine to get the extruders of. def getMachineExtruders(self, machine_id): diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index f670bf2bf2..cb761032d8 100644 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -635,6 +635,11 @@ class MachineManager(QObject): # If the machine that is being removed is the currently active machine, set another machine as the active machine. activate_new_machine = (self._global_container_stack and self._global_container_stack.getId() == machine_id) + stacks = UM.Settings.ContainerRegistry.getInstance().findContainerStacks(id = machine_id) + if not stacks: + return + ExtruderManager.getInstance().removeMachineExtruders(stacks[0].getBottom().getId()) + current_settings_id = machine_id + "_current_settings" containers = UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(id = current_settings_id) for container in containers: