mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-08 07:27:29 -06:00
Reduce loadingtime of XmlMaterialProfiles by 25%
XmlMaterialProfile did a lot of findInstanceContainers() by GUID and base_file. If base_file is always set, matching GUID is superfluous. This shaved off 20% loading time of the application (43 vs 34 seconds) on a cached load.
This commit is contained in:
parent
43438dd84f
commit
30a679ddf9
1 changed files with 7 additions and 7 deletions
|
@ -47,7 +47,8 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer):
|
||||||
def setReadOnly(self, read_only):
|
def setReadOnly(self, read_only):
|
||||||
super().setReadOnly(read_only)
|
super().setReadOnly(read_only)
|
||||||
|
|
||||||
for container in UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(GUID = self.getMetaDataEntry("GUID")):
|
basefile = self.getMetaDataEntry("base_file", self._id) #if basefile is none, this is a basefile.
|
||||||
|
for container in UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(base_file = basefile):
|
||||||
container._read_only = read_only
|
container._read_only = read_only
|
||||||
|
|
||||||
## Overridden from InstanceContainer
|
## Overridden from InstanceContainer
|
||||||
|
@ -59,7 +60,7 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer):
|
||||||
|
|
||||||
basefile = self.getMetaDataEntry("base_file", self._id) #if basefile is none, this is a basefile.
|
basefile = self.getMetaDataEntry("base_file", self._id) #if basefile is none, this is a basefile.
|
||||||
# Update all containers that share GUID and basefile
|
# Update all containers that share GUID and basefile
|
||||||
for container in UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(GUID = self.getMetaDataEntry("GUID"), base_file = basefile):
|
for container in UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(base_file = basefile):
|
||||||
container.setMetaData(copy.deepcopy(self._metadata))
|
container.setMetaData(copy.deepcopy(self._metadata))
|
||||||
|
|
||||||
## Overridden from InstanceContainer, similar to setMetaDataEntry.
|
## Overridden from InstanceContainer, similar to setMetaDataEntry.
|
||||||
|
@ -78,8 +79,7 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer):
|
||||||
basefile = self.getMetaDataEntry("base_file", self._id) # if basefile is none, this is a basefile.
|
basefile = self.getMetaDataEntry("base_file", self._id) # if basefile is none, this is a basefile.
|
||||||
# Update the basefile as well, this is actually what we're trying to do
|
# Update the basefile as well, this is actually what we're trying to do
|
||||||
# Update all containers that share GUID and basefile
|
# Update all containers that share GUID and basefile
|
||||||
containers = UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(id=basefile) + UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(
|
containers = UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(base_file = basefile)
|
||||||
GUID=self.getMetaDataEntry("GUID"), base_file=basefile)
|
|
||||||
for container in containers:
|
for container in containers:
|
||||||
container.setName(new_name)
|
container.setName(new_name)
|
||||||
|
|
||||||
|
@ -90,7 +90,8 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer):
|
||||||
|
|
||||||
super().setProperty(key, property_name, property_value)
|
super().setProperty(key, property_name, property_value)
|
||||||
|
|
||||||
for container in UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(GUID = self.getMetaDataEntry("GUID")):
|
basefile = self.getMetaDataEntry("base_file", self._id) #if basefile is none, this is a basefile.
|
||||||
|
for container in UM.Settings.ContainerRegistry.getInstance().findInstanceContainers(base_file = basefile):
|
||||||
container._dirty = True
|
container._dirty = True
|
||||||
|
|
||||||
## Overridden from InstanceContainer
|
## Overridden from InstanceContainer
|
||||||
|
@ -245,6 +246,7 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer):
|
||||||
data = ET.fromstring(serialized)
|
data = ET.fromstring(serialized)
|
||||||
|
|
||||||
self.addMetaDataEntry("type", "material")
|
self.addMetaDataEntry("type", "material")
|
||||||
|
self.addMetaDataEntry("base_file", self.id)
|
||||||
|
|
||||||
# TODO: Add material verfication
|
# TODO: Add material verfication
|
||||||
self.addMetaDataEntry("status", "unknown")
|
self.addMetaDataEntry("status", "unknown")
|
||||||
|
@ -341,7 +343,6 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer):
|
||||||
new_material.setName(self.getName())
|
new_material.setName(self.getName())
|
||||||
new_material.setMetaData(copy.deepcopy(self.getMetaData()))
|
new_material.setMetaData(copy.deepcopy(self.getMetaData()))
|
||||||
new_material.setDefinition(definition)
|
new_material.setDefinition(definition)
|
||||||
new_material.addMetaDataEntry("base_file", self.id)
|
|
||||||
|
|
||||||
for key, value in global_setting_values.items():
|
for key, value in global_setting_values.items():
|
||||||
new_material.setProperty(key, "value", value, definition)
|
new_material.setProperty(key, "value", value, definition)
|
||||||
|
@ -388,7 +389,6 @@ class XmlMaterialProfile(UM.Settings.InstanceContainer):
|
||||||
new_hotend_material.setName(self.getName())
|
new_hotend_material.setName(self.getName())
|
||||||
new_hotend_material.setMetaData(copy.deepcopy(self.getMetaData()))
|
new_hotend_material.setMetaData(copy.deepcopy(self.getMetaData()))
|
||||||
new_hotend_material.setDefinition(definition)
|
new_hotend_material.setDefinition(definition)
|
||||||
new_hotend_material.addMetaDataEntry("base_file", self.id)
|
|
||||||
new_hotend_material.addMetaDataEntry("variant", variant_containers[0].id)
|
new_hotend_material.addMetaDataEntry("variant", variant_containers[0].id)
|
||||||
|
|
||||||
for key, value in global_setting_values.items():
|
for key, value in global_setting_values.items():
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue