1# Copyright (c) 2019 Ultimaker B.V. 2# Cura is released under the terms of the LGPLv3 or higher. 3 4import copy 5 6from UM.Settings.constant_instance_containers import EMPTY_CONTAINER_ID, empty_container 7from UM.i18n import i18nCatalog 8catalog = i18nCatalog("cura") 9 10 11# Empty definition changes 12EMPTY_DEFINITION_CHANGES_CONTAINER_ID = "empty_definition_changes" 13empty_definition_changes_container = copy.deepcopy(empty_container) 14empty_definition_changes_container.setMetaDataEntry("id", EMPTY_DEFINITION_CHANGES_CONTAINER_ID) 15empty_definition_changes_container.setMetaDataEntry("type", "definition_changes") 16 17# Empty variant 18EMPTY_VARIANT_CONTAINER_ID = "empty_variant" 19empty_variant_container = copy.deepcopy(empty_container) 20empty_variant_container.setMetaDataEntry("id", EMPTY_VARIANT_CONTAINER_ID) 21empty_variant_container.setMetaDataEntry("type", "variant") 22 23# Empty material 24EMPTY_MATERIAL_CONTAINER_ID = "empty_material" 25empty_material_container = copy.deepcopy(empty_container) 26empty_material_container.setMetaDataEntry("id", EMPTY_MATERIAL_CONTAINER_ID) 27empty_material_container.setMetaDataEntry("type", "material") 28empty_material_container.setMetaDataEntry("base_file", "empty_material") 29empty_material_container.setMetaDataEntry("GUID", "FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF") 30empty_material_container.setMetaDataEntry("material", "empty") 31 32# Empty quality 33EMPTY_QUALITY_CONTAINER_ID = "empty_quality" 34empty_quality_container = copy.deepcopy(empty_container) 35empty_quality_container.setMetaDataEntry("id", EMPTY_QUALITY_CONTAINER_ID) 36empty_quality_container.setName(catalog.i18nc("@info:not supported profile", "Not supported")) 37empty_quality_container.setMetaDataEntry("quality_type", "not_supported") 38empty_quality_container.setMetaDataEntry("type", "quality") 39empty_quality_container.setMetaDataEntry("supported", False) 40 41# Empty quality changes 42EMPTY_QUALITY_CHANGES_CONTAINER_ID = "empty_quality_changes" 43empty_quality_changes_container = copy.deepcopy(empty_container) 44empty_quality_changes_container.setMetaDataEntry("id", EMPTY_QUALITY_CHANGES_CONTAINER_ID) 45empty_quality_changes_container.setMetaDataEntry("type", "quality_changes") 46empty_quality_changes_container.setMetaDataEntry("quality_type", "not_supported") 47empty_quality_changes_container.setMetaDataEntry("intent_category", "not_supported") 48 49# Empty intent 50EMPTY_INTENT_CONTAINER_ID = "empty_intent" 51empty_intent_container = copy.deepcopy(empty_container) 52empty_intent_container.setMetaDataEntry("id", EMPTY_INTENT_CONTAINER_ID) 53empty_intent_container.setMetaDataEntry("type", "intent") 54empty_intent_container.setMetaDataEntry("intent_category", "default") 55empty_intent_container.setName(catalog.i18nc("@info:No intent profile selected", "Default")) 56 57 58# All empty container IDs set 59ALL_EMPTY_CONTAINER_ID_SET = { 60 EMPTY_CONTAINER_ID, 61 EMPTY_DEFINITION_CHANGES_CONTAINER_ID, 62 EMPTY_VARIANT_CONTAINER_ID, 63 EMPTY_MATERIAL_CONTAINER_ID, 64 EMPTY_QUALITY_CONTAINER_ID, 65 EMPTY_QUALITY_CHANGES_CONTAINER_ID, 66 EMPTY_INTENT_CONTAINER_ID 67} 68 69 70# Convenience function to check if a container ID represents an empty container. 71def isEmptyContainer(container_id: str) -> bool: 72 return container_id in ALL_EMPTY_CONTAINER_ID_SET 73 74 75__all__ = ["EMPTY_CONTAINER_ID", 76 "empty_container", # For convenience 77 "EMPTY_DEFINITION_CHANGES_CONTAINER_ID", 78 "empty_definition_changes_container", 79 "EMPTY_VARIANT_CONTAINER_ID", 80 "empty_variant_container", 81 "EMPTY_MATERIAL_CONTAINER_ID", 82 "empty_material_container", 83 "EMPTY_QUALITY_CHANGES_CONTAINER_ID", 84 "empty_quality_changes_container", 85 "EMPTY_QUALITY_CONTAINER_ID", 86 "empty_quality_container", 87 "ALL_EMPTY_CONTAINER_ID_SET", 88 "isEmptyContainer", 89 "EMPTY_INTENT_CONTAINER_ID", 90 "empty_intent_container" 91 ] 92