From 37a09d0a21bf551e7caf20f04c6c3c06c3ac20fd Mon Sep 17 00:00:00 2001 From: Onek8 Date: Sat, 8 Feb 2025 17:29:46 +0000 Subject: [PATCH] Update leenkx/blender/lnx/keymap.py --- leenkx/blender/lnx/keymap.py | 64 +++++++++++++++++------------------- 1 file changed, 31 insertions(+), 33 deletions(-) diff --git a/leenkx/blender/lnx/keymap.py b/leenkx/blender/lnx/keymap.py index a9d272b..0643a4c 100644 --- a/leenkx/blender/lnx/keymap.py +++ b/leenkx/blender/lnx/keymap.py @@ -7,48 +7,46 @@ if lnx.is_reload(__name__): else: lnx.enable_reload(__name__) -lnx.keymaps = [] +#lnx.keymaps = [] def register(): wm = bpy.context.window_manager - addon_keyconfig = wm.keyconfigs.addon - + keyconfig = wm.keyconfigs.user + # Keyconfigs are not available in background mode. If the keyconfig # was not found despite running _not_ in background mode, a warning # is printed - if addon_keyconfig is None: + if keyconfig is None: if not bpy.app.background: log.warn("No keyconfig path found") return - - km = addon_keyconfig.keymaps.new(name='Window', space_type='EMPTY', region_type="WINDOW") - km.keymap_items.new(props_ui.LeenkxPlayButton.bl_idname, type='F5', value='PRESS') - km.keymap_items.new("tlm.build_lightmaps", type='F6', value='PRESS') - km.keymap_items.new("tlm.clean_lightmaps", type='F7', value='PRESS') - lnx.keymaps.append(km) - - km = addon_keyconfig.keymaps.new(name='Node Editor', space_type='NODE_EDITOR') - - # shift+G: Create a new node call group node - km.keymap_items.new('lnx.add_call_group_node', 'G', 'PRESS', shift=True) - - # ctrl+G: make node group from selected - km.keymap_items.new('lnx.add_group_tree_from_selected', 'G', 'PRESS', ctrl=True) - - # TAB: enter node groups depending on selection - km.keymap_items.new('lnx.edit_group_tree', 'TAB', 'PRESS') - - # ctrl+TAB: exit node groups depending on selectio - km.keymap_items.new('node.tree_path_parent', 'TAB', 'PRESS', ctrl=True) - - # alt+G: ungroup node tree - km.keymap_items.new('lnx.ungroup_group_tree', 'G', 'PRESS', alt=True) - lnx.keymaps.append(km) - + km = keyconfig.keymaps.get('Window') + if km is None: + log.warn("Window keymaps not available") + return + lnx_start = any(kmi.idname == props_ui.LeenkxPlayButton.bl_idname for kmi in km.keymap_items) + if not lnx_start: + kmw = keyconfig.keymaps.new(name='Window', space_type='EMPTY', region_type="WINDOW") + kmw.keymap_items.new(props_ui.LeenkxPlayButton.bl_idname, type='F5', value='PRESS') + kmw.keymap_items.new('tlm.build_lightmaps', type='F6', value='PRESS') + kmw.keymap_items.new('tlm.clean_lightmaps', type='F7', value='PRESS') + kmn = keyconfig.keymaps.new(name='Node Editor', space_type='NODE_EDITOR') + kmn.keymap_items.new('lnx.add_call_group_node', 'G', 'PRESS', shift=True) + kmn.keymap_items.new('lnx.add_group_tree_from_selected', 'G', 'PRESS', ctrl=True) + kmn.keymap_items.new('lnx.edit_group_tree', 'TAB', 'PRESS') + kmn.keymap_items.new('node.tree_path_parent', 'TAB', 'PRESS', ctrl=True) + kmn.keymap_items.new('lnx.ungroup_group_tree', 'G', 'PRESS', alt=True) + def unregister(): - wm = bpy.context.window_manager - for km in lnx.keymaps: - wm.keyconfigs.addon.keymaps.remove(km) - del lnx.keymaps[:] + kmw = bpy.context.window_manager.keyconfigs.user.keymaps.get('Window') + kmw.keymap_items.remove(kmw.keymap_items[props_ui.LeenkxPlayButton.bl_idname]) + kmw.keymap_items.remove(kmw.keymap_items['tlm.build_lightmaps']) + kmw.keymap_items.remove(kmw.keymap_items['tlm.clean_lightmaps']) + kmn = bpy.context.window_manager.keyconfigs.user.keymaps.get('Node Editor') + kmn.keymap_items.remove(kmn.keymap_items['lnx.add_call_group_node']) + kmn.keymap_items.remove(kmn.keymap_items['lnx.add_group_tree_from_selected']) + kmn.keymap_items.remove(kmn.keymap_items['lnx.edit_group_tree']) + kmn.keymap_items.remove(kmn.keymap_items['node.tree_path_parent']) + kmn.keymap_items.remove(kmn.keymap_items['lnx.ungroup_group_tree'])