Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/cura
diff options
context:
space:
mode:
authorLipu Fei <lipu.fei815@gmail.com>2017-11-27 14:56:53 +0300
committerLipu Fei <lipu.fei815@gmail.com>2017-11-27 14:56:53 +0300
commit1866c4ee66de8d726fc5b1d37ffad373bdaaffd6 (patch)
treef7e07274908771e74d8c716f6c0eb6941fc06354 /cura
parent828fff5ee5ebcc48049fda21445ea06248688639 (diff)
Split user settings for single extrusion machines
CURA-4617
Diffstat (limited to 'cura')
-rw-r--r--cura/Settings/CuraContainerRegistry.py30
1 files changed, 18 insertions, 12 deletions
diff --git a/cura/Settings/CuraContainerRegistry.py b/cura/Settings/CuraContainerRegistry.py
index 3590d70602..1975458548 100644
--- a/cura/Settings/CuraContainerRegistry.py
+++ b/cura/Settings/CuraContainerRegistry.py
@@ -431,19 +431,25 @@ class CuraContainerRegistry(ContainerRegistry):
extruder_stack.addMetaDataEntry("position", extruder_definition.getMetaDataEntry("position"))
extruder_stack.setNextStack(machine)
+ # create empty user changes container otherwise
+ user_container = InstanceContainer(extruder_stack.id + "_user")
+ user_container.addMetaDataEntry("type", "user")
+ user_container.addMetaDataEntry("machine", extruder_stack.getId())
+ from cura.CuraApplication import CuraApplication
+ user_container.addMetaDataEntry("setting_version", CuraApplication.SettingVersion)
+ user_container.setDefinition(extruder_definition)
+
if machine.userChanges:
- # set existing user changes if found
- extruder_stack.setUserChanges(machine.userChanges)
- else:
- # create empty user changes container otherwise
- user_container = InstanceContainer(extruder_stack.id + "_user")
- user_container.addMetaDataEntry("type", "user")
- user_container.addMetaDataEntry("machine", extruder_stack.getId())
- from cura.CuraApplication import CuraApplication
- user_container.addMetaDataEntry("setting_version", CuraApplication.SettingVersion)
- user_container.setDefinition(extruder_definition)
- extruder_stack.setUserChanges(user_container)
- self.addContainer(user_container)
+ # for the newly created extruder stack, we need to move all "per-extruder" settings to the user changes
+ # container to the extruder stack.
+ for user_setting_key in machine.userChanges.getAllKeys():
+ settable_per_extruder = machine.getProperty(user_setting_key, "settable_per_extruder")
+ if settable_per_extruder:
+ user_container.addInstance(machine.userChanges.getInstance(user_setting_key))
+ machine.userChanges.removeInstance(user_setting_key, postpone_emit = True)
+
+ extruder_stack.setUserChanges(user_container)
+ self.addContainer(user_container)
variant_id = "default"
if machine.variant.getId() not in ("empty", "empty_variant"):