Changeset View
Changeset View
Standalone View
Standalone View
release/scripts/startup/nodeitems_builtins.py
| Show First 20 Lines • Show All 70 Lines • ▼ Show 20 Lines | if group_input_output_item_poll(context): | ||||
| yield NodeItem("NodeGroupOutput") | yield NodeItem("NodeGroupOutput") | ||||
| ntree = space.edit_tree | ntree = space.edit_tree | ||||
| if not ntree: | if not ntree: | ||||
| return | return | ||||
| yield NodeItemCustom(draw=lambda self, layout, context: layout.separator()) | yield NodeItemCustom(draw=lambda self, layout, context: layout.separator()) | ||||
| def contains_group(nodetree, group): | |||||
| if nodetree == group: | |||||
| return True | |||||
| else: | |||||
| for node in nodetree.nodes: | |||||
| if node.bl_idname in node_tree_group_type.values() and node.node_tree is not None: | |||||
| if contains_group(node.node_tree, group): | |||||
| return True | |||||
| return False | |||||
| for group in context.blend_data.node_groups: | for group in context.blend_data.node_groups: | ||||
| if group.bl_idname != ntree.bl_idname: | if group.bl_idname != ntree.bl_idname: | ||||
| continue | continue | ||||
| # filter out recursive groups | # filter out recursive groups | ||||
| if contains_group(group, ntree): | if group.contains_in(ntree): | ||||
| continue | continue | ||||
| # filter out hidden nodetrees | # filter out hidden nodetrees | ||||
| if group.name.startswith('.'): | if group.name.startswith('.'): | ||||
| continue | continue | ||||
| yield NodeItem(node_tree_group_type[group.bl_idname], | yield NodeItem(node_tree_group_type[group.bl_idname], | ||||
| label=group.name, | label=group.name, | ||||
| settings={"node_tree": "bpy.data.node_groups[%r]" % group.name}) | settings={"node_tree": "bpy.data.node_groups[%r]" % group.name}) | ||||
| ▲ Show 20 Lines • Show All 365 Lines • Show Last 20 Lines | |||||