mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-05-01 16:24:41 +08:00
Improve the Favorites, Base, and Brand materials models (WIP)
Contribuetes to CURA-5378
This commit is contained in:
parent
2410c21839
commit
68bccd8bf7
@ -21,6 +21,8 @@ class BaseMaterialsModel(ListModel):
|
|||||||
MaterialRole = Qt.UserRole + 5
|
MaterialRole = Qt.UserRole + 5
|
||||||
ColorRole = Qt.UserRole + 6
|
ColorRole = Qt.UserRole + 6
|
||||||
ContainerNodeRole = Qt.UserRole + 7
|
ContainerNodeRole = Qt.UserRole + 7
|
||||||
|
ColorCodeRole = Qt.UserRole + 8
|
||||||
|
GUIDRole = Qt.UserRole + 9
|
||||||
|
|
||||||
extruderPositionChanged = pyqtSignal()
|
extruderPositionChanged = pyqtSignal()
|
||||||
|
|
||||||
@ -31,10 +33,12 @@ class BaseMaterialsModel(ListModel):
|
|||||||
|
|
||||||
self.addRoleName(self.RootMaterialIdRole, "root_material_id")
|
self.addRoleName(self.RootMaterialIdRole, "root_material_id")
|
||||||
self.addRoleName(self.IdRole, "id")
|
self.addRoleName(self.IdRole, "id")
|
||||||
|
self.addRoleName(self.GUIDRole, "guid")
|
||||||
self.addRoleName(self.NameRole, "name")
|
self.addRoleName(self.NameRole, "name")
|
||||||
self.addRoleName(self.BrandRole, "brand")
|
self.addRoleName(self.BrandRole, "brand")
|
||||||
self.addRoleName(self.MaterialRole, "material")
|
self.addRoleName(self.MaterialRole, "material")
|
||||||
self.addRoleName(self.ColorRole, "color_name")
|
self.addRoleName(self.ColorRole, "color_name")
|
||||||
|
self.addRoleName(self.ColorCodeRole, "color_code")
|
||||||
self.addRoleName(self.ContainerNodeRole, "container_node")
|
self.addRoleName(self.ContainerNodeRole, "container_node")
|
||||||
|
|
||||||
self._extruder_position = 0
|
self._extruder_position = 0
|
||||||
|
@ -50,6 +50,7 @@ class BrandMaterialsModel(ListModel):
|
|||||||
self._extruder_stack = None
|
self._extruder_stack = None
|
||||||
|
|
||||||
from cura.CuraApplication import CuraApplication
|
from cura.CuraApplication import CuraApplication
|
||||||
|
self._container_registry = CuraApplication.getInstance().getContainerRegistry()
|
||||||
self._machine_manager = CuraApplication.getInstance().getMachineManager()
|
self._machine_manager = CuraApplication.getInstance().getMachineManager()
|
||||||
self._extruder_manager = CuraApplication.getInstance().getExtruderManager()
|
self._extruder_manager = CuraApplication.getInstance().getExtruderManager()
|
||||||
self._material_manager = CuraApplication.getInstance().getMaterialManager()
|
self._material_manager = CuraApplication.getInstance().getMaterialManager()
|
||||||
@ -104,29 +105,44 @@ class BrandMaterialsModel(ListModel):
|
|||||||
brand_group_dict = {}
|
brand_group_dict = {}
|
||||||
for root_material_id, container_node in available_material_dict.items():
|
for root_material_id, container_node in available_material_dict.items():
|
||||||
metadata = container_node.metadata
|
metadata = container_node.metadata
|
||||||
brand = metadata["brand"]
|
|
||||||
# Only add results for generic materials
|
|
||||||
if brand.lower() == "generic":
|
|
||||||
continue
|
|
||||||
|
|
||||||
# Do not include the materials from a to-be-removed package
|
# Do not include the materials from a to-be-removed package
|
||||||
if bool(metadata.get("removed", False)):
|
if bool(metadata.get("removed", False)):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
# Skip generic materials, and add brands we haven't seen yet to the dict
|
||||||
|
brand = metadata["brand"]
|
||||||
|
if brand.lower() == "generic":
|
||||||
|
continue
|
||||||
if brand not in brand_group_dict:
|
if brand not in brand_group_dict:
|
||||||
brand_group_dict[brand] = {}
|
brand_group_dict[brand] = {}
|
||||||
|
|
||||||
|
# Add material types we haven't seen yet to the dict
|
||||||
material_type = metadata["material"]
|
material_type = metadata["material"]
|
||||||
if material_type not in brand_group_dict[brand]:
|
if material_type not in brand_group_dict[brand]:
|
||||||
brand_group_dict[brand][material_type] = []
|
brand_group_dict[brand][material_type] = []
|
||||||
|
|
||||||
item = {"root_material_id": root_material_id,
|
# Now handle the individual materials
|
||||||
|
item = {
|
||||||
|
"root_material_id": root_material_id,
|
||||||
|
# "root_material_id": container_node.metadata["base_file"] <- as written in material management model
|
||||||
"id": metadata["id"],
|
"id": metadata["id"],
|
||||||
|
"container_id": metadata["id"], # TODO: Remove duplicate in material manager qml
|
||||||
|
"guid": metadata["GUID"],
|
||||||
"name": metadata["name"],
|
"name": metadata["name"],
|
||||||
"brand": metadata["brand"],
|
"brand": metadata["brand"],
|
||||||
|
"description": metadata["description"],
|
||||||
"material": metadata["material"],
|
"material": metadata["material"],
|
||||||
"color_name": metadata["color_name"],
|
"color_name": metadata["color_name"],
|
||||||
"container_node": container_node
|
"color_code": metadata["color_code"],
|
||||||
|
"density": metadata.get("properties", {}).get("density", ""),
|
||||||
|
"diameter": metadata.get("properties", {}).get("diameter", ""),
|
||||||
|
"approximate_diameter": metadata["approximate_diameter"],
|
||||||
|
"adhesion_info": metadata["adhesion_info"],
|
||||||
|
"is_read_only": self._container_registry.isReadOnly(metadata["id"]),
|
||||||
|
"container_node": container_node,
|
||||||
|
"is_favorite": False
|
||||||
}
|
}
|
||||||
brand_group_dict[brand][material_type].append(item)
|
brand_group_dict[brand][material_type].append(item)
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ class FavoriteMaterialsModel(BaseMaterialsModel):
|
|||||||
|
|
||||||
self._machine_manager.activeStackChanged.connect(self._update) #Update when switching machines.
|
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.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()
|
self._update()
|
||||||
|
|
||||||
def _update(self):
|
def _update(self):
|
||||||
@ -38,7 +38,9 @@ class FavoriteMaterialsModel(BaseMaterialsModel):
|
|||||||
self.setItems([])
|
self.setItems([])
|
||||||
return
|
return
|
||||||
|
|
||||||
favorite_ids = self._preferences.getValue("cura/favorite_materials")
|
favorite_ids = self._material_manager.getFavorites()
|
||||||
|
|
||||||
|
print("favorite_ids:", favorite_ids)
|
||||||
|
|
||||||
item_list = []
|
item_list = []
|
||||||
for root_material_id, container_node in available_material_dict.items():
|
for root_material_id, container_node in available_material_dict.items():
|
||||||
|
Loading…
x
Reference in New Issue
Block a user