diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-07-03 19:33:52 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-07-03 19:38:08 +0300 |
commit | 81a23d1f2db5d3c21e3c35cf3128f5e6326df54a (patch) | |
tree | abb1e5a5866d6928d1ad1ed5406d8b84299cc249 /release/scripts/startup/bl_ui/space_toolsystem_common.py | |
parent | 51acd547605a9c3b1644fba9d6e3168e37973c68 (diff) |
Tool System: add operator for introspection
In some cases we want associate use an operator for a tool
for introspection, so we can for eg, automatically
use the same binding for in the popup toolbar.
Space-G/R/S for transform now work as accelerator keys again.
Also Space-E for extrude.
Diffstat (limited to 'release/scripts/startup/bl_ui/space_toolsystem_common.py')
-rw-r--r-- | release/scripts/startup/bl_ui/space_toolsystem_common.py | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/release/scripts/startup/bl_ui/space_toolsystem_common.py b/release/scripts/startup/bl_ui/space_toolsystem_common.py index 20db56af416..2d7afb7a56a 100644 --- a/release/scripts/startup/bl_ui/space_toolsystem_common.py +++ b/release/scripts/startup/bl_ui/space_toolsystem_common.py @@ -88,6 +88,8 @@ ToolDef = namedtuple( # Optional data-block assosiated with this tool. # (Typically brush name, usage depends on mode, we could use for non-brush ID's in other modes). "data_block", + # Optional primary operator (for introspection only). + "operator", # Optional draw settings (operator options, toolsettings). "draw_settings", ) @@ -107,6 +109,7 @@ def from_dict(kw_args): "widget": None, "keymap": None, "data_block": None, + "operator": None, "draw_settings": None, } kw.update(kw_args) @@ -568,6 +571,7 @@ def _activate_by_item(context, space_type, item, index): cursor=item.cursor or 'DEFAULT', manipulator_group=item.widget or "", data_block=item.data_block or "", + operator=item.operator or "", index=index, ) @@ -643,15 +647,21 @@ def keymap_from_context(context, space_type): kmi.properties.name = item.text continue - if not item.keymap: - continue - # Only check the first item in the tools key-map (a little arbitrary). - kmi_first = item.keymap[0].keymap_items[0] - kmi_found = wm.keyconfigs.find_item_from_operator( - idname=kmi_first.idname, - # properties=kmi_first.properties, # prevents matches, don't use. - )[1] + if item.operator is not None: + kmi_found = wm.keyconfigs.find_item_from_operator( + idname=item.operator, + )[1] + elif item.keymap is not None: + kmi_first = item.keymap[0].keymap_items[0] + kmi_found = wm.keyconfigs.find_item_from_operator( + idname=kmi_first.idname, + # properties=kmi_first.properties, # prevents matches, don't use. + )[1] + del kmi_first + else: + kmi_found = None + if kmi_found is not None: kmi_found_type = kmi_found.type # Only for single keys. |