diff --git a/cura/Machines/MachineNode.py b/cura/Machines/MachineNode.py index f0a001b2d6..567ec1deab 100644 --- a/cura/Machines/MachineNode.py +++ b/cura/Machines/MachineNode.py @@ -70,7 +70,7 @@ class MachineNode(ContainerNode): # Create the quality group for each available type. quality_groups = {} for quality_type, global_quality_node in self.global_qualities.items(): - quality_groups[quality_type] = QualityGroup(name = global_quality_node.getMetaDataEntry("name", "Unnamed profile"), quality_type = quality_type) + quality_groups[quality_type] = QualityGroup(name = global_quality_node.container.getMetaDataEntry("name", "Unnamed profile"), quality_type = quality_type) quality_groups[quality_type].node_for_global = global_quality_node for extruder, qualities_per_type in qualities_per_type_per_extruder: quality_groups[quality_type].nodes_for_extruders[extruder] = qualities_per_type[quality_type] diff --git a/cura/Machines/MaterialManager.py b/cura/Machines/MaterialManager.py index 4790314b25..44559b27d8 100644 --- a/cura/Machines/MaterialManager.py +++ b/cura/Machines/MaterialManager.py @@ -247,7 +247,7 @@ class MaterialManager(QObject): # Check if the material is active in any extruder train. In that case, the material shouldn't be removed! # In the future we might enable this again, but right now, it's causing a ton of issues if we do (since it # corrupts the configuration) - root_material_id = material_node.getMetaDataEntry("base_file") + root_material_id = material_node.container.getMetaDataEntry("base_file") ids_to_remove = [metadata.get("id", "") for metadata in CuraContainerRegistry.getInstance().findInstanceContainersMetadata(base_file=root_material_id)] for extruder_stack in CuraContainerRegistry.getInstance().findContainerStacks(type = "extruder_train"): @@ -257,7 +257,7 @@ class MaterialManager(QObject): @pyqtSlot("QVariant", str) def setMaterialName(self, material_node: "MaterialNode", name: str) -> None: - root_material_id = material_node.getMetaDataEntry("base_file") + root_material_id = material_node.container.getMetaDataEntry("base_file") if root_material_id is None: return if CuraContainerRegistry.getInstance().isReadOnly(root_material_id): @@ -268,7 +268,7 @@ class MaterialManager(QObject): @pyqtSlot("QVariant") def removeMaterial(self, material_node: "MaterialNode") -> None: - root_material_id = material_node.getMetaDataEntry("base_file") + root_material_id = material_node.container.getMetaDataEntry("base_file") if root_material_id is not None: self.removeMaterialByRootId(root_material_id) @@ -332,7 +332,7 @@ class MaterialManager(QObject): # @pyqtSlot("QVariant", result = str) def duplicateMaterial(self, material_node: MaterialNode, new_base_id: Optional[str] = None, new_metadata: Dict[str, Any] = None) -> Optional[str]: - root_material_id = cast(str, material_node.getMetaDataEntry("base_file", "")) + root_material_id = cast(str, material_node.container.getMetaDataEntry("base_file", "")) return self.duplicateMaterialByRootId(root_material_id, new_base_id, new_metadata) # Create a new material by cloning Generic PLA for the current material diameter and generate a new GUID. diff --git a/cura/Machines/Models/FavoriteMaterialsModel.py b/cura/Machines/Models/FavoriteMaterialsModel.py index bab0809ee0..bab6df6260 100644 --- a/cura/Machines/Models/FavoriteMaterialsModel.py +++ b/cura/Machines/Models/FavoriteMaterialsModel.py @@ -29,7 +29,7 @@ class FavoriteMaterialsModel(BaseMaterialsModel): for root_material_id, container_node in self._available_materials.items(): # Do not include the materials from a to-be-removed package - if bool(container_node.getMetaDataEntry("removed", False)): + if bool(container_node.container.getMetaDataEntry("removed", False)): continue # Only add results for favorite materials diff --git a/cura/Machines/Models/GenericMaterialsModel.py b/cura/Machines/Models/GenericMaterialsModel.py index 78d3641652..f5edc22051 100644 --- a/cura/Machines/Models/GenericMaterialsModel.py +++ b/cura/Machines/Models/GenericMaterialsModel.py @@ -20,11 +20,11 @@ class GenericMaterialsModel(BaseMaterialsModel): for root_material_id, container_node in self._available_materials.items(): # Do not include the materials from a to-be-removed package - if bool(container_node.getMetaDataEntry("removed", False)): + if bool(container_node.container.getMetaDataEntry("removed", False)): continue # Only add results for generic materials - if container_node.getMetaDataEntry("brand", "unknown").lower() != "generic": + if container_node.container.getMetaDataEntry("brand", "unknown").lower() != "generic": continue item = self._createMaterialItem(root_material_id, container_node) diff --git a/cura/Machines/Models/MaterialBrandsModel.py b/cura/Machines/Models/MaterialBrandsModel.py index 85167632af..8bb5217fe7 100644 --- a/cura/Machines/Models/MaterialBrandsModel.py +++ b/cura/Machines/Models/MaterialBrandsModel.py @@ -38,18 +38,18 @@ class MaterialBrandsModel(BaseMaterialsModel): # Part 1: Generate the entire tree of brands -> material types -> spcific materials for root_material_id, container_node in self._available_materials.items(): # Do not include the materials from a to-be-removed package - if bool(container_node.getMetaDataEntry("removed", False)): + if bool(container_node.container.getMetaDataEntry("removed", False)): continue # Add brands we haven't seen yet to the dict, skipping generics - brand = container_node.getMetaDataEntry("brand", "") + brand = container_node.container.getMetaDataEntry("brand", "") if brand.lower() == "generic": continue if brand not in brand_group_dict: brand_group_dict[brand] = {} # Add material types we haven't seen yet to the dict - material_type = container_node.getMetaDataEntry("material", "") + material_type = container_node.container.getMetaDataEntry("material", "") if material_type not in brand_group_dict[brand]: brand_group_dict[brand][material_type] = [] diff --git a/cura/Machines/QualityChangesGroup.py b/cura/Machines/QualityChangesGroup.py index 7844b935dc..16e3e08c81 100644 --- a/cura/Machines/QualityChangesGroup.py +++ b/cura/Machines/QualityChangesGroup.py @@ -18,10 +18,10 @@ class QualityChangesGroup(QualityGroup): self._container_registry = Application.getInstance().getContainerRegistry() def addNode(self, node: "QualityNode") -> None: - extruder_position = node.getMetaDataEntry("position") + extruder_position = node.container.getMetaDataEntry("position") if extruder_position is None and self.node_for_global is not None or extruder_position in self.nodes_for_extruders: #We would be overwriting another node. - ConfigurationErrorMessage.getInstance().addFaultyContainers(node.getMetaDataEntry("id")) + ConfigurationErrorMessage.getInstance().addFaultyContainers(node.container_id) return if extruder_position is None: # Then we're a global quality changes profile. diff --git a/cura/Machines/QualityGroup.py b/cura/Machines/QualityGroup.py index 4eb68a04af..a4324e069d 100644 --- a/cura/Machines/QualityGroup.py +++ b/cura/Machines/QualityGroup.py @@ -60,12 +60,12 @@ class QualityGroup(QObject): self.node_for_global = node # Update is_experimental flag - is_experimental = parseBool(node.getMetaDataEntry("is_experimental", False)) + is_experimental = parseBool(node.container.getMetaDataEntry("is_experimental", False)) self.is_experimental |= is_experimental def setExtruderNode(self, position: int, node: "ContainerNode") -> None: self.nodes_for_extruders[position] = node # Update is_experimental flag - is_experimental = parseBool(node.getMetaDataEntry("is_experimental", False)) + is_experimental = parseBool(node.container.getMetaDataEntry("is_experimental", False)) self.is_experimental |= is_experimental diff --git a/cura/Machines/QualityManager.py b/cura/Machines/QualityManager.py index 57bcaa9c70..e0364ba172 100644 --- a/cura/Machines/QualityManager.py +++ b/cura/Machines/QualityManager.py @@ -165,7 +165,7 @@ class QualityManager(QObject): Logger.log("i", "Removing quality changes group [%s]", quality_changes_group.name) removed_quality_changes_ids = set() for node in quality_changes_group.getAllNodes(): - container_id = node.getMetaDataEntry("id") + container_id = node.container_id self._container_registry.removeContainer(container_id) removed_quality_changes_ids.add(container_id) diff --git a/cura/Settings/ContainerManager.py b/cura/Settings/ContainerManager.py index 4edddb9d83..a4c75353f5 100644 --- a/cura/Settings/ContainerManager.py +++ b/cura/Settings/ContainerManager.py @@ -83,7 +83,7 @@ class ContainerManager(QObject): # Update: In order for QML to use objects and sub objects, those (sub) objects must all be QObject. Is that what we want? @pyqtSlot("QVariant", str, str) def setContainerMetaDataEntry(self, container_node: "ContainerNode", entry_name: str, entry_value: str) -> bool: - root_material_id = container_node.getMetaDataEntry("base_file", "") + root_material_id = container_node.container.getMetaDataEntry("base_file", "") if cura.CuraApplication.CuraApplication.getInstance().getContainerRegistry().isReadOnly(root_material_id): Logger.log("w", "Cannot set metadata of read-only container %s.", root_material_id) return False @@ -99,7 +99,7 @@ class ContainerManager(QObject): sub_item_changed = False if entries: root_name = entries.pop(0) - root = material_group.root_material_node.getMetaDataEntry(root_name) + root = material_group.root_material_node.container.getMetaDataEntry(root_name) item = root for _ in range(len(entries)): @@ -341,7 +341,7 @@ class ContainerManager(QObject): @pyqtSlot("QVariant") def unlinkMaterial(self, material_node: "MaterialNode") -> None: # Get the material group - material_group = MaterialManager.getInstance().getMaterialGroup(material_node.getMetaDataEntry("base_file", "")) + material_group = MaterialManager.getInstance().getMaterialGroup(material_node.container.getMetaDataEntry("base_file", "")) if material_group is None: Logger.log("w", "Unable to find material group for %s", material_node) diff --git a/cura/Settings/IntentManager.py b/cura/Settings/IntentManager.py index 2cfbf11ae2..251cf0aed8 100644 --- a/cura/Settings/IntentManager.py +++ b/cura/Settings/IntentManager.py @@ -81,7 +81,7 @@ class IntentManager(QObject): available_quality_types = {quality_group.quality_type for quality_group in quality_groups.values() if quality_group.node_for_global is not None} final_intent_ids = set() # type: Set[str] - current_definition_id = global_stack.definition.getMetaDataEntry("id") + current_definition_id = global_stack.definition.getId() for extruder_stack in global_stack.extruderList: nozzle_name = extruder_stack.variant.getMetaDataEntry("name") material_id = extruder_stack.material.getMetaDataEntry("base_file") @@ -106,7 +106,7 @@ class IntentManager(QObject): global_stack = cura.CuraApplication.CuraApplication.getInstance().getGlobalContainerStack() if global_stack is None: return ["default"] - current_definition_id = global_stack.definition.getMetaDataEntry("id") + current_definition_id = global_stack.definition.getId() final_intent_categories = set() # type: Set[str] for extruder_stack in global_stack.extruderList: nozzle_name = extruder_stack.variant.getMetaDataEntry("name") @@ -136,7 +136,7 @@ class IntentManager(QObject): global_stack = application.getGlobalContainerStack() if global_stack is None: return - current_definition_id = global_stack.definition.getMetaDataEntry("id") + current_definition_id = global_stack.definition.getId() for extruder_stack in global_stack.extruderList: nozzle_name = extruder_stack.variant.getMetaDataEntry("name") material_id = extruder_stack.material.getMetaDataEntry("base_file") diff --git a/cura/Settings/MachineManager.py b/cura/Settings/MachineManager.py index 772c942d0f..aaf9500eba 100755 --- a/cura/Settings/MachineManager.py +++ b/cura/Settings/MachineManager.py @@ -1254,7 +1254,7 @@ class MachineManager(QObject): return if material_node: self._global_container_stack.extruders[position].material = CuraContainerRegistry.getInstance().findContainers(id = material_node.container_id)[0] - root_material_id = material_node.getMetaDataEntry("base_file", None) + root_material_id = material_node.container.getMetaDataEntry("base_file", None) else: self._global_container_stack.extruders[position].material = empty_material_container root_material_id = None diff --git a/tests/TestMaterialManager.py b/tests/TestMaterialManager.py index 21ec44972c..d87ab3a63e 100644 --- a/tests/TestMaterialManager.py +++ b/tests/TestMaterialManager.py @@ -137,7 +137,7 @@ def test_getMaterialNode(application): manager = MaterialManager(mocked_registry) manager._updateMaps() - assert manager.getMaterialNode("fdmmachine", None, None, 3, "base_material").getMetaDataEntry("id") == "test" + assert manager.getMaterialNode("fdmmachine", None, None, 3, "base_material").container_id == "test" def test_getAvailableMaterialsForMachineExtruder(application):