From fb0deab7718d881e05a6ad24662f7f911e66a2f0 Mon Sep 17 00:00:00 2001 From: Blazer Date: Fri, 27 Dec 2024 15:14:46 -0600 Subject: [PATCH] Implement keymap --- __init__.py | 199 ++++++++++++++++++++++++---------------------------- keymaps.py | 42 +++++------ 2 files changed, 113 insertions(+), 128 deletions(-) diff --git a/__init__.py b/__init__.py index d78a9e0..775e89c 100644 --- a/__init__.py +++ b/__init__.py @@ -1,108 +1,91 @@ -import bpy -from . import gui, operators, common -from typing import List, Tuple -bl_info = \ - { - "name": "Damn Simple Pose Library", - "author": "jackie", - "version": (4, 1, 0), - "blender": (3, 5, 0), - "description": "woah", - "category": "Object Data", - } - - -_need_reload = "operators" in locals() - -if _need_reload: - import importlib - - gui = importlib.reload(gui) - common = importlib.reload(common) - # keymaps = importlib.reload(keymaps) - operators = importlib.reload(operators) - -# addon_keymaps: List[Tuple[bpy.types.KeyMap, bpy.types.KeyMapItem]] = [] -# addon_keymaps = [] - - -class dsplObj(bpy.types.PropertyGroup): - pose_library: bpy.props.PointerProperty( - name="Active Pose Library", description="", - override={'LIBRARY_OVERRIDABLE'}, type=bpy.types.Action) - # update = common.poselib_update) - # , update = anim_layers.layer_name_update - - -class dsplVars(bpy.types.PropertyGroup): - pose_index: bpy.props.IntProperty( - name="Pose Index", description="", override={'LIBRARY_OVERRIDABLE'}) - pose_new_name: bpy.props.StringProperty( - name="Pose Name", description="New name for pose", - default="Pose", override={'LIBRARY_OVERRIDABLE'}) - only_selected: bpy.props.BoolProperty( - name="Only selected Bones", description="Process only selected bones", - default=False, options={'HIDDEN'}, override={'LIBRARY_OVERRIDABLE'}) - numero: bpy.props.IntProperty( - name='Numero', default=666, override={'LIBRARY_OVERRIDABLE'}) - - -class dsplSettings(bpy.types.PropertyGroup): - new_menu: bpy.props.BoolProperty( - name="New Menu", description="Toggle New Menu", default=False) - edit_mode: bpy.props.BoolProperty( - name="Edit Mode", description="Toggle Edit Mode", default=False) - -classes = (dsplObj, dsplVars, dsplSettings) - - -def register(): - from bpy.utils import register_class - for cls in classes: - register_class(cls) - - # bpy.types.Armature.pose_library = bpy.props.PointerProperty( - # type=dsplObj, override={'LIBRARY_OVERRIDABLE'}) - - # bpy.types.Object.pose_library = bpy.props.PointerProperty( - # type=bpy.types.Action, options={'LIBRARY_EDITABLE'}, override={'LIBRARY_OVERRIDABLE'}) - - bpy.types.Object.dspl = bpy.props.PointerProperty( - type=dsplObj, override={'LIBRARY_OVERRIDABLE'}) - bpy.types.Object.dsplvars = bpy.props.PointerProperty( - type=dsplVars, override={'LIBRARY_OVERRIDABLE'}) - bpy.types.Scene.dsplSettings = bpy.props.PointerProperty( - type=dsplSettings, override={'LIBRARY_OVERRIDABLE'}) - - gui.register() - operators.register() - - # kc = bpy.context.window_manager.keyconfigs.addon - # km = kc.keymaps.new(name='3D View', space_type='VIEW_3D') - # kmi = [ - # km.keymap_items.new("dspl.add_pose", type='L', value='PRESS', shift=True), - # km.keymap_items.new("dspl.browse_poses", type='L', value='PRESS', alt=True), - # ] - # addon_keymaps.append((km, kmi)) - - -def unregister() -> None: - from bpy.utils import unregister_class - for cls in classes: - unregister_class(cls) - - del bpy.types.Object.dspl - del bpy.types.Object.dsplvars - del bpy.types.Scene.dsplSettings - - gui.unregister() - operators.unregister() - - # for km, kmi in addon_keymaps: - # km.keymap_items.remove(kmi) - # addon_keymaps.clear() - - -if __name__ == "__main__": - register() - +import bpy +from . import gui, operators, common, keymaps +bl_info = \ + { + "name": "Damn Simple Pose Library", + "author": "jackie", + "version": (4, 1, 0), + "blender": (3, 5, 0), + "description": "woah", + "category": "Object Data", + } + + +_need_reload = "operators" in locals() + +if _need_reload: + import importlib + + gui = importlib.reload(gui) + common = importlib.reload(common) + keymaps = importlib.reload(keymaps) + operators = importlib.reload(operators) + + +class dsplObj(bpy.types.PropertyGroup): + pose_library: bpy.props.PointerProperty( + name="Active Pose Library", description="", + override={'LIBRARY_OVERRIDABLE'}, type=bpy.types.Action) + # update = common.poselib_update) + # , update = anim_layers.layer_name_update + + +class dsplVars(bpy.types.PropertyGroup): + pose_index: bpy.props.IntProperty( + name="Pose Index", description="", override={'LIBRARY_OVERRIDABLE'}) + pose_new_name: bpy.props.StringProperty( + name="Pose Name", description="New name for pose", + default="Pose", override={'LIBRARY_OVERRIDABLE'}) + only_selected: bpy.props.BoolProperty( + name="Only selected Bones", description="Process only selected bones", + default=False, options={'HIDDEN'}, override={'LIBRARY_OVERRIDABLE'}) + numero: bpy.props.IntProperty( + name='Numero', default=666, override={'LIBRARY_OVERRIDABLE'}) + + +class dsplSettings(bpy.types.PropertyGroup): + new_menu: bpy.props.BoolProperty( + name="New Menu", description="Toggle New Menu", default=False) + edit_mode: bpy.props.BoolProperty( + name="Edit Mode", description="Toggle Edit Mode", default=False) + +classes = (dsplObj, dsplVars, dsplSettings) + + +def register(): + from bpy.utils import register_class + for cls in classes: + register_class(cls) + + # bpy.types.Armature.pose_library = bpy.props.PointerProperty( + # type=dsplObj, override={'LIBRARY_OVERRIDABLE'}) + + # bpy.types.Object.pose_library = bpy.props.PointerProperty( + # type=bpy.types.Action, options={'LIBRARY_EDITABLE'}, override={'LIBRARY_OVERRIDABLE'}) + + bpy.types.Object.dspl = bpy.props.PointerProperty( + type=dsplObj, override={'LIBRARY_OVERRIDABLE'}) + bpy.types.Object.dsplvars = bpy.props.PointerProperty( + type=dsplVars, override={'LIBRARY_OVERRIDABLE'}) + bpy.types.Scene.dsplSettings = bpy.props.PointerProperty( + type=dsplSettings, override={'LIBRARY_OVERRIDABLE'}) + + gui.register() + operators.register() + keymaps.register() + +def unregister() -> None: + from bpy.utils import unregister_class + for cls in classes: + unregister_class(cls) + + del bpy.types.Object.dspl + del bpy.types.Object.dsplvars + del bpy.types.Scene.dsplSettings + + keymaps.unregister() + operators.unregister() + gui.unregister() + +if __name__ == "__main__": + register() diff --git a/keymaps.py b/keymaps.py index 597dfbe..cfd3be6 100644 --- a/keymaps.py +++ b/keymaps.py @@ -1,28 +1,30 @@ -# SPDX-FileCopyrightText: 2010-2023 Blender Foundation -# -# SPDX-License-Identifier: GPL-2.0-or-later - import bpy -from .operators import * -from typing import List, Tuple addon_keymaps = [] -def register() -> None: - wm = bpy.context.window_manager - kc = wm.keyconfigs.addon - if kc is None: - return - - km = kc.keymaps.new(name="File Browser Main") - kmi = km.keymap_items.new("dspl.browse_poses", type="L", value="PRESS", alt=True) - kmi.active = True - addon_keymaps.append((km, kmi)) +def register_keymaps(): + wm = bpy.context.window_manager + # Add Pose + km = wm.keyconfigs.addon.keymaps.new(name='Pose', space_type='EMPTY') + kmi = km.keymap_items.new('wm.call_menu', 'L', 'PRESS', shift=True) + kmi.properties.name = "OBJECT_MT_AddPoseMenu" + addon_keymaps.append((km, kmi)) -def unregister() -> None: - for km, kmi in addon_keymaps: - km.keymap_items.remove(kmi) - addon_keymaps.clear() + # Browse Poses + km = wm.keyconfigs.addon.keymaps.new(name='Pose', space_type='EMPTY') + kmi = km.keymap_items.new('dspl.browse_poses', 'L', 'PRESS', alt=True) + addon_keymaps.append((km, kmi)) + +def unregister_keymaps(): + for km, kmi in addon_keymaps: + km.keymap_items.remove(kmi) + addon_keymaps.clear() + +def register(): + register_keymaps() + +def unregister(): + unregister_keymaps() \ No newline at end of file