On extruder switch create OverrideDecorator if needed

The SettingOverrideDecorator is only applied if the node has a per-object setting. Now it also creates a decorator also if you've ever switched the extruder, which was needed because the decorator contains the information which extruder to print with.

Contributes to issue CURA-340.
This commit is contained in:
Ghostkeeper 2016-06-09 18:59:28 +02:00
parent d34d398e96
commit f5f711b7dc
No known key found for this signature in database
GPG key ID: 701948C5954A7385

View file

@ -5,7 +5,7 @@ from UM.Tool import Tool
from UM.Scene.Selection import Selection from UM.Scene.Selection import Selection
from UM.Application import Application from UM.Application import Application
from UM.Preferences import Preferences from UM.Preferences import Preferences
from cura.SettingOverrideDecorator import SettingOverrideDecorator
## This tool allows the user to add & change settings per node in the scene. ## 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. # The settings per object are kept in a ContainerStack, which is linked to a node by decorator.
@ -55,6 +55,9 @@ class PerObjectSettingsTool(Tool):
# selected object with. # selected object with.
def setSelectedActiveExtruder(self, extruder_stack_id): def setSelectedActiveExtruder(self, extruder_stack_id):
selected_object = Selection.getSelectedObject(0) selected_object = Selection.getSelectedObject(0)
stack = selected_object.callDecoration("getStack") #Don't try to get the active extruder since it may be None anyway.
if not stack:
selected_object.addDecorator(SettingOverrideDecorator())
selected_object.callDecoration("setActiveExtruder", extruder_stack_id) selected_object.callDecoration("setActiveExtruder", extruder_stack_id)
def _onPreferenceChanged(self, preference): def _onPreferenceChanged(self, preference):