2011-03-28 13:53:53 +00:00
|
|
|
import bpy
|
|
|
|
|
|
|
|
|
|
|
|
class ModalTimerOperator(bpy.types.Operator):
|
|
|
|
'''Operator which runs its self from a timer.'''
|
|
|
|
bl_idname = "wm.modal_timer_operator"
|
|
|
|
bl_label = "Modal Timer Operator"
|
|
|
|
|
|
|
|
_timer = None
|
|
|
|
|
|
|
|
def modal(self, context, event):
|
|
|
|
if event.type == 'ESC':
|
2011-08-16 18:59:45 +00:00
|
|
|
return self.cancel(context)
|
2011-03-28 13:53:53 +00:00
|
|
|
|
|
|
|
if event.type == 'TIMER':
|
|
|
|
# change theme color, silly!
|
|
|
|
color = context.user_preferences.themes[0].view_3d.back
|
|
|
|
color.s = 1.0
|
|
|
|
color.h += 0.01
|
|
|
|
|
|
|
|
return {'PASS_THROUGH'}
|
|
|
|
|
|
|
|
def execute(self, context):
|
|
|
|
context.window_manager.modal_handler_add(self)
|
|
|
|
self._timer = context.window_manager.event_timer_add(0.1, context.window)
|
|
|
|
return {'RUNNING_MODAL'}
|
|
|
|
|
|
|
|
def cancel(self, context):
|
|
|
|
context.window_manager.event_timer_remove(self._timer)
|
|
|
|
return {'CANCELLED'}
|
|
|
|
|
|
|
|
|
|
|
|
def register():
|
|
|
|
bpy.utils.register_class(ModalTimerOperator)
|
|
|
|
|
|
|
|
|
|
|
|
def unregister():
|
|
|
|
bpy.utils.unregister_class(ModalTimerOperator)
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
register()
|
|
|
|
|
|
|
|
# test call
|
|
|
|
bpy.ops.wm.modal_timer_operator()
|