Changeset View
Changeset View
Standalone View
Standalone View
release/scripts/templates_py/operator_modal_draw.py
| Show All 24 Lines | def draw_callback_px(self, context): | ||||
| # restore opengl defaults | # restore opengl defaults | ||||
| gpu.state.line_width_set(1.0) | gpu.state.line_width_set(1.0) | ||||
| gpu.state.blend_set('NONE') | gpu.state.blend_set('NONE') | ||||
| class ModalDrawOperator(bpy.types.Operator): | class ModalDrawOperator(bpy.types.Operator): | ||||
| """Draw a line with the mouse""" | """Draw a line with the mouse""" | ||||
| bl_idname = "view3d.modal_operator" | bl_idname = "view3d.modal_draw_operator" | ||||
| bl_label = "Simple Modal View3D Operator" | bl_label = "Simple Modal View3D Operator" | ||||
| def modal(self, context, event): | def modal(self, context, event): | ||||
| context.area.tag_redraw() | context.area.tag_redraw() | ||||
| if event.type == 'MOUSEMOVE': | if event.type == 'MOUSEMOVE': | ||||
| self.mouse_path.append((event.mouse_region_x, event.mouse_region_y)) | self.mouse_path.append((event.mouse_region_x, event.mouse_region_y)) | ||||
| Show All 18 Lines | def invoke(self, context, event): | ||||
| self.mouse_path = [] | self.mouse_path = [] | ||||
| context.window_manager.modal_handler_add(self) | context.window_manager.modal_handler_add(self) | ||||
| return {'RUNNING_MODAL'} | return {'RUNNING_MODAL'} | ||||
| else: | else: | ||||
| self.report({'WARNING'}, "View3D not found, cannot run operator") | self.report({'WARNING'}, "View3D not found, cannot run operator") | ||||
| return {'CANCELLED'} | 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(): | def register(): | ||||
| bpy.utils.register_class(ModalDrawOperator) | bpy.utils.register_class(ModalDrawOperator) | ||||
| bpy.types.VIEW3D_MT_view.append(menu_func) | |||||
| def unregister(): | def unregister(): | ||||
| bpy.utils.unregister_class(ModalDrawOperator) | bpy.utils.unregister_class(ModalDrawOperator) | ||||
| bpy.types.VIEW3D_MT_view.remove(menu_func) | |||||
| if __name__ == "__main__": | if __name__ == "__main__": | ||||
| register() | register() | ||||