From 52551aa23aceaff22612ea9fd4ba1af518aea908 Mon Sep 17 00:00:00 2001 From: Campbell Barton <ideasman42@gmail.com> Date: Tue, 26 Oct 2010 08:09:13 +0000 Subject: [PATCH] bugfix [#23787] Addon keybindings assume view3d keymaps are available. --- mesh_surface_sketch.py | 11 ++++++++--- space_view3d_copy_attributes.py | 21 ++++++++++++++------- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/mesh_surface_sketch.py b/mesh_surface_sketch.py index fb08e490d..80cd6c04e 100644 --- a/mesh_surface_sketch.py +++ b/mesh_surface_sketch.py @@ -793,8 +793,12 @@ def register(): bpy.types.Scene.SURFSK_precision = bpy.props.IntProperty(name="Precision", description="Precision level of the surface calculation", default=4, min=0, max=100000) bpy.types.Scene.SURFSK_keep_strokes = bpy.props.BoolProperty(name="Keep strokes", description="Keeps the sketched strokes after adding the surface", default=False) - keymap_item_add_surf = bpy.data.window_managers[0].keyconfigs.default.keymaps["3D View"].items.new("GPENCIL_OT_SURFSK_add_surface","E","PRESS", key_modifier="D") - keymap_item_stroke_to_curve = bpy.data.window_managers[0].keyconfigs.default.keymaps["3D View"].items.new("GPENCIL_OT_SURFSK_strokes_to_curves","C","PRESS", key_modifier="D") + kc = bpy.data.window_managers[0].keyconfigs.default + km = kc.keymaps.get("3D View") + if km is None: + km = kc.keymaps.new(name="3D View") + keymap_item_add_surf = km.items.new("GPENCIL_OT_SURFSK_add_surface","E","PRESS", key_modifier="D") + keymap_item_stroke_to_curve = km.items.new("GPENCIL_OT_SURFSK_strokes_to_curves","C","PRESS", key_modifier="D") def unregister(): @@ -803,7 +807,8 @@ def unregister(): del bpy.types.Scene.SURFSK_precision del bpy.types.Scene.SURFSK_keep_strokes - km = bpy.data.window_managers[0].keyconfigs.default.keymaps["3D View"] + kc = bpy.data.window_managers[0].keyconfigs.default + km = kc.keymaps["3D View"] for kmi in km.items: if kmi.idname == 'wm.call_menu': if kmi.properties.name == "GPENCIL_OT_SURFSK_add_surface": diff --git a/space_view3d_copy_attributes.py b/space_view3d_copy_attributes.py index b2be0ee7d..b63f0fd19 100644 --- a/space_view3d_copy_attributes.py +++ b/space_view3d_copy_attributes.py @@ -725,21 +725,28 @@ def _add_tface_buttons(self, context): def register(): ''' mostly to get the keymap working ''' - km = bpy.context.window_manager.keyconfigs['Blender'].\ - keymaps['Object Mode'] + kc = bpy.context.window_manager.keyconfigs['Blender'] + km = kc.keymaps.get("Object Mode") + if km is None: + km = kc.keymaps.new(name="Object Mode") kmi = km.items.new('wm.call_menu', 'C', 'PRESS', ctrl=True) kmi.properties.name = 'VIEW3D_MT_copypopup' - km = bpy.context.window_manager.keyconfigs['Blender'].keymaps['Pose'] - try: - kmi = km.items['pose.copy'] + km = kc.keymaps.get("Pose") + if km is None: + km = kc.keymaps.new(name="Pose") + + kmi = km.items.get("pose.copy") + if kmi is not None: kmi.idname = 'wm.call_menu' - except KeyError: + else: kmi = km.items.new('wm.call_menu', 'C', 'PRESS', ctrl=True) kmi.properties.name = 'VIEW3D_MT_posecopypopup' for menu in _layer_menus: bpy.types.register(menu) bpy.types.DATA_PT_texface.append(_add_tface_buttons) - km = bpy.context.window_manager.keyconfigs.active.keymaps['Mesh'] + km = kc.keymaps.get("Mesh") + if km is None: + km = kc.keymaps.new(name="Mesh") kmi = km.items.new('wm.call_menu', 'C', 'PRESS') kmi.ctrl = True kmi.properties.name = 'MESH_MT_CopyFaceSettings' -- GitLab