46 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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':
 | |
|             return self.cancel(context)
 | |
| 
 | |
|         if event.type == 'TIMER':
 | |
|             # change theme color, silly!
 | |
|             color = context.user_preferences.themes[0].view_3d.space.back
 | |
|             color.s = 1.0
 | |
|             color.h += 0.01
 | |
| 
 | |
|         return {'PASS_THROUGH'}
 | |
| 
 | |
|     def execute(self, context):
 | |
|         self._timer = context.window_manager.event_timer_add(0.1, context.window)
 | |
|         context.window_manager.modal_handler_add(self)
 | |
|         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()
 |