Tools: add Select tool, with transform tweak on drag and no click delay.

For users that want the 2.7 LMB keymap behavior, this provides a way of
working without tools interfering. For RMB select this operator is quite
redundant with the Cursor tool, we may have to find a solution for that.

Note that we also might later add transform tweak to the transform tools,
when nothing is selected. But this is important for existing users who
preferred the existing workflow.
This commit is contained in:
Brecht Van Lommel 2018-11-22 16:05:28 +01:00
parent e840f0a90b
commit 43325e98da
3 changed files with 90 additions and 7 deletions

View File

@ -133,6 +133,10 @@ def op_tool(tool, kmi_args):
return ("wm.tool_set_by_name", kmi_args, {"properties": [("name", tool)]})
def op_tool_cycle(tool, kmi_args):
return ("wm.tool_set_by_name", kmi_args, {"properties": [("name", tool), ("cycle", True)]})
# ------------------------------------------------------------------------------
# Keymap Templates
@ -211,6 +215,19 @@ def _template_items_proportional_editing(*, connected=False):
# Tool System Templates
def _template_items_tool_select(params, operator, cursor_operator):
if params.select_mouse == 'LEFTMOUSE':
# Immediate select without quick delay.
return [(operator, {"type": 'LEFTMOUSE', "value": 'PRESS'}, None)]
else:
# For right mouse, set the cursor.
return [
(cursor_operator, {"type": 'LEFTMOUSE', "value": 'PRESS'}, None),
("transform.translate", {"type": 'EVT_TWEAK_L', "value": 'ANY'},
{"properties": [("release_confirm", True), ("cursor_transform", True)]}),
]
def _template_items_tool_select_actions(operator, *, type, value):
kmi_args = {"type": type, "value": value}
return [
@ -767,7 +784,7 @@ def km_uv_editor(params):
# Quick switch to select tool, since left select can't easily
# select with any tool active.
items.extend([
op_tool("Select Box", {"type": 'W', "value": 'PRESS'}),
op_tool_cycle("Select", {"type": 'W', "value": 'PRESS'}),
])
return keymap
@ -1116,7 +1133,7 @@ def km_view3d(params):
# Quick switch to select tool, since left select can't easily
# select with any tool active.
items.extend([
op_tool("Select Box", {"type": 'W', "value": 'PRESS'}),
op_tool_cycle("Select", {"type": 'W', "value": 'PRESS'}),
])
return keymap
@ -4928,6 +4945,14 @@ def km_image_editor_tool_uv_cursor(params):
)
def km_image_editor_tool_uv_select(params):
return (
"Image Editor Tool: Uv, Select",
{"space_type": 'IMAGE_EDITOR', "region_type": 'WINDOW'},
{"items": _template_items_tool_select(params, "uv.select", "uv.cursor_set")},
)
def km_image_editor_tool_uv_select_box(params):
return (
"Image Editor Tool: Uv, Select Box",
@ -5019,6 +5044,14 @@ def km_3d_view_tool_object_cursor(params):
)
def km_3d_view_tool_object_select(params):
return (
"3D View Tool: Object, Select",
{"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
{"items": _template_items_tool_select(params, "view3d.select", "view3d.cursor3d")},
)
def km_3d_view_tool_object_select_box(params):
return (
"3D View Tool: Object, Select Box",
@ -5688,6 +5721,14 @@ def km_3d_view_tool_gpencil_paint_circle(params):
)
def km_3d_view_tool_gpencil_edit_select(params):
return (
"3D View Tool: Gpencil Edit, Select",
{"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
{"items": _template_items_tool_select(params, "gpencil.select", "view3d.cursor3d")},
)
def km_3d_view_tool_gpencil_edit_select_box(params):
return (
"3D View Tool: Gpencil Edit, Select Box",
@ -5889,6 +5930,7 @@ def generate_keymaps(params=None):
# Tool System.
km_image_editor_tool_uv_cursor(params),
km_image_editor_tool_uv_select(params),
km_image_editor_tool_uv_select_box(params),
km_image_editor_tool_uv_select_circle(params),
km_image_editor_tool_uv_select_lasso(params),
@ -5897,6 +5939,7 @@ def generate_keymaps(params=None):
km_image_editor_tool_uv_annotate_polygon(params),
km_image_editor_tool_uv_annotate_eraser(params),
km_3d_view_tool_object_cursor(params),
km_3d_view_tool_object_select(params),
km_3d_view_tool_object_select_box(params),
km_3d_view_tool_object_select_circle(params),
km_3d_view_tool_object_select_lasso(params),
@ -5953,6 +5996,7 @@ def generate_keymaps(params=None):
km_3d_view_tool_gpencil_paint_line(params),
km_3d_view_tool_gpencil_paint_box(params),
km_3d_view_tool_gpencil_paint_circle(params),
km_3d_view_tool_gpencil_edit_select(params),
km_3d_view_tool_gpencil_edit_select_box(params),
km_3d_view_tool_gpencil_edit_select_circle(params),
km_3d_view_tool_gpencil_edit_select_lasso(params),

View File

@ -279,7 +279,19 @@ class _defs_transform:
class _defs_view3d_select:
@ToolDef.from_fn
def border():
def select():
def draw_settings(context, layout, tool):
pass
return dict(
text="Select",
icon="ops.generic.select",
widget=None,
keymap=(),
draw_settings=draw_settings,
)
@ToolDef.from_fn
def box():
def draw_settings(context, layout, tool):
props = tool.operator_properties("view3d.select_box")
layout.prop(props, "mode", expand=True)
@ -960,7 +972,19 @@ class _defs_image_uv_transform:
class _defs_image_uv_select:
@ToolDef.from_fn
def border():
def select():
def draw_settings(context, layout, tool):
pass
return dict(
text="Select",
icon="ops.generic.select",
widget=None,
keymap=(),
draw_settings=draw_settings,
)
@ToolDef.from_fn
def box():
def draw_settings(context, layout, tool):
props = tool.operator_properties("uv.select_box")
layout.prop(props, "mode", expand=True)
@ -1066,6 +1090,18 @@ class _defs_gpencil_edit:
keymap=(),
)
@ToolDef.from_fn
def select():
def draw_settings(context, layout, tool):
pass
return dict(
text="Select",
icon="ops.generic.select",
widget=None,
keymap=(),
draw_settings=draw_settings,
)
@ToolDef.from_fn
def box_select():
def draw_settings(context, layout, tool):
@ -1220,7 +1256,8 @@ class IMAGE_PT_tools_active(ToolSelectPanelHelper, Panel):
_tools_select = (
(
_defs_image_uv_select.border,
_defs_image_uv_select.select,
_defs_image_uv_select.box,
_defs_image_uv_select.circle,
_defs_image_uv_select.lasso,
),
@ -1301,7 +1338,8 @@ class VIEW3D_PT_tools_active(ToolSelectPanelHelper, Panel):
_tools_select = (
(
_defs_view3d_select.border,
_defs_view3d_select.select,
_defs_view3d_select.box,
_defs_view3d_select.circle,
_defs_view3d_select.lasso,
),
@ -1319,6 +1357,7 @@ class VIEW3D_PT_tools_active(ToolSelectPanelHelper, Panel):
_tools_gpencil_select = (
(
_defs_gpencil_edit.select,
_defs_gpencil_edit.box_select,
_defs_gpencil_edit.circle_select,
_defs_gpencil_edit.lasso_select,

View File

@ -814,7 +814,7 @@ static const char *toolsystem_default_tool(const bToolKey *tkey)
break;
}
return "Select Box";
return "Select";
}
/**