Skip to content
Snippets Groups Projects
Commit 24eec014 authored by Stephen Leger's avatar Stephen Leger
Browse files

bugfix properly detect every delete event

parent 97929851
No related branches found
No related tags found
No related merge requests found
...@@ -24,7 +24,6 @@ ...@@ -24,7 +24,6 @@
# Author: Stephen Leger (s-leger) # Author: Stephen Leger (s-leger)
# #
# ---------------------------------------------------------- # ----------------------------------------------------------
import bpy
class Keymaps: class Keymaps:
...@@ -52,9 +51,7 @@ class Keymaps: ...@@ -52,9 +51,7 @@ class Keymaps:
""" """
# provide abstration between user and addon # provide abstration between user and addon
# with different select mouse side # with different select mouse side
wm = context.window_manager mouse_right = context.window_manager.keyconfigs.active.preferences.select_mouse
keyconfig = wm.keyconfigs.active
mouse_right = getattr(keyconfig.preferences, "select_mouse", "LEFT")
if mouse_right == 'LEFT': if mouse_right == 'LEFT':
mouse_left = 'RIGHT' mouse_left = 'RIGHT'
mouse_right_side = 'Left' mouse_right_side = 'Left'
...@@ -69,48 +66,57 @@ class Keymaps: ...@@ -69,48 +66,57 @@ class Keymaps:
""" """
def check(self, event, against): def check(self, event, against):
return against['event'] == (event.alt, event.ctrl, event.shift, event.type, event.value) res = False
signature = (event.alt, event.ctrl, event.shift, event.type, event.value)
for ev in against:
# print ("check %s == %s" % (signature, ev))
if ev['event'] == signature:
# print("check True")
res = True
break
return res
def get_event(self, context, keyconfig, keymap_item): def get_event(self, context, keyconfig, keymap_item):
""" """
Return simple keymaps event signature as dict Return simple keymaps event signature as array of dict
NOTE: NOTE:
this won't work for complex keymaps such as select_all this won't work for complex keymaps such as select_all
using properties to call operator in different manner using properties to call operator in different manner
type: keyboard main type type: keyboard main type
name: event name as defined in user preferences name: event name as defined in user preferences
event: simple event signature to compare like : event: simple event signature to compare like :
if event == keymap.undo.event: if keymap.check(event, keymap.undo):
""" """
# Headless mode fails without this check evs = [ev for k, ev in context.window_manager.keyconfigs[0].keymaps[keyconfig].keymap_items.items()
if bpy.app.background: if k == keymap_item]
return {'type': None, 'event':(False, False, False, False, None, None)} # ev = context.window_manager.keyconfigs[0].keymaps[keyconfig].keymap_items[keymap_item]
res = []
for ev in evs:
key = ev.type
if ev.ctrl:
key += '+CTRL'
if ev.alt:
key += '+ALT'
if ev.shift:
key += '+SHIFT'
res.append({'type': key, 'name': ev.name, 'event': (ev.alt, ev.ctrl, ev.shift, ev.type, ev.value)})
return res
ev = context.window_manager.keyconfigs.user.keymaps[keyconfig].keymap_items[keymap_item] def dump_keys(self, context, filename="/tmp/keymap.txt"):
key = ev.type
if ev.ctrl:
key += '+CTRL'
if ev.alt:
key += '+ALT'
if ev.shift:
key += '+SHIFT'
return {'type': key, 'name': ev.name, 'event': (ev.alt, ev.ctrl, ev.shift, ev.type, ev.value)}
def dump_keys(self, context, filename="c:\\tmp\\keymap.txt"):
""" """
Utility for developers : Utility for developpers :
Dump all keymaps to a file Dump all keymaps to a file
filename : string a file path to dump keymaps filename : string a file path to dump keymaps
""" """
str = "" str = ""
km = context.window_manager.keyconfigs.user.keymaps kms = context.window_manager.keyconfigs
for key in km.keys(): for name, km in kms.items():
str += "\n\n#--------------------------------\n{}:\n#--------------------------------\n\n".format(key) for key in km.keymaps.keys():
for sub in km[key].keymap_items.keys(): str += "\n\n#--------------------------------\n{} - {}:\n#--------------------------------\n\n".format(name, key)
k = km[key].keymap_items[sub] for sub in km[key].keymap_items.keys():
str += "alt:{} ctrl:{} shift:{} type:{} value:{} idname:{} name:{}\n".format( k = km[key].keymap_items[sub]
k.alt, k.ctrl, k.shift, k.type, k.value, sub, k.name) str += "alt:{} ctrl:{} shift:{} type:{} value:{} idname:{} name:{}\n".format(
k.alt, k.ctrl, k.shift, k.type, k.value, sub, k.name)
file = open(filename, "w") file = open(filename, "w")
file.write(str) file.write(str)
file.close() file.close()
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment