I have successfully created a sub menu which extends the Shift+A menu in the shader editor but I would like to have the options show up as results in the search bar. Is this even possible, and if so how can it be done?
import bpy
from bpy.types import Menu, Operator
def draw_menu(self, context):
layout = self.layout
layout.separator()
layout.menu("sub_menu")
class SubMenu(bpy.types.Menu):
bl_label = 'Math'
bl_idname = 'sub_menu'
def draw(self, context):
layout = self.layout
layout.operator("divide.node", text="Divide")
layout.operator("multiply.node", text="Multiply")
layout.operator("add.node", text="Add")
layout.operator("subtract.node", text="Subtract")
class DivideNode(Operator):
bl_idname = "divide.node"
bl_label = "DivideNode"
def execute(self, context):
bpy.ops.node.add_node(type="ShaderNodeMath", use_transform=True)
bpy.data.materials["Material"].node_tree.nodes["Math"].operation = 'DIVIDE'
return {'FINISHED'}
class AddNode(Operator):
bl_idname = "add.node"
bl_label = "AddNode"
def execute(self, context):
bpy.ops.node.add_node(type="ShaderNodeMath", use_transform=True)
bpy.data.materials["Material"].node_tree.nodes["Math"].operation = 'ADD'
return {'FINISHED'}
class SubtractNode(Operator):
bl_idname = "subtract.node"
bl_label = "SubtractNode"
def execute(self, context):
bpy.ops.node.add_node(type="ShaderNodeMath", use_transform=True)
bpy.data.materials["Material"].node_tree.nodes["Math"].operation = 'SUBTRACT'
return {'FINISHED'}
class MultiplyNode(Operator):
bl_idname = "multiply.node"
bl_label = "MultiplyNode"
def execute(self, context):
bpy.ops.node.add_node(type="ShaderNodeMath", use_transform=True)
bpy.data.materials["Material"].node_tree.nodes["Math"].operation = 'MULTIPLY'
return {'FINISHED'}
def register():
bpy.types.NODE_MT_add.append(draw_menu)
bpy.utils.register_class(MultiplyNode)
bpy.utils.register_class(SubMenu)
bpy.utils.register_class(DivideNode)
bpy.utils.register_class(SubtractNode)
bpy.utils.register_class(AddNode)
def unregister():
bpy.types.NODE_MT_add.remove(draw_menu)
bpy.utils.unregister_class(MultiplyNode)
bpy.utils.unregister_class(SubMenu)
bpy.utils.unregister_class(DivideNode)
bpy.utils.unregister_class(SubtractNode)
bpy.utils.unregister_class(AddNode)
if name == "main":
register()

