Split user settings for single extrusion machines

CURA-4617
This commit is contained in:
Lipu Fei 2017-11-27 12:56:53 +01:00
parent 828fff5ee5
commit 1866c4ee66

View File

@ -431,19 +431,25 @@ class CuraContainerRegistry(ContainerRegistry):
extruder_stack.addMetaDataEntry("position", extruder_definition.getMetaDataEntry("position")) extruder_stack.addMetaDataEntry("position", extruder_definition.getMetaDataEntry("position"))
extruder_stack.setNextStack(machine) 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: if machine.userChanges:
# set existing user changes if found # for the newly created extruder stack, we need to move all "per-extruder" settings to the user changes
extruder_stack.setUserChanges(machine.userChanges) # container to the extruder stack.
else: for user_setting_key in machine.userChanges.getAllKeys():
# create empty user changes container otherwise settable_per_extruder = machine.getProperty(user_setting_key, "settable_per_extruder")
user_container = InstanceContainer(extruder_stack.id + "_user") if settable_per_extruder:
user_container.addMetaDataEntry("type", "user") user_container.addInstance(machine.userChanges.getInstance(user_setting_key))
user_container.addMetaDataEntry("machine", extruder_stack.getId()) machine.userChanges.removeInstance(user_setting_key, postpone_emit = True)
from cura.CuraApplication import CuraApplication
user_container.addMetaDataEntry("setting_version", CuraApplication.SettingVersion) extruder_stack.setUserChanges(user_container)
user_container.setDefinition(extruder_definition) self.addContainer(user_container)
extruder_stack.setUserChanges(user_container)
self.addContainer(user_container)
variant_id = "default" variant_id = "default"
if machine.variant.getId() not in ("empty", "empty_variant"): if machine.variant.getId() not in ("empty", "empty_variant"):