[Bf-extensions-cvs] [582a14f] master: mesh_extra_tools: fix keymaps (un)registering issues.

Bastien Montagne noreply at git.blender.org
Sat Apr 8 11:41:17 CEST 2017


Commit: 582a14ff6d1da5aab4e23c38b58cd4838dd037d0
Author: Bastien Montagne
Date:   Sat Apr 8 11:10:03 2017 +0200
Branches: master
https://developer.blender.org/rBA582a14ff6d1da5aab4e23c38b58cd4838dd037d0

mesh_extra_tools: fix keymaps (un)registering issues.

Using newly-added bpy_extras.keyconfig_utils helper.

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

M	mesh_extra_tools/__init__.py
M	mesh_extra_tools/mesh_pen_tool.py
M	mesh_extra_tools/vfe_specials.py

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

diff --git a/mesh_extra_tools/__init__.py b/mesh_extra_tools/__init__.py
index 096206e..4e861a6 100644
--- a/mesh_extra_tools/__init__.py
+++ b/mesh_extra_tools/__init__.py
@@ -24,8 +24,8 @@
 bl_info = {
     "name": "Edit Tools 2",
     "author": "meta-androcto",
-    "version": (0, 3, 1),
-    "blender": (2, 77, 0),
+    "version": (0, 3, 2),
+    "blender": (2, 78, 0),
     "location": "View3D > Toolshelf > Tools and Specials (W-key)",
     "description": "Extra mesh edit tools - modifying meshes and selection",
     "warning": "",
diff --git a/mesh_extra_tools/mesh_pen_tool.py b/mesh_extra_tools/mesh_pen_tool.py
index 704ebc3..d085308 100644
--- a/mesh_extra_tools/mesh_pen_tool.py
+++ b/mesh_extra_tools/mesh_pen_tool.py
@@ -21,8 +21,8 @@
 bl_info = {
     "name": "Pen Tool",
     "author": "zmj100",
-    "version": (0, 2, 8),
-    "blender": (2, 6, 5),
+    "version": (0, 2, 9),
+    "blender": (2, 78, 0),
     "location": "View3D > Tool Shelf",
     "description": "",
     "warning": "",
@@ -32,6 +32,7 @@ bl_info = {
     }
 
 import bpy
+import bpy_extras
 import blf
 import bgl
 import bmesh
@@ -522,7 +523,15 @@ class_list = [pen_tool_panel,
              ]
 
 
-addon_keymaps = []
+KEYMAPS = (
+    # First, keymap identifiers (last bool is True for modal km).
+    (("3D View", "VIEW_3D", "WINDOW", False), (
+    # Then a tuple of keymap items, defined by a dict of kwargs for the km new func, and a tuple of tuples (name, val)
+    # for ops properties, if needing non-default values.
+        ({"idname": pen_tool_operator.bl_idname, "type": 'D', "value": 'PRESS', "ctrl": True},
+         ()),
+    )),
+)
 
 
 def register():
@@ -531,21 +540,11 @@ def register():
 
     bpy.types.Scene.pen_tool_props = PointerProperty(type=pen_tool_properties)
 
-    wm = bpy.context.window_manager
-    km = wm.keyconfigs.addon.keymaps.new(name='3D View', space_type='VIEW_3D')
-
-    # Note: left click + D key is reserved for Grease Pencil draw
-    kmi = km.keymap_items.new("pen_tool.operator", 'D', 'PRESS', ctrl=True)
-    addon_keymaps.append((km, kmi))
+    bpy_extras.keyconfig_utils.addon_keymap_register(bpy.context.window_manager, KEYMAPS)
 
 
 def unregister():
-    wm = bpy.context.window_manager
-    kc = wm.keyconfigs.addon
-    if kc:
-        for km, kmi in addon_keymaps:
-            km.keymap_items.remove(kmi)
-    addon_keymaps.clear()
+    bpy_extras.keyconfig_utils.addon_keymap_unregister(bpy.context.window_manager, KEYMAPS)
 
     del bpy.types.Scene.pen_tool_props
 
diff --git a/mesh_extra_tools/vfe_specials.py b/mesh_extra_tools/vfe_specials.py
index 99536c0..da451e6 100644
--- a/mesh_extra_tools/vfe_specials.py
+++ b/mesh_extra_tools/vfe_specials.py
@@ -3,13 +3,15 @@
 bl_info = {
     "name": "V/E/F Context Menu",
     "author": "Stanislav Blinov",
-    "version": (1, 0, 0),
-    "blender": (2, 74, 0),
+    "version": (1, 0, 1),
+    "blender": (2, 78, 0),
     "description": "Vert Edge Face Double Right Click Edit Mode",
     "category": "Mesh",
 }
 
 import bpy
+import bpy_extras
+
 from bpy.types import (
         Menu,
         Operator,
@@ -63,32 +65,31 @@ classes = [
     MESH_OT_CallContextMenu
 ]
 
-addon_keymaps = []
+
+KEYMAPS = (
+    # First, keymap identifiers (last bool is True for modal km).
+    (("3D View", "VIEW_3D", "WINDOW", False), (
+    # Then a tuple of keymap items, defined by a dict of kwargs for the km new func, and a tuple of tuples (name, val)
+    # for ops properties, if needing non-default values.
+        ({"idname": MESH_OT_CallContextMenu.bl_idname, "type": 'RIGHTMOUSE', "value": 'DOUBLE_CLICK'},
+         ()),
+    )),
+)
 
 
 def register():
     for cls in classes:
         bpy.utils.register_class(cls)
 
-    wm = bpy.context.window_manager
-    if wm.keyconfigs.addon:
-        km = wm.keyconfigs.addon.keymaps.new(name='3D View', space_type='VIEW_3D')
-        kmi = km.keymap_items.new('mesh.addon_call_context_menu', 'RIGHTMOUSE', 'DOUBLE_CLICK')
-        addon_keymaps.append((km, kmi))
+    bpy_extras.keyconfig_utils.addon_keymap_register(bpy.context.window_manager, KEYMAPS)
 
 
 def unregister():
-    wm = bpy.context.window_manager
-    kc = wm.keyconfigs.addon
-    if kc:
-        for km, kmi in addon_keymaps:
-            km.keymap_items.remove(kmi)
-    addon_keymaps.clear()
+    bpy_extras.keyconfig_utils.addon_keymap_unregister(bpy.context.window_manager, KEYMAPS)
 
     for cls in classes:
         bpy.utils.unregister_class(cls)
 
 
-
 if __name__ == "__main__":
     register()



More information about the Bf-extensions-cvs mailing list