diff --git a/cura/Machines/MachineNode.py b/cura/Machines/MachineNode.py index cc08fd1ff3..b474ae94bd 100644 --- a/cura/Machines/MachineNode.py +++ b/cura/Machines/MachineNode.py @@ -3,6 +3,7 @@ from typing import TYPE_CHECKING +from UM.Logger import Logger from UM.Util import parseBool from UM.Settings.ContainerRegistry import ContainerRegistry # To find all the variants for this machine. from UM.Settings.Interfaces import ContainerInterface @@ -22,8 +23,11 @@ class MachineNode(ContainerNode): self.variants = {} # type: Dict[str, VariantNode] # Mapping variant names to their nodes. self.global_qualities = {} # type: Dict[str, QualityNode] # Mapping quality types to the global quality for those types. container_registry = ContainerRegistry.getInstance() - - my_metadata = container_registry.findContainersMetadata(id = container_id)[0] + try: + my_metadata = container_registry.findContainersMetadata(id = container_id)[0] + except IndexError: + Logger.log("Unable to find metadata for container %s", container_id) + my_metadata = {} # Some of the metadata is cached upon construction here. # ONLY DO THAT FOR METADATA THAT DOESN'T CHANGE DURING RUNTIME! # Otherwise you need to keep it up-to-date during runtime. diff --git a/cura/Settings/ContainerManager.py b/cura/Settings/ContainerManager.py index ea4104235d..bab8efb775 100644 --- a/cura/Settings/ContainerManager.py +++ b/cura/Settings/ContainerManager.py @@ -28,7 +28,6 @@ if TYPE_CHECKING: from cura.Machines.ContainerNode import ContainerNode from cura.Machines.MaterialNode import MaterialNode from cura.Machines.QualityChangesGroup import QualityChangesGroup - from cura.Settings.MachineManager import MachineManager from cura.Machines.MaterialManager import MaterialManager from cura.Machines.QualityManager import QualityManager @@ -269,11 +268,11 @@ class ContainerManager(QObject): # \return \type{bool} True if successful, False if not. @pyqtSlot(result = bool) def updateQualityChanges(self) -> bool: - global_stack = MachineManager.getInstance().activeMachine + global_stack = cura.CuraApplication.CuraApplication.getInstance().getMachineManager().activeMachine if not global_stack: return False - MachineManager.getInstance().blurSettings.emit() + cura.CuraApplication.CuraApplication.getInstance().getMachineManager().blurSettings.emit() current_quality_changes_name = global_stack.qualityChanges.getName() current_quality_type = global_stack.quality.getMetaDataEntry("quality_type") @@ -296,14 +295,14 @@ class ContainerManager(QObject): self._performMerge(quality_changes, stack.getTop()) - MachineManager.getInstance().activeQualityChangesGroupChanged.emit() + cura.CuraApplication.CuraApplication.getInstance().getMachineManager().activeQualityChangesGroupChanged.emit() return True ## Clear the top-most (user) containers of the active stacks. @pyqtSlot() def clearUserContainers(self) -> None: - machine_manager = MachineManager.getInstance() + machine_manager = cura.CuraApplication.CuraApplication.getInstance().getMachineManager() machine_manager.blurSettings.emit() send_emits_containers = []