mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-11-02 20:52:20 -07:00
Remove _added functions for nodes that can't be added during runtime
Among the machines, variants, materials, qualities and intents, only machines and materials can ever be added during runtime. For the rest, we don't need to listen to these signals. Contributes to issue CURA-6600.
This commit is contained in:
parent
97e77994a1
commit
80baeb9873
6 changed files with 7 additions and 188 deletions
|
|
@ -4,7 +4,6 @@
|
|||
from typing import TYPE_CHECKING
|
||||
|
||||
from UM.Settings.ContainerRegistry import ContainerRegistry
|
||||
from UM.Settings.Interfaces import ContainerInterface
|
||||
from cura.Machines.ContainerNode import ContainerNode
|
||||
from cura.Machines.QualityNode import QualityNode
|
||||
|
||||
|
|
@ -20,10 +19,8 @@ class MaterialNode(ContainerNode):
|
|||
super().__init__(container_id)
|
||||
self.variant = variant
|
||||
self.qualities = {} # type: Dict[str, QualityNode] # Mapping container IDs to quality profiles.
|
||||
container_registry = ContainerRegistry.getInstance()
|
||||
my_metadata = container_registry.findContainersMetadata(id = container_id)[0]
|
||||
my_metadata = ContainerRegistry.getInstance().findContainersMetadata(id = container_id)[0]
|
||||
self.base_file = my_metadata["base_file"]
|
||||
container_registry.containerAdded.connect(self._qualityAdded)
|
||||
self._loadAll()
|
||||
|
||||
def _loadAll(self) -> None:
|
||||
|
|
@ -47,39 +44,4 @@ class MaterialNode(ContainerNode):
|
|||
for quality in qualities:
|
||||
quality_id = quality["id"]
|
||||
if quality_id not in self.qualities:
|
||||
self.qualities[quality_id] = QualityNode(quality_id, parent = self)
|
||||
|
||||
def _qualityAdded(self, container: ContainerInterface) -> None:
|
||||
if container.getMetaDataEntry("type") != "quality":
|
||||
return # Not interested.
|
||||
if not self.variant.machine.has_machine_quality:
|
||||
if container.getMetaDataEntry("definition") != "fdmprinter":
|
||||
return # Only want global qualities.
|
||||
else:
|
||||
if container.getMetaDataEntry("definition") != self.variant.machine.quality_definition:
|
||||
return # Doesn't match the machine.
|
||||
if container.getMetaDataEntry("variant") != self.variant.variant_name:
|
||||
return # Doesn't match the variant.
|
||||
# Detect if we're falling back to matching via GUID.
|
||||
# If so, we might need to erase the current list and put just this one in (i.e. no longer use the fallback).
|
||||
container_registry = ContainerRegistry.getInstance()
|
||||
my_metadata = container_registry.findInstanceContainersMetadata(id = self.container_id)[0]
|
||||
my_material_type = my_metadata.get("material")
|
||||
allowed_material_ids = {metadata["id"] for metadata in container_registry.findInstanceContainersMetadata(type = "material", material = my_material_type)}
|
||||
# Select any quality profile; if the material is not matching by material type, we've been falling back to GUID all along.
|
||||
is_fallback_guid = len(self.qualities) == 0 or next(iter(self.qualities.values())).getMetaDataEntry("material") not in allowed_material_ids
|
||||
|
||||
if is_fallback_guid and container.getMetaDataEntry("material") in allowed_material_ids: # So far we needed the fallback, but no longer!
|
||||
self.qualities.clear() # It'll get filled with the new quality profile then.
|
||||
else:
|
||||
if not is_fallback_guid:
|
||||
if container.getMetaDataEntry("material") not in allowed_material_ids:
|
||||
return # Doesn't match the material type.
|
||||
else:
|
||||
my_material_guid = my_metadata.get("GUID")
|
||||
allowed_material_ids = {metadata["id"] for metadata in container_registry.findInstanceContainersMetadata(type = "material", guid = my_material_guid)}
|
||||
if container.getMetaDataEntry("material") not in allowed_material_ids:
|
||||
return # Doesn't match the material GUID.
|
||||
|
||||
quality_id = container.getId()
|
||||
self.qualities[quality_id] = QualityNode(quality_id, parent = self)
|
||||
self.qualities[quality_id] = QualityNode(quality_id, parent = self)
|
||||
Loading…
Add table
Add a link
Reference in a new issue