mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-06-04 11:14:21 +08:00
Ensure metadata changes are propagated to the related containers
Now we properly serialize the new metadata Contributes to CURA-342
This commit is contained in:
parent
92d3bea229
commit
ded4c89cb5
@ -28,6 +28,12 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer):
|
|||||||
result.setMetaDataEntry("GUID", str(uuid.uuid4()))
|
result.setMetaDataEntry("GUID", str(uuid.uuid4()))
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
def setMetaDataEntry(self, key, value):
|
||||||
|
super().setMetaDataEntry(key, value)
|
||||||
|
|
||||||
|
for container in UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(GUID = self.getMetaDataEntry("GUID")):
|
||||||
|
container.setMetaData(copy.deepcopy(self._metadata))
|
||||||
|
|
||||||
def setProperty(self, key, property_name, property_value, container = None):
|
def setProperty(self, key, property_name, property_value, container = None):
|
||||||
super().setProperty(key, property_name, property_value)
|
super().setProperty(key, property_name, property_value)
|
||||||
|
|
||||||
@ -75,8 +81,7 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer):
|
|||||||
builder.end("brand")
|
builder.end("brand")
|
||||||
|
|
||||||
builder.start("material")
|
builder.start("material")
|
||||||
builder.data(self.getName())
|
builder.data(metadata.pop("material", ""))
|
||||||
metadata.pop("material", "")
|
|
||||||
builder.end("material")
|
builder.end("material")
|
||||||
|
|
||||||
builder.start("color")
|
builder.start("color")
|
||||||
@ -128,8 +133,8 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer):
|
|||||||
variant = container.getMetaDataEntry("variant")
|
variant = container.getMetaDataEntry("variant")
|
||||||
if variant:
|
if variant:
|
||||||
if definition_id not in machine_nozzle_map:
|
if definition_id not in machine_nozzle_map:
|
||||||
machine_nozzle_map[definition_id] = []
|
machine_nozzle_map[definition_id] = {}
|
||||||
machine_nozzle_map[definition_id].append(container)
|
machine_nozzle_map[definition_id][variant] = container
|
||||||
|
|
||||||
for definition_id, container in machine_container_map.items():
|
for definition_id, container in machine_container_map.items():
|
||||||
definition = container.getDefinition()
|
definition = container.getDefinition()
|
||||||
@ -150,7 +155,7 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer):
|
|||||||
self._addSettingElement(builder, instance)
|
self._addSettingElement(builder, instance)
|
||||||
|
|
||||||
# Find all hotend sub-profiles corresponding to this material and machine and add them to this profile.
|
# Find all hotend sub-profiles corresponding to this material and machine and add them to this profile.
|
||||||
for hotend in machine_nozzle_map[definition_id]:
|
for hotend_id, hotend in machine_nozzle_map[definition_id].items():
|
||||||
variant_containers = registry.findInstanceContainers(id = hotend.getMetaDataEntry("variant"))
|
variant_containers = registry.findInstanceContainers(id = hotend.getMetaDataEntry("variant"))
|
||||||
if not variant_containers:
|
if not variant_containers:
|
||||||
continue
|
continue
|
||||||
|
Loading…
x
Reference in New Issue
Block a user