|
@@ -1,104 +0,0 @@
|
|
|
-# Copyright (c) 2018 Ultimaker B.V.
|
|
|
-# Cura is released under the terms of the LGPLv3 or higher.
|
|
|
-
|
|
|
-from PyQt5.QtCore import Qt
|
|
|
-
|
|
|
-from UM.Logger import Logger
|
|
|
-from UM.Qt.ListModel import ListModel
|
|
|
-
|
|
|
-
|
|
|
-#
|
|
|
-# This model is for the Material management page.
|
|
|
-#
|
|
|
-class MaterialManagementModel(ListModel):
|
|
|
- RootMaterialIdRole = Qt.UserRole + 1
|
|
|
- DisplayNameRole = Qt.UserRole + 2
|
|
|
- BrandRole = Qt.UserRole + 3
|
|
|
- MaterialTypeRole = Qt.UserRole + 4
|
|
|
- ColorNameRole = Qt.UserRole + 5
|
|
|
- ColorCodeRole = Qt.UserRole + 6
|
|
|
- ContainerNodeRole = Qt.UserRole + 7
|
|
|
- ContainerIdRole = Qt.UserRole + 8
|
|
|
-
|
|
|
- DescriptionRole = Qt.UserRole + 9
|
|
|
- AdhesionInfoRole = Qt.UserRole + 10
|
|
|
- ApproximateDiameterRole = Qt.UserRole + 11
|
|
|
- GuidRole = Qt.UserRole + 12
|
|
|
- DensityRole = Qt.UserRole + 13
|
|
|
- DiameterRole = Qt.UserRole + 14
|
|
|
- IsReadOnlyRole = Qt.UserRole + 15
|
|
|
-
|
|
|
- def __init__(self, parent = None):
|
|
|
- super().__init__(parent)
|
|
|
-
|
|
|
- self.addRoleName(self.RootMaterialIdRole, "root_material_id")
|
|
|
- self.addRoleName(self.DisplayNameRole, "name")
|
|
|
- self.addRoleName(self.BrandRole, "brand")
|
|
|
- self.addRoleName(self.MaterialTypeRole, "material")
|
|
|
- self.addRoleName(self.ColorNameRole, "color_name")
|
|
|
- self.addRoleName(self.ColorCodeRole, "color_code")
|
|
|
- self.addRoleName(self.ContainerNodeRole, "container_node")
|
|
|
- self.addRoleName(self.ContainerIdRole, "container_id")
|
|
|
-
|
|
|
- self.addRoleName(self.DescriptionRole, "description")
|
|
|
- self.addRoleName(self.AdhesionInfoRole, "adhesion_info")
|
|
|
- self.addRoleName(self.ApproximateDiameterRole, "approximate_diameter")
|
|
|
- self.addRoleName(self.GuidRole, "guid")
|
|
|
- self.addRoleName(self.DensityRole, "density")
|
|
|
- self.addRoleName(self.DiameterRole, "diameter")
|
|
|
- self.addRoleName(self.IsReadOnlyRole, "is_read_only")
|
|
|
-
|
|
|
- from cura.CuraApplication import CuraApplication
|
|
|
- self._container_registry = CuraApplication.getInstance().getContainerRegistry()
|
|
|
- self._machine_manager = CuraApplication.getInstance().getMachineManager()
|
|
|
- self._extruder_manager = CuraApplication.getInstance().getExtruderManager()
|
|
|
- self._material_manager = CuraApplication.getInstance().getMaterialManager()
|
|
|
-
|
|
|
- self._machine_manager.globalContainerChanged.connect(self._update)
|
|
|
- self._extruder_manager.activeExtruderChanged.connect(self._update)
|
|
|
- self._material_manager.materialsUpdated.connect(self._update)
|
|
|
-
|
|
|
- self._update()
|
|
|
-
|
|
|
- def _update(self):
|
|
|
- Logger.log("d", "Updating {model_class_name}.".format(model_class_name = self.__class__.__name__))
|
|
|
-
|
|
|
- global_stack = self._machine_manager.activeMachine
|
|
|
- if global_stack is None:
|
|
|
- self.setItems([])
|
|
|
- return
|
|
|
- active_extruder_stack = self._machine_manager.activeStack
|
|
|
-
|
|
|
- available_material_dict = self._material_manager.getAvailableMaterialsForMachineExtruder(global_stack,
|
|
|
- active_extruder_stack)
|
|
|
- if available_material_dict is None:
|
|
|
- self.setItems([])
|
|
|
- return
|
|
|
-
|
|
|
- material_list = []
|
|
|
- for root_material_id, container_node in available_material_dict.items():
|
|
|
- keys_to_fetch = ("name",
|
|
|
- "brand",
|
|
|
- "material",
|
|
|
- "color_name",
|
|
|
- "color_code",
|
|
|
- "description",
|
|
|
- "adhesion_info",
|
|
|
- "approximate_diameter",)
|
|
|
-
|
|
|
- item = {"root_material_id": container_node.metadata["base_file"],
|
|
|
- "container_node": container_node,
|
|
|
- "guid": container_node.metadata["GUID"],
|
|
|
- "container_id": container_node.metadata["id"],
|
|
|
- "density": container_node.metadata.get("properties", {}).get("density", ""),
|
|
|
- "diameter": container_node.metadata.get("properties", {}).get("diameter", ""),
|
|
|
- "is_read_only": self._container_registry.isReadOnly(container_node.metadata["id"]),
|
|
|
- }
|
|
|
-
|
|
|
- for key in keys_to_fetch:
|
|
|
- item[key] = container_node.metadata.get(key, "")
|
|
|
-
|
|
|
- material_list.append(item)
|
|
|
-
|
|
|
- material_list = sorted(material_list, key = lambda k: (k["brand"].upper(), k["name"].upper()))
|
|
|
- self.setItems(material_list)
|