Implement keymap

This commit is contained in:
2024-12-27 15:14:46 -06:00
parent 4157a12531
commit fb0deab771
2 changed files with 113 additions and 128 deletions

View File

@ -1,108 +1,91 @@
import bpy import bpy
from . import gui, operators, common from . import gui, operators, common, keymaps
from typing import List, Tuple bl_info = \
bl_info = \ {
{ "name": "Damn Simple Pose Library",
"name": "Damn Simple Pose Library", "author": "jackie",
"author": "jackie", "version": (4, 1, 0),
"version": (4, 1, 0), "blender": (3, 5, 0),
"blender": (3, 5, 0), "description": "woah",
"description": "woah", "category": "Object Data",
"category": "Object Data", }
}
_need_reload = "operators" in locals()
_need_reload = "operators" in locals()
if _need_reload:
if _need_reload: import importlib
import importlib
gui = importlib.reload(gui)
gui = importlib.reload(gui) common = importlib.reload(common)
common = importlib.reload(common) keymaps = importlib.reload(keymaps)
# keymaps = importlib.reload(keymaps) operators = importlib.reload(operators)
operators = importlib.reload(operators)
# addon_keymaps: List[Tuple[bpy.types.KeyMap, bpy.types.KeyMapItem]] = [] class dsplObj(bpy.types.PropertyGroup):
# addon_keymaps = [] pose_library: bpy.props.PointerProperty(
name="Active Pose Library", description="",
override={'LIBRARY_OVERRIDABLE'}, type=bpy.types.Action)
class dsplObj(bpy.types.PropertyGroup): # update = common.poselib_update)
pose_library: bpy.props.PointerProperty( # , update = anim_layers.layer_name_update
name="Active Pose Library", description="",
override={'LIBRARY_OVERRIDABLE'}, type=bpy.types.Action)
# update = common.poselib_update) class dsplVars(bpy.types.PropertyGroup):
# , update = anim_layers.layer_name_update pose_index: bpy.props.IntProperty(
name="Pose Index", description="", override={'LIBRARY_OVERRIDABLE'})
pose_new_name: bpy.props.StringProperty(
class dsplVars(bpy.types.PropertyGroup): name="Pose Name", description="New name for pose",
pose_index: bpy.props.IntProperty( default="Pose", override={'LIBRARY_OVERRIDABLE'})
name="Pose Index", description="", override={'LIBRARY_OVERRIDABLE'}) only_selected: bpy.props.BoolProperty(
pose_new_name: bpy.props.StringProperty( name="Only selected Bones", description="Process only selected bones",
name="Pose Name", description="New name for pose", default=False, options={'HIDDEN'}, override={'LIBRARY_OVERRIDABLE'})
default="Pose", override={'LIBRARY_OVERRIDABLE'}) numero: bpy.props.IntProperty(
only_selected: bpy.props.BoolProperty( name='Numero', default=666, override={'LIBRARY_OVERRIDABLE'})
name="Only selected Bones", description="Process only selected bones",
default=False, options={'HIDDEN'}, override={'LIBRARY_OVERRIDABLE'})
numero: bpy.props.IntProperty( class dsplSettings(bpy.types.PropertyGroup):
name='Numero', default=666, override={'LIBRARY_OVERRIDABLE'}) new_menu: bpy.props.BoolProperty(
name="New Menu", description="Toggle New Menu", default=False)
edit_mode: bpy.props.BoolProperty(
class dsplSettings(bpy.types.PropertyGroup): name="Edit Mode", description="Toggle Edit Mode", default=False)
new_menu: bpy.props.BoolProperty(
name="New Menu", description="Toggle New Menu", default=False) classes = (dsplObj, dsplVars, dsplSettings)
edit_mode: bpy.props.BoolProperty(
name="Edit Mode", description="Toggle Edit Mode", default=False)
def register():
classes = (dsplObj, dsplVars, dsplSettings) from bpy.utils import register_class
for cls in classes:
register_class(cls)
def register():
from bpy.utils import register_class # bpy.types.Armature.pose_library = bpy.props.PointerProperty(
for cls in classes: # type=dsplObj, override={'LIBRARY_OVERRIDABLE'})
register_class(cls)
# bpy.types.Object.pose_library = bpy.props.PointerProperty(
# bpy.types.Armature.pose_library = bpy.props.PointerProperty( # type=bpy.types.Action, options={'LIBRARY_EDITABLE'}, override={'LIBRARY_OVERRIDABLE'})
# type=dsplObj, override={'LIBRARY_OVERRIDABLE'})
bpy.types.Object.dspl = bpy.props.PointerProperty(
# bpy.types.Object.pose_library = bpy.props.PointerProperty( type=dsplObj, override={'LIBRARY_OVERRIDABLE'})
# type=bpy.types.Action, options={'LIBRARY_EDITABLE'}, override={'LIBRARY_OVERRIDABLE'}) bpy.types.Object.dsplvars = bpy.props.PointerProperty(
type=dsplVars, override={'LIBRARY_OVERRIDABLE'})
bpy.types.Object.dspl = bpy.props.PointerProperty( bpy.types.Scene.dsplSettings = bpy.props.PointerProperty(
type=dsplObj, override={'LIBRARY_OVERRIDABLE'}) type=dsplSettings, override={'LIBRARY_OVERRIDABLE'})
bpy.types.Object.dsplvars = bpy.props.PointerProperty(
type=dsplVars, override={'LIBRARY_OVERRIDABLE'}) gui.register()
bpy.types.Scene.dsplSettings = bpy.props.PointerProperty( operators.register()
type=dsplSettings, override={'LIBRARY_OVERRIDABLE'}) keymaps.register()
gui.register() def unregister() -> None:
operators.register() from bpy.utils import unregister_class
for cls in classes:
# kc = bpy.context.window_manager.keyconfigs.addon unregister_class(cls)
# km = kc.keymaps.new(name='3D View', space_type='VIEW_3D')
# kmi = [ del bpy.types.Object.dspl
# km.keymap_items.new("dspl.add_pose", type='L', value='PRESS', shift=True), del bpy.types.Object.dsplvars
# km.keymap_items.new("dspl.browse_poses", type='L', value='PRESS', alt=True), del bpy.types.Scene.dsplSettings
# ]
# addon_keymaps.append((km, kmi)) keymaps.unregister()
operators.unregister()
gui.unregister()
def unregister() -> None:
from bpy.utils import unregister_class if __name__ == "__main__":
for cls in classes: register()
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()

View File

@ -1,28 +1,30 @@
# SPDX-FileCopyrightText: 2010-2023 Blender Foundation
#
# SPDX-License-Identifier: GPL-2.0-or-later
import bpy import bpy
from .operators import *
from typing import List, Tuple
addon_keymaps = [] addon_keymaps = []
def register() -> None: def register_keymaps():
wm = bpy.context.window_manager 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))
# 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: # Browse Poses
for km, kmi in addon_keymaps: km = wm.keyconfigs.addon.keymaps.new(name='Pose', space_type='EMPTY')
km.keymap_items.remove(kmi) kmi = km.keymap_items.new('dspl.browse_poses', 'L', 'PRESS', alt=True)
addon_keymaps.clear() 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()