diff --git a/cura/Machines/MaterialManager.py b/cura/Machines/MaterialManager.py index 5d691fcef4..b81be5b5a8 100644 --- a/cura/Machines/MaterialManager.py +++ b/cura/Machines/MaterialManager.py @@ -287,19 +287,10 @@ class MaterialManager(QObject): # 1. variant-specific material # 2. machine-specific material # 3. generic material (for fdmprinter) - machine_exclude_materials = machine_definition.getMetaDataEntry("exclude_materials", []) - material_id_metadata_dict = dict() # type: Dict[str, MaterialNode] for node in nodes_to_check: if node is not None: - # Only exclude the materials that are explicitly specified in the "exclude_materials" field. - # Do not exclude other materials that are of the same type. for material_id, node in node.material_map.items(): - if material_id in machine_exclude_materials: - Logger.log("d", "Exclude material [%s] for machine [%s]", - material_id, machine_definition.getId()) - continue - if material_id not in material_id_metadata_dict: material_id_metadata_dict[material_id] = node diff --git a/cura/Machines/Models/BaseMaterialsModel.py b/cura/Machines/Models/BaseMaterialsModel.py index 4759c8b5b0..5480037563 100644 --- a/cura/Machines/Models/BaseMaterialsModel.py +++ b/cura/Machines/Models/BaseMaterialsModel.py @@ -1,9 +1,9 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. -from PyQt5.QtCore import Qt, pyqtSignal, pyqtProperty +from PyQt5.QtCore import QObject, Qt, pyqtSignal, pyqtProperty -from UM.Application import Application +import cura.CuraApplication from UM.Qt.ListModel import ListModel @@ -24,9 +24,9 @@ class BaseMaterialsModel(ListModel): extruderPositionChanged = pyqtSignal() - def __init__(self, parent = None): + def __init__(self, parent: QObject = None) -> None: super().__init__(parent) - self._application = Application.getInstance() + self._application = cura.CuraApplication.CuraApplication.getInstance() self._machine_manager = self._application.getMachineManager() self.addRoleName(self.RootMaterialIdRole, "root_material_id") diff --git a/cura/Machines/Models/BrandMaterialsModel.py b/cura/Machines/Models/BrandMaterialsModel.py index 236f105d12..729478d974 100644 --- a/cura/Machines/Models/BrandMaterialsModel.py +++ b/cura/Machines/Models/BrandMaterialsModel.py @@ -108,6 +108,8 @@ class BrandMaterialsModel(ListModel): # Only add results for generic materials if brand.lower() == "generic": continue + if not metadata.get("compatible", True): + continue if brand not in brand_group_dict: brand_group_dict[brand] = {} diff --git a/cura/Machines/Models/GenericMaterialsModel.py b/cura/Machines/Models/GenericMaterialsModel.py index 2fac919f3e..369b59961c 100644 --- a/cura/Machines/Models/GenericMaterialsModel.py +++ b/cura/Machines/Models/GenericMaterialsModel.py @@ -1,6 +1,8 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +from typing import Dict, List + from UM.Logger import Logger from cura.Machines.Models.BaseMaterialsModel import BaseMaterialsModel @@ -19,7 +21,7 @@ class GenericMaterialsModel(BaseMaterialsModel): self._material_manager.materialsUpdated.connect(self._update) #Update when the list of materials changes. self._update() - def _update(self): + def _update(self) -> None: Logger.log("d", "Updating {model_class_name}.".format(model_class_name = self.__class__.__name__)) global_stack = self._machine_manager.activeMachine @@ -38,12 +40,14 @@ class GenericMaterialsModel(BaseMaterialsModel): self.setItems([]) return - item_list = [] + item_list = [] #type: List[Dict[str, str]] for root_material_id, container_node in available_material_dict.items(): metadata = container_node.metadata # Only add results for generic materials if metadata["brand"].lower() != "generic": continue + if not metadata.get("compatible", True): + continue item = {"root_material_id": root_material_id, "id": metadata["id"], @@ -51,7 +55,7 @@ class GenericMaterialsModel(BaseMaterialsModel): "brand": metadata["brand"], "material": metadata["material"], "color_name": metadata["color_name"], - "container_node": container_node + "container_node": container_node, } item_list.append(item) diff --git a/resources/definitions/ultimaker.def.json b/resources/definitions/ultimaker.def.json index a980a1afdf..1ca7444d04 100644 --- a/resources/definitions/ultimaker.def.json +++ b/resources/definitions/ultimaker.def.json @@ -6,8 +6,7 @@ "author": "Ultimaker", "manufacturer": "Ultimaker B.V.", "category": "Ultimaker", - "visible": false, - "exclude_materials": [ "generic_hips", "generic_petg" ] + "visible": false }, "overrides": { "machine_max_feedrate_e": { diff --git a/resources/definitions/ultimaker2.def.json b/resources/definitions/ultimaker2.def.json index aa684946c2..c45c3444ca 100644 --- a/resources/definitions/ultimaker2.def.json +++ b/resources/definitions/ultimaker2.def.json @@ -14,7 +14,6 @@ "platform_offset": [9, 0, 0], "has_materials": false, "has_machine_quality": true, - "exclude_materials": ["generic_hips", "generic_petg", "generic_bam", "ultimaker_bam", "generic_pva", "ultimaker_pva", "generic_tough_pla", "ultimaker_tough_pla_black", "ultimaker_tough_pla_green", "ultimaker_tough_pla_red", "ultimaker_tough_pla_white"], "first_start_actions": ["UM2UpgradeSelection"], "supported_actions":["UM2UpgradeSelection", "UpgradeFirmware"], "machine_extruder_trains": diff --git a/resources/definitions/ultimaker_original.def.json b/resources/definitions/ultimaker_original.def.json index c961423504..423312fcce 100644 --- a/resources/definitions/ultimaker_original.def.json +++ b/resources/definitions/ultimaker_original.def.json @@ -12,7 +12,6 @@ "platform": "ultimaker_platform.stl", "has_materials": true, "has_machine_quality": true, - "exclude_materials": ["generic_hips", "generic_petg", "generic_bam", "ultimaker_bam", "generic_pva", "ultimaker_pva", "generic_tough_pla", "ultimaker_tough_pla_black", "ultimaker_tough_pla_green", "ultimaker_tough_pla_red", "ultimaker_tough_pla_white"], "first_start_actions": ["UMOUpgradeSelection", "UMOCheckup", "BedLevel"], "supported_actions": ["UMOUpgradeSelection", "UMOCheckup", "BedLevel", "UpgradeFirmware"], "machine_extruder_trains": diff --git a/resources/definitions/ultimaker_original_dual.def.json b/resources/definitions/ultimaker_original_dual.def.json index 55eddba85f..6c0aa739d9 100644 --- a/resources/definitions/ultimaker_original_dual.def.json +++ b/resources/definitions/ultimaker_original_dual.def.json @@ -13,7 +13,6 @@ "has_materials": true, "has_machine_quality": true, "quality_definition": "ultimaker_original", - "exclude_materials": ["generic_hips", "generic_petg", "generic_bam", "ultimaker_bam", "generic_pva", "ultimaker_pva", "generic_tough_pla", "ultimaker_tough_pla_black", "ultimaker_tough_pla_green", "ultimaker_tough_pla_red", "ultimaker_tough_pla_white"], "machine_extruder_trains": { "0": "ultimaker_original_dual_1st", diff --git a/resources/qml/SidebarHeader.qml b/resources/qml/SidebarHeader.qml index 0e5ac852e8..d39e2b9416 100644 --- a/resources/qml/SidebarHeader.qml +++ b/resources/qml/SidebarHeader.qml @@ -1,5 +1,5 @@ -// Copyright (c) 2017 Ultimaker B.V. -// Cura is released under the terms of the LGPLv3 or higher. +//Copyright (c) 2018 Ultimaker B.V. +//Cura is released under the terms of the LGPLv3 or higher. import QtQuick 2.7 import QtQuick.Controls 1.1 @@ -402,7 +402,7 @@ Column property var valueError: !isMaterialSupported() property var valueWarning: ! Cura.MachineManager.isActiveQualitySupported - function isMaterialSupported () + function isMaterialSupported() { if (!hasActiveExtruder) {