Fix T90866: Python operator templates are not accessible from menus

Python Operator templates made accessible from respective menus
(required to also use F3 search for quick access)
Also fixed Modal Draw Operator id_name (had duplicate name from other template)

Maniphest Tasks: T90866

Differential Revision: https://developer.blender.org/D13182
This commit is contained in:
Diptangshu Dey
2021-11-16 10:45:23 +01:00
committed by Philipp Oeser
parent 7d985d6b69
commit da14a482f2
18 changed files with 76 additions and 6 deletions

View File

@@ -57,7 +57,7 @@ class ExportSomeData(Operator, ExportHelper):
def menu_func_export(self, context):
self.layout.operator(ExportSomeData.bl_idname, text="Text Export Operator")
# Register and add to the "file selector" menu (required to use F3 search "Text Export Operator" for quick access)
def register():
bpy.utils.register_class(ExportSomeData)
bpy.types.TOPBAR_MT_file_export.append(menu_func_export)

View File

@@ -60,7 +60,7 @@ class ImportSomeData(Operator, ImportHelper):
def menu_func_import(self, context):
self.layout.operator(ImportSomeData.bl_idname, text="Text Import Operator")
# Register and add to the "file selector" menu (required to use F3 search "Text Import Operator" for quick access)
def register():
bpy.utils.register_class(ImportSomeData)
bpy.types.TOPBAR_MT_file_import.append(menu_func_import)

View File

@@ -97,7 +97,7 @@ class AddBox(bpy.types.Operator, AddObjectHelper):
def menu_func(self, context):
self.layout.operator(AddBox.bl_idname, icon='MESH_CUBE')
# Register and add to the "add mesh" menu (required to use F3 search "Add Box" for quick access)
def register():
bpy.utils.register_class(AddBox)
bpy.types.VIEW3D_MT_mesh_add.append(menu_func)

View File

@@ -33,13 +33,18 @@ class UvOperator(bpy.types.Operator):
main(context)
return {'FINISHED'}
def menu_func(self, context):
self.layout.operator(UvOperator.bl_idname, text = "Simple UV Operator")
# Register and add to the "UV" menu (required to also use F3 search "Simple UV Operator" for quick access)
def register():
bpy.utils.register_class(UvOperator)
bpy.types.IMAGE_MT_uvs.append(menu_func)
def unregister():
bpy.utils.unregister_class(UvOperator)
bpy.types.IMAGE_MT_uvs.remove(menu_func)
if __name__ == "__main__":

View File

@@ -35,13 +35,18 @@ class ModalOperator(bpy.types.Operator):
self.report({'WARNING'}, "No active object, could not finish")
return {'CANCELLED'}
def menu_func(self, context):
self.layout.operator(ModalOperator.bl_idname, text=ModalOperator.bl_label)
# Register and add to the "view" menu (required to also use F3 search "Simple Modal Operator" for quick access)
def register():
bpy.utils.register_class(ModalOperator)
bpy.types.VIEW3D_MT_object.append(menu_func)
def unregister():
bpy.utils.unregister_class(ModalOperator)
bpy.types.VIEW3D_MT_object.remove(menu_func)
if __name__ == "__main__":

View File

@@ -30,7 +30,7 @@ def draw_callback_px(self, context):
class ModalDrawOperator(bpy.types.Operator):
"""Draw a line with the mouse"""
bl_idname = "view3d.modal_operator"
bl_idname = "view3d.modal_draw_operator"
bl_label = "Simple Modal View3D Operator"
def modal(self, context, event):
@@ -65,13 +65,18 @@ class ModalDrawOperator(bpy.types.Operator):
self.report({'WARNING'}, "View3D not found, cannot run operator")
return {'CANCELLED'}
def menu_func(self, context):
self.layout.operator(ModalDrawOperator.bl_idname, text = "Modal Draw Operator")
# Register and add to the "view" menu (required to also use F3 search "Modal Draw Operator" for quick access)
def register():
bpy.utils.register_class(ModalDrawOperator)
bpy.types.VIEW3D_MT_view.append(menu_func)
def unregister():
bpy.utils.unregister_class(ModalDrawOperator)
bpy.types.VIEW3D_MT_view.remove(menu_func)
if __name__ == "__main__":

View File

@@ -31,13 +31,17 @@ class ModalTimerOperator(bpy.types.Operator):
wm = context.window_manager
wm.event_timer_remove(self._timer)
def menu_func(self, context):
self.layout.operator(ModalTimerOperator.bl_idname, text=ModalTimerOperator.bl_label)
def register():
bpy.utils.register_class(ModalTimerOperator)
bpy.types.VIEW3D_MT_view.append(menu_func)
# Register and add to the "view" menu (required to also use F3 search "Modal Timer Operator" for quick access)
def unregister():
bpy.utils.unregister_class(ModalTimerOperator)
bpy.types.VIEW3D_MT_view.remove(menu_func)
if __name__ == "__main__":

View File

@@ -57,13 +57,18 @@ class ViewOperator(bpy.types.Operator):
self.report({'WARNING'}, "Active space must be a View3d")
return {'CANCELLED'}
def menu_func(self, context):
self.layout.operator(ViewOperator.bl_idname, text = "Simple View Modal Operator")
# Register and add to the "view" menu (required to also use F3 search "Simple View Modal Operator" for quick access)
def register():
bpy.utils.register_class(ViewOperator)
bpy.types.VIEW3D_MT_view.append(menu_func)
def unregister():
bpy.utils.unregister_class(ViewOperator)
bpy.types.VIEW3D_MT_view.remove(menu_func)
if __name__ == "__main__":

View File

@@ -95,13 +95,18 @@ class ViewOperatorRayCast(bpy.types.Operator):
self.report({'WARNING'}, "Active space must be a View3d")
return {'CANCELLED'}
def menu_func(self, context):
self.layout.operator(ViewOperatorRayCast.bl_idname, text="Raycast View Modal Operator")
# Register and add to the "view" menu (required to also use F3 search "Raycast View Modal Operator" for quick access)
def register():
bpy.utils.register_class(ViewOperatorRayCast)
bpy.types.VIEW3D_MT_view.append(menu_func)
def unregister():
bpy.utils.unregister_class(ViewOperatorRayCast)
bpy.types.VIEW3D_MT_view.remove(menu_func)
if __name__ == "__main__":

View File

@@ -46,13 +46,18 @@ class NodeOperator(bpy.types.Operator):
main(self, context)
return {'FINISHED'}
def menu_func(self, context):
self.layout.operator(NodeOperator.bl_idname, text=NodeOperator.bl_label)
# Register and add to the "Node" menu (required to also use F3 search "Simple Node Operator" for quick access)
def register():
bpy.utils.register_class(NodeOperator)
bpy.types.NODE_MT_node.append(menu_func)
def unregister():
bpy.utils.unregister_class(NodeOperator)
bpy.types.NODE_MT_node.remove(menu_func)
if __name__ == "__main__":

View File

@@ -19,13 +19,18 @@ class SimpleOperator(bpy.types.Operator):
main(context)
return {'FINISHED'}
def menu_func(self, context):
self.layout.operator(SimpleOperator.bl_idname, text=SimpleOperator.bl_label)
# Register and add to the "object" menu (required to also use F3 search "Simple Object Operator" for quick access)
def register():
bpy.utils.register_class(SimpleOperator)
bpy.types.VIEW3D_MT_object.append(menu_func)
def unregister():
bpy.utils.unregister_class(SimpleOperator)
bpy.types.VIEW3D_MT_object.remove(menu_func)
if __name__ == "__main__":