[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [27058] trunk/blender/release/scripts/ templates/operator_modal.py: modal operator python template

Campbell Barton ideasman42 at gmail.com
Sun Feb 21 17:20:32 CET 2010


Revision: 27058
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=27058
Author:   campbellbarton
Date:     2010-02-21 17:20:32 +0100 (Sun, 21 Feb 2010)

Log Message:
-----------
modal operator python template

Added Paths:
-----------
    trunk/blender/release/scripts/templates/operator_modal.py

Added: trunk/blender/release/scripts/templates/operator_modal.py
===================================================================
--- trunk/blender/release/scripts/templates/operator_modal.py	                        (rev 0)
+++ trunk/blender/release/scripts/templates/operator_modal.py	2010-02-21 16:20:32 UTC (rev 27058)
@@ -0,0 +1,39 @@
+from bpy.props import *
+
+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.properties.first_mouse_x - event.mouse_x
+            context.object.location.x = self.properties.first_value + delta * 0.01
+
+        elif event.type == 'LEFTMOUSE':
+            return {'FINISHED'}
+
+        elif event.type in ('RIGHTMOUSE', 'ESCAPE'):
+            context.object.location.x = self.properties.first_value
+            return {'CANCELLED'}
+            
+        return {'RUNNING_MODAL'}
+
+    def invoke(self, context, event):
+        if context.object:
+            context.manager.add_modal_handler(self)
+            self.properties.first_mouse_x = event.mouse_x
+            self.properties.first_value = context.object.location.x
+            return {'RUNNING_MODAL'}
+        else:
+            self.report({'WARNING'}, "No active object, could not finish")
+            return {'CANCELLED'}
+
+
+bpy.types.register(ModalOperator)
+
+if __name__ == "__main__":
+    bpy.ops.object.modal_operator()
\ No newline at end of file


Property changes on: trunk/blender/release/scripts/templates/operator_modal.py
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native





More information about the Bf-blender-cvs mailing list