Implement keymap
This commit is contained in:
199
__init__.py
199
__init__.py
@ -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()
|
|
||||||
|
|
||||||
|
42
keymaps.py
42
keymaps.py
@ -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()
|
Reference in New Issue
Block a user