[Bf-extensions-cvs] [a71b3a5] master: Enhanced 3D Cursor: got rid of DelayedRegistrationOperator (now scene_update_post is used instead)

dairin0d noreply at git.blender.org
Wed Jul 1 21:56:02 CEST 2015


Commit: a71b3a51be57cc1f76e217e267d117a25d98147a
Author: dairin0d
Date:   Wed Jul 1 22:55:58 2015 +0300
Branches: master
https://developer.blender.org/rBACa71b3a51be57cc1f76e217e267d117a25d98147a

Enhanced 3D Cursor: got rid of DelayedRegistrationOperator (now scene_update_post is used instead)

===================================================================

M	space_view3d_enhanced_3d_cursor.py

===================================================================

diff --git a/space_view3d_enhanced_3d_cursor.py b/space_view3d_enhanced_3d_cursor.py
index faebc4a..377c952 100644
--- a/space_view3d_enhanced_3d_cursor.py
+++ b/space_view3d_enhanced_3d_cursor.py
@@ -21,7 +21,7 @@ bl_info = {
     "name": "Enhanced 3D Cursor",
     "description": "Cursor history and bookmarks; drag/snap cursor.",
     "author": "dairin0d",
-    "version": (2, 9, 7),
+    "version": (2, 9, 8),
     "blender": (2, 7, 0),
     "location": "View3D > Action mouse; F10; Properties panel",
     "warning": "",
@@ -4152,13 +4152,6 @@ class Cursor3DTools(bpy.types.Panel):
         # Attempt to launch the monitor
         if bpy.ops.view3d.cursor3d_monitor.poll():
             bpy.ops.view3d.cursor3d_monitor()
-
-        # If addon is enabled by default, the new scene
-        # created on Blender startup will have disabled
-        # standard Cursor3D behavior. However, if user
-        # creates new scene, somehow Cursor3D is active
-        # as if nothing happened xD
-        update_keymap(True)
         #=============================================#
 
         settings = find_settings()
@@ -5416,7 +5409,6 @@ def IsKeyMapItemEvent(kmi, event):
 
 # ===== REGISTRATION ===== #
 def update_keymap(activate):
-    reg_idname = DelayRegistrationOperator.bl_idname
     enh_idname = EnhancedSetCursor.bl_idname
     cur_idname = 'view3d.cursor3d'
 
@@ -5425,17 +5417,15 @@ def update_keymap(activate):
     addon_prefs = userprefs.addons[__name__].preferences
     settings = find_settings()
 
-    if not (settings.auto_register_keymaps and addon_prefs.auto_register_keymaps):
+    auto_register_keymaps = settings.auto_register_keymaps
+    auto_register_keymaps &= addon_prefs.auto_register_keymaps
+    if not auto_register_keymaps:
         return
 
     try:
         km = wm.keyconfigs.user.keymaps['3D View']
     except:
         # wm.keyconfigs.user is empty on Blender startup!
-        if activate:
-            # activate temporary operator
-            km = wm.keyconfigs.active.keymaps['Window']
-            kmi = km.keymap_items.new(reg_idname, 'MOUSEMOVE', 'ANY')
         return
 
     # We need for the enhanced operator to take precedence over
@@ -5461,55 +5451,10 @@ def update_keymap(activate):
     for kmi in KeyMapItemSearch(cur_idname):
         kmi.active = not activate
 
-class DelayRegistrationOperator(bpy.types.Operator):
-    bl_idname = "wm.enhanced_3d_cursor_registration"
-    bl_label = "[Enhanced 3D Cursor] registration delayer"
-
-    _timer = None
-
-    @staticmethod
-    def timer_add(context):
-        DelayRegistrationOperator._timer = \
-            context.window_manager.event_timer_add(0.1, context.window)
-
-    @staticmethod
-    def timer_remove(context):
-        if DelayRegistrationOperator._timer is not None:
-            context.window_manager.event_timer_remove(DelayRegistrationOperator._timer)
-            DelayRegistrationOperator._timer = None
-
-    def modal(self, context, event):
-        if (not self.keymap_updated) and \
-            ((event.type == 'TIMER') or ("MOVE" in event.type)):
-            # clean up (we don't need this operator to run anymore)
-            for kmi in KeyMapItemSearch(self.bl_idname):
-                km.keymap_items.remove(kmi)
-
-            update_keymap(True)
-
-            self.keymap_updated = True
-
-            # No, better don't (at least in current version),
-            # since the monitor has dependencies on View3D context.
-            # Attempt to launch the monitor
-            #if bpy.ops.view3d.cursor3d_monitor.poll():
-            #    bpy.ops.view3d.cursor3d_monitor()
-
-            self.cancel(context)
-            return {'CANCELLED'}
-
-        return {'PASS_THROUGH'}
-
-    def execute(self, context):
-        self.keymap_updated = False
-
-        DelayRegistrationOperator.timer_add(context)
-
-        context.window_manager.modal_handler_add(self)
-        return {'RUNNING_MODAL'}
-
-    def cancel(self, context):
-        DelayRegistrationOperator.timer_remove(context)
+ at bpy.app.handlers.persistent
+def scene_update_post_kmreg(scene):
+    bpy.app.handlers.scene_update_post.remove(scene_update_post_kmreg)
+    update_keymap(True)
 
 class ThisAddonPreferences(bpy.types.AddonPreferences):
     # this must match the addon name, use '__package__'
@@ -5551,14 +5496,12 @@ def register():
     # to it would make it too inconvenient
     #bpy.types.VIEW3D_PT_view3d_properties.append(draw_cursor_tools)
     
-    # THIS IS WHAT CAUSES TOOLTIPS TO NOT SHOW!
-    update_keymap(True)
+    bpy.app.handlers.scene_update_post.append(scene_update_post_kmreg)
 
 
 def unregister():
     # In case they are enabled/active
     CursorMonitor.handle_remove(bpy.context)
-    DelayRegistrationOperator.timer_remove(bpy.context)
 
     # Manually set this to False on unregister
     CursorMonitor.is_running = False



More information about the Bf-extensions-cvs mailing list