diff --git a/cura/Settings/ContainerManager.py b/cura/Settings/ContainerManager.py index 8d13dc7b48..4edddb9d83 100644 --- a/cura/Settings/ContainerManager.py +++ b/cura/Settings/ContainerManager.py @@ -9,7 +9,6 @@ from typing import Dict, Union, Any, TYPE_CHECKING, List from PyQt5.QtCore import QObject, QUrl from PyQt5.QtWidgets import QMessageBox - from UM.i18n import i18nCatalog from UM.FlameProfiler import pyqtSlot from UM.Logger import Logger @@ -17,6 +16,7 @@ from UM.MimeTypeDatabase import MimeTypeDatabase, MimeTypeNotFoundError from UM.Platform import Platform from UM.SaveFile import SaveFile from UM.Settings.ContainerFormatError import ContainerFormatError +from UM.Settings.ContainerRegistry import ContainerRegistry from UM.Settings.ContainerStack import ContainerStack from UM.Settings.DefinitionContainer import DefinitionContainer from UM.Settings.InstanceContainer import InstanceContainer @@ -327,21 +327,14 @@ class ContainerManager(QObject): # the same GUID. # \param exclude_self Whether to include the name of the material you # provided. - # \return A list of names of materials with the same GUID + # \return A list of names of materials with the same GUID. @pyqtSlot("QVariant", bool, result = "QStringList") def getLinkedMaterials(self, material_node: "MaterialNode", exclude_self: bool = False) -> List[str]: - guid = material_node.getMetaDataEntry("GUID", "") - - self_root_material_id = material_node.getMetaDataEntry("base_file") - material_group_list = MaterialManager.getInstance().getMaterialGroupListByGUID(guid) - - linked_material_names = [] - if material_group_list: - for material_group in material_group_list: - if exclude_self and material_group.name == self_root_material_id: - continue - linked_material_names.append(material_group.root_material_node.getMetaDataEntry("name", "")) - return linked_material_names + same_guid = ContainerRegistry.getInstance().findInstanceContainersMetadata(guid = material_node.guid) + if exclude_self: + return [metadata["name"] for metadata in same_guid if metadata["base_file"] != material_node.base_file] + else: + return [metadata["name"] for metadata in same_guid] ## Unlink a material from all other materials by creating a new GUID # \param material_id \type{str} the id of the material to create a new GUID for.