diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-05-20 23:37:35 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-05-20 23:39:19 +0300 |
commit | 768a1528833e014606e71ee18a2a34f412662886 (patch) | |
tree | ea814bac6b83212d5a430012c1cadadf1ae1fde9 /release | |
parent | e7895bac07f32d4f66184aff2ed2c08956daaac7 (diff) |
UI: proof of concept keymap for the popup toolbar
Diffstat (limited to 'release')
-rw-r--r-- | release/scripts/startup/bl_operators/wm.py | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py index c4b04e63e3f..9320145369c 100644 --- a/release/scripts/startup/bl_operators/wm.py +++ b/release/scripts/startup/bl_operators/wm.py @@ -2360,6 +2360,8 @@ class WM_OT_toolbar(Operator): bl_idname = "wm.toolbar" bl_label = "Toolbar" + keymap = None + def execute(self, context): space_type = context.space_data.type from bl_ui.space_toolsystem_common import ToolSelectPanelHelper @@ -2368,12 +2370,30 @@ class WM_OT_toolbar(Operator): self.report({'WARNING'}, f"Toolbar not found for {space_type!r}") return {'CANCELLED'} + wm = context.window_manager + + if WM_OT_toolbar.keymap is None: + keyconf = wm.keyconfigs.active + km = keyconf.keymaps.new("Toolbar Popup", space_type='EMPTY', region_type='TEMPORARY') + WM_OT_toolbar.keymap = km + + # Example + for key, value in ( + ('G', "Move"), + ('R', "Rotate"), + ('S', "Scale"), + ('C', "Select Circle"), + ('B', "Select Border"), + ): + kmi = km.keymap_items.new("wm.tool_set_by_name", key, 'PRESS') + kmi.properties.name = value + def draw_menu(popover, context): - cls.draw_cls(popover.layout, context, detect_layout=False) + layout = popover.layout + cls.draw_cls(layout, context, detect_layout=False) - wm = context.window_manager # wm.popup_menu(draw_menu) # this also works - wm.popover(draw_menu) + wm.popover(draw_menu, keymap=WM_OT_toolbar.keymap) return {'FINISHED'} |