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

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2018-07-03 19:33:52 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-07-03 19:38:08 +0300
commit81a23d1f2db5d3c21e3c35cf3128f5e6326df54a (patch)
treeabb1e5a5866d6928d1ad1ed5406d8b84299cc249 /release/scripts/startup/bl_ui/space_toolsystem_common.py
parent51acd547605a9c3b1644fba9d6e3168e37973c68 (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.py26
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.