From 33955940e4931e2184434393e0f8c15c36a5c3c6 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 30 Dec 2012 01:39:55 +0000 Subject: add templates menu for OSL, use preprocessor directive color for decorators in python. --- release/scripts/templates_py/operator_modal.py | 51 ++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 release/scripts/templates_py/operator_modal.py (limited to 'release/scripts/templates_py/operator_modal.py') diff --git a/release/scripts/templates_py/operator_modal.py b/release/scripts/templates_py/operator_modal.py new file mode 100644 index 00000000000..88e5ee80590 --- /dev/null +++ b/release/scripts/templates_py/operator_modal.py @@ -0,0 +1,51 @@ +import bpy +from bpy.props import IntProperty, FloatProperty + + +class ModalOperator(bpy.types.Operator): + """Move an object with the mouse, example""" + bl_idname = "object.modal_operator" + bl_label = "Simple Modal Operator" + + first_mouse_x = IntProperty() + first_value = FloatProperty() + + def modal(self, context, event): + if event.type == 'MOUSEMOVE': + delta = self.first_mouse_x - event.mouse_x + context.object.location.x = self.first_value + delta * 0.01 + + elif event.type == 'LEFTMOUSE': + return {'FINISHED'} + + elif event.type in {'RIGHTMOUSE', 'ESC'}: + context.object.location.x = self.first_value + return {'CANCELLED'} + + return {'RUNNING_MODAL'} + + def invoke(self, context, event): + if context.object: + self.first_mouse_x = event.mouse_x + self.first_value = context.object.location.x + + context.window_manager.modal_handler_add(self) + return {'RUNNING_MODAL'} + else: + self.report({'WARNING'}, "No active object, could not finish") + return {'CANCELLED'} + + +def register(): + bpy.utils.register_class(ModalOperator) + + +def unregister(): + bpy.utils.unregister_class(ModalOperator) + + +if __name__ == "__main__": + register() + + # test call + bpy.ops.object.modal_operator('INVOKE_DEFAULT') -- cgit v1.2.3