12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- # Copyright (c) 2019 Ultimaker B.V.
- # Cura is released under the terms of the LGPLv3 or higher.
- from typing import Union, TYPE_CHECKING
- from UM.Settings.ContainerRegistry import ContainerRegistry
- from cura.Machines.ContainerNode import ContainerNode
- from cura.Machines.IntentNode import IntentNode
- import UM.FlameProfiler
- if TYPE_CHECKING:
- from typing import Dict
- from cura.Machines.MaterialNode import MaterialNode
- from cura.Machines.MachineNode import MachineNode
- class QualityNode(ContainerNode):
- """Represents a quality profile in the container tree.
- This may either be a normal quality profile or a global quality profile.
- Its subcontainers are intent profiles.
- """
- def __init__(self, container_id: str, parent: Union["MaterialNode", "MachineNode"]) -> None:
- super().__init__(container_id)
- self.parent = parent
- self.intents = {} # type: Dict[str, IntentNode]
- my_metadata = ContainerRegistry.getInstance().findContainersMetadata(id = container_id)[0]
- self.quality_type = my_metadata["quality_type"]
- # The material type of the parent doesn't need to be the same as this due to generic fallbacks.
- self._material = my_metadata.get("material")
- self._loadAll()
- @UM.FlameProfiler.profile
- def _loadAll(self) -> None:
- container_registry = ContainerRegistry.getInstance()
- # Find all intent profiles that fit the current configuration.
- from cura.Machines.MachineNode import MachineNode
- if not isinstance(self.parent, MachineNode): # Not a global profile.
- for intent in container_registry.findInstanceContainersMetadata(type = "intent", definition = self.parent.variant.machine.quality_definition, variant = self.parent.variant.variant_name, material = self._material, quality_type = self.quality_type):
- self.intents[intent["id"]] = IntentNode(intent["id"], quality = self)
- self.intents["empty_intent"] = IntentNode("empty_intent", quality = self)
- # Otherwise, there are no intents for global profiles.
|