diff --git a/cura/Machines/Models/BaseMaterialsModel.py b/cura/Machines/Models/BaseMaterialsModel.py index ceba1f6eeb..ebf87e26b3 100644 --- a/cura/Machines/Models/BaseMaterialsModel.py +++ b/cura/Machines/Models/BaseMaterialsModel.py @@ -23,6 +23,7 @@ class BaseMaterialsModel(ListModel): ContainerNodeRole = Qt.UserRole + 7 ColorCodeRole = Qt.UserRole + 8 GUIDRole = Qt.UserRole + 9 + IsFavoriteRole = Qt.UserRole + 10 extruderPositionChanged = pyqtSignal() @@ -40,6 +41,7 @@ class BaseMaterialsModel(ListModel): self.addRoleName(self.ColorRole, "color_name") self.addRoleName(self.ColorCodeRole, "color_code") self.addRoleName(self.ContainerNodeRole, "container_node") + self.addRoleName(self.IsFavoriteRole, "is_favorite") self._extruder_position = 0 self._extruder_stack = None diff --git a/cura/Machines/Models/BrandMaterialsModel.py b/cura/Machines/Models/BrandMaterialsModel.py index c5edd6e57c..1eb76ca33c 100644 --- a/cura/Machines/Models/BrandMaterialsModel.py +++ b/cura/Machines/Models/BrandMaterialsModel.py @@ -58,6 +58,7 @@ class BrandMaterialsModel(ListModel): self._machine_manager.globalContainerChanged.connect(self._updateExtruderStack) self._machine_manager.activeStackChanged.connect(self._update) #Update when switching machines. self._material_manager.materialsUpdated.connect(self._update) #Update when the list of materials changes. + # self._material_manager.favoritesUpdated.connect(self._update) # Update when favorites are changed self._update() def _updateExtruderStack(self): @@ -106,6 +107,7 @@ class BrandMaterialsModel(ListModel): for root_material_id, container_node in available_material_dict.items(): metadata = container_node.metadata + favorites = self._material_manager.getFavorites() # Do not include the materials from a to-be-removed package if bool(metadata.get("removed", False)): @@ -142,7 +144,7 @@ class BrandMaterialsModel(ListModel): "adhesion_info": metadata["adhesion_info"], "is_read_only": self._container_registry.isReadOnly(metadata["id"]), "container_node": container_node, - "is_favorite": False + "is_favorite": root_material_id in favorites } brand_group_dict[brand][material_type].append(item) diff --git a/cura/Machines/Models/FavoriteMaterialsModel.py b/cura/Machines/Models/FavoriteMaterialsModel.py index 9d05f8cb4a..d9ca69f4e1 100644 --- a/cura/Machines/Models/FavoriteMaterialsModel.py +++ b/cura/Machines/Models/FavoriteMaterialsModel.py @@ -27,6 +27,7 @@ class FavoriteMaterialsModel(BaseMaterialsModel): if global_stack is None: self.setItems([]) return + extruder_position = str(self._extruder_position) if extruder_position not in global_stack.extruders: self.setItems([]) @@ -40,8 +41,6 @@ class FavoriteMaterialsModel(BaseMaterialsModel): favorite_ids = self._material_manager.getFavorites() - print("favorite_ids:", favorite_ids) - item_list = [] for root_material_id, container_node in available_material_dict.items(): metadata = container_node.metadata @@ -61,11 +60,13 @@ class FavoriteMaterialsModel(BaseMaterialsModel): "brand": metadata["brand"], "material": metadata["material"], "color_name": metadata["color_name"], - "container_node": container_node + "color_code": metadata["color_code"], + "container_node": container_node, + "is_favorite": True } item_list.append(item) # Sort the item list by material name alphabetically - item_list = sorted(item_list, key = lambda d: d["name"].upper()) + item_list = sorted(item_list, key = lambda d: d["brand"].upper()) self.setItems(item_list) diff --git a/cura/Machines/Models/GenericMaterialsModel.py b/cura/Machines/Models/GenericMaterialsModel.py index f14b039c91..90c8d43026 100644 --- a/cura/Machines/Models/GenericMaterialsModel.py +++ b/cura/Machines/Models/GenericMaterialsModel.py @@ -38,6 +38,8 @@ class GenericMaterialsModel(BaseMaterialsModel): self.setItems([]) return + favorites = self._material_manager.getFavorites() + item_list = [] for root_material_id, container_node in available_material_dict.items(): metadata = container_node.metadata @@ -50,14 +52,17 @@ class GenericMaterialsModel(BaseMaterialsModel): if bool(metadata.get("removed", False)): continue - item = {"root_material_id": root_material_id, - "id": metadata["id"], - "name": metadata["name"], - "brand": metadata["brand"], - "material": metadata["material"], - "color_name": metadata["color_name"], - "container_node": container_node - } + item = { + "root_material_id": root_material_id, + "id": metadata["id"], + "name": metadata["name"], + "brand": metadata["brand"], + "material": metadata["material"], + "color_name": metadata["color_name"], + "color_code": metadata["color_code"], + "container_node": container_node, + "is_favorite": root_material_id in favorites + } item_list.append(item) # Sort the item list by material name alphabetically