Groups of objects are taken into account and are shown in the object

list instead of each model separatelly. Contributes to CURA-4525
This commit is contained in:
Diego Prado Gesto 2018-01-05 16:53:18 +01:00
parent 1a520a041b
commit c839bc1759

View file

@ -24,16 +24,28 @@ class ObjectsModel(ListModel):
nodes = [] nodes = []
filter_current_build_plate = Preferences.getInstance().getValue("view/filter_current_build_plate") filter_current_build_plate = Preferences.getInstance().getValue("view/filter_current_build_plate")
active_build_plate_number = self._build_plate_number active_build_plate_number = self._build_plate_number
group_nr = 1
for node in DepthFirstIterator(Application.getInstance().getController().getScene().getRoot()): for node in DepthFirstIterator(Application.getInstance().getController().getScene().getRoot()):
if not issubclass(type(node), SceneNode) or (not node.getMeshData() and not node.callDecoration("getLayerData")): if not issubclass(type(node), SceneNode):
continue continue
if not node.callDecoration("isSliceable"): if (not node.getMeshData() and not node.callDecoration("getLayerData")) and not node.callDecoration("isGroup"):
continue
if node.getParent() and node.getParent().callDecoration("isGroup"):
continue # Grouped nodes don't need resetting as their parent (the group) is resetted)
if not node.callDecoration("isSliceable") and not node.callDecoration("isGroup"):
continue continue
node_build_plate_number = node.callDecoration("getBuildPlateNumber") node_build_plate_number = node.callDecoration("getBuildPlateNumber")
if filter_current_build_plate and node_build_plate_number != active_build_plate_number: if filter_current_build_plate and node_build_plate_number != active_build_plate_number:
continue continue
if not node.callDecoration("isGroup"):
name = node.getName()
else:
name = "Group #" + str(group_nr)
group_nr += 1
nodes.append({ nodes.append({
"name": node.getName(), "name": name,
"isSelected": Selection.isSelected(node), "isSelected": Selection.isSelected(node),
"isOutsideBuildArea": node.isOutsideBuildArea(), "isOutsideBuildArea": node.isOutsideBuildArea(),
"buildPlateNumber": node_build_plate_number, "buildPlateNumber": node_build_plate_number,