Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Leger <stephen@3dservices.ch>2019-07-22 14:56:30 +0300
committerStephen Leger <stephen@3dservices.ch>2019-07-22 14:56:48 +0300
commit24eec014a6fb16ca092bf77a835c95b412795017 (patch)
treeda16acd89d3e4603618834f55343432476a26ae9 /archipack
parent979298511916b25ec97bb22feb1c06cc9fbc86dd (diff)
bugfix properly detect every delete event
Diffstat (limited to 'archipack')
-rw-r--r--archipack/archipack_keymaps.py68
1 files changed, 37 insertions, 31 deletions
diff --git a/archipack/archipack_keymaps.py b/archipack/archipack_keymaps.py
index 537833ee..3292e0d7 100644
--- a/archipack/archipack_keymaps.py
+++ b/archipack/archipack_keymaps.py
@@ -24,7 +24,6 @@
# Author: Stephen Leger (s-leger)
#
# ----------------------------------------------------------
-import bpy
class Keymaps:
@@ -52,9 +51,7 @@ class Keymaps:
"""
# provide abstration between user and addon
# with different select mouse side
- wm = context.window_manager
- keyconfig = wm.keyconfigs.active
- mouse_right = getattr(keyconfig.preferences, "select_mouse", "LEFT")
+ mouse_right = context.window_manager.keyconfigs.active.preferences.select_mouse
if mouse_right == 'LEFT':
mouse_left = 'RIGHT'
mouse_right_side = 'Left'
@@ -69,48 +66,57 @@ class Keymaps:
"""
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):
"""
- Return simple keymaps event signature as dict
+ Return simple keymaps event signature as array of dict
NOTE:
this won't work for complex keymaps such as select_all
using properties to call operator in different manner
type: keyboard main type
name: event name as defined in user preferences
event: simple event signature to compare like :
- if event == keymap.undo.event:
+ if keymap.check(event, keymap.undo):
"""
- # Headless mode fails without this check
- if bpy.app.background:
- return {'type': None, 'event':(False, False, False, False, None, None)}
+ evs = [ev for k, ev in context.window_manager.keyconfigs[0].keymaps[keyconfig].keymap_items.items()
+ if k == keymap_item]
+ # 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]
- 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"):
+ def dump_keys(self, context, filename="/tmp/keymap.txt"):
"""
- Utility for developers :
+ Utility for developpers :
Dump all keymaps to a file
filename : string a file path to dump keymaps
"""
str = ""
- km = context.window_manager.keyconfigs.user.keymaps
- for key in km.keys():
- str += "\n\n#--------------------------------\n{}:\n#--------------------------------\n\n".format(key)
- for sub in km[key].keymap_items.keys():
- k = km[key].keymap_items[sub]
- str += "alt:{} ctrl:{} shift:{} type:{} value:{} idname:{} name:{}\n".format(
- k.alt, k.ctrl, k.shift, k.type, k.value, sub, k.name)
+ kms = context.window_manager.keyconfigs
+ for name, km in kms.items():
+ for key in km.keymaps.keys():
+ str += "\n\n#--------------------------------\n{} - {}:\n#--------------------------------\n\n".format(name, key)
+ for sub in km[key].keymap_items.keys():
+ k = km[key].keymap_items[sub]
+ 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.write(str)
- file.close()
+ file.close() \ No newline at end of file