mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-09 07:56:22 -06:00
Also duplicate the base file when duplicating a material profile
This way serialization will always be correctly performed and we can generate a machine/variant specifc ID for the duplicate. Contributes to CURA-341
This commit is contained in:
parent
f21079b763
commit
fdab77ff6a
1 changed files with 24 additions and 2 deletions
|
@ -20,8 +20,27 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer):
|
||||||
|
|
||||||
## Overridden from InstanceContainer
|
## Overridden from InstanceContainer
|
||||||
def duplicate(self, new_id, new_name = None):
|
def duplicate(self, new_id, new_name = None):
|
||||||
result = super().duplicate(self.getMetaDataEntry("brand") + "_" + new_id, new_name)
|
base_file = self.getMetaDataEntry("base_file", "")
|
||||||
result.setMetaDataEntry("GUID", str(uuid.uuid4()))
|
new_uuid = str(uuid.uuid4())
|
||||||
|
|
||||||
|
if base_file:
|
||||||
|
containers = UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(id = base_file)
|
||||||
|
if containers:
|
||||||
|
new_basefile = containers[0].duplicate(self.getMetaDataEntry("brand") + "_" + new_id, new_name)
|
||||||
|
new_basefile.setMetaDataEntry("GUID", new_uuid)
|
||||||
|
base_file = new_basefile.id
|
||||||
|
UM.Settings.ContainerRegistry.getInstance().addContainer(new_basefile)
|
||||||
|
|
||||||
|
new_id = self.getMetaDataEntry("brand") + "_" + new_id + "_" + self.getDefinition().getId()
|
||||||
|
variant = self.getMetaDataEntry("variant")
|
||||||
|
if variant:
|
||||||
|
variant_containers = UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(id = variant)
|
||||||
|
if variant_containers:
|
||||||
|
new_id += "_" + variant_containers[0].getName().replace(" ", "_")
|
||||||
|
|
||||||
|
result = super().duplicate(new_id, new_name)
|
||||||
|
result.setMetaDataEntry("GUID", new_uuid)
|
||||||
|
result.setMetaDataEntry("base_file", base_file)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
## Overridden from InstanceContainer
|
## Overridden from InstanceContainer
|
||||||
|
@ -33,6 +52,9 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer):
|
||||||
|
|
||||||
## Overridden from InstanceContainer
|
## Overridden from InstanceContainer
|
||||||
def setMetaDataEntry(self, key, value):
|
def setMetaDataEntry(self, key, value):
|
||||||
|
if self.isReadOnly():
|
||||||
|
return
|
||||||
|
|
||||||
super().setMetaDataEntry(key, value)
|
super().setMetaDataEntry(key, value)
|
||||||
|
|
||||||
for container in UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(GUID = self.getMetaDataEntry("GUID")):
|
for container in UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(GUID = self.getMetaDataEntry("GUID")):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue