Keymap: more more standard keys for select tools

This uses shift to extend, ctrl to de-select, both to intersect.
This commit is contained in:
Campbell Barton
2018-11-13 14:05:20 +11:00
parent b323167600
commit ab2fa6d3f4

View File

@@ -39,6 +39,17 @@ from .properties_grease_pencil_common import (
)
class _km_template:
def select_actions(operator, *, type, value):
kw = {"type": type, "value": value}
return (
(operator, dict(mode='SET'), dict(**kw)),
(operator, dict(mode='ADD'), dict(**kw, shift=True)),
(operator, dict(mode='SUB'), dict(**kw, ctrl=True)),
(operator, dict(mode='AND'), dict(**kw, shift=True, ctrl=True)),
)
def generate_from_enum_ex(
context, *,
icon_prefix,
@@ -313,14 +324,20 @@ class _defs_view3d_select:
text="Select Box",
icon="ops.generic.select_box",
widget=None,
keymap=(
("view3d.select_box",
dict(mode='ADD'),
dict(type='EVT_TWEAK_A', value='ANY')),
("view3d.select_box",
dict(mode='SUB'),
dict(type='EVT_TWEAK_A', value='ANY', ctrl=True)),
),
keymap=_km_template.select_actions("view3d.select_box", type='EVT_TWEAK_A', value='ANY'),
draw_settings=draw_settings,
)
@ToolDef.from_fn
def lasso():
def draw_settings(context, layout, tool):
props = tool.operator_properties("view3d.select_lasso")
layout.prop(props, "mode", expand=True)
return dict(
text="Select Lasso",
icon="ops.generic.select_lasso",
widget=None,
keymap=_km_template.select_actions("view3d.select_lasso", type='EVT_TWEAK_A', value='ANY'),
draw_settings=draw_settings,
)
@@ -352,25 +369,7 @@ class _defs_view3d_select:
draw_cursor=draw_cursor,
)
@ToolDef.from_fn
def lasso():
def draw_settings(context, layout, tool):
props = tool.operator_properties("view3d.select_lasso")
layout.prop(props, "mode", expand=True)
return dict(
text="Select Lasso",
icon="ops.generic.select_lasso",
widget=None,
keymap=(
("view3d.select_lasso",
dict(mode='ADD'),
dict(type='EVT_TWEAK_A', value='ANY')),
("view3d.select_lasso",
dict(mode='SUB'),
dict(type='EVT_TWEAK_A', value='ANY', ctrl=True)),
),
draw_settings=draw_settings,
)
# -----------------------------------------------------------------------------
# Object Modes (named based on context.mode)
@@ -1152,6 +1151,22 @@ class _defs_image_uv_select:
draw_settings=draw_settings,
)
@ToolDef.from_fn
def lasso():
return dict(
text="Select Lasso",
icon="ops.generic.select_lasso",
widget=None,
keymap=(
("uv.select_lasso",
dict(deselect=False),
dict(type='EVT_TWEAK_A', value='ANY')),
# ("uv.select_lasso",
# dict(deselect=True),
# dict(type='EVT_TWEAK_A', value='ANY', ctrl=True)),
),
)
@ToolDef.from_fn
def circle():
def draw_settings(context, layout, tool):
@@ -1172,22 +1187,6 @@ class _defs_image_uv_select:
draw_settings=draw_settings,
)
@ToolDef.from_fn
def lasso():
return dict(
text="Select Lasso",
icon="ops.generic.select_lasso",
widget=None,
keymap=(
("uv.select_lasso",
dict(deselect=False),
dict(type='EVT_TWEAK_A', value='ANY')),
# ("uv.select_lasso",
# dict(deselect=True),
# dict(type='EVT_TWEAK_A', value='ANY', ctrl=True)),
),
)
class _defs_image_uv_sculpt:
@@ -1316,15 +1315,28 @@ class _defs_gpencil_edit:
@ToolDef.from_fn
def box_select():
def draw_settings(context, layout, tool):
props = tool.operator_properties("gpencil.select_box")
layout.prop(props, "mode", expand=True)
return dict(
text="Select Box",
icon="ops.generic.select_box",
widget=None,
keymap=(
("gpencil.select_box",
dict(),
dict(type='EVT_TWEAK_A', value='ANY')),
),
keymap=_km_template.select_actions("gpencil.select_box", type='EVT_TWEAK_A', value='ANY'),
draw_settings=draw_settings,
)
@ToolDef.from_fn
def lasso_select():
def draw_settings(context, layout, tool):
props = tool.operator_properties("gpencil.select_lasso")
layout.prop(props, "mode", expand=True)
return dict(
text="Select Lasso",
icon="ops.generic.select_lasso",
widget=None,
keymap=_km_template.select_actions("gpencil.select_lasso", type='EVT_TWEAK_A', value='ANY'),
draw_settings=draw_settings,
)
@ToolDef.from_fn
@@ -1337,19 +1349,9 @@ class _defs_gpencil_edit:
("gpencil.select_circle",
dict(),
dict(type='EVT_TWEAK_A', value='ANY')),
),
)
@ToolDef.from_fn
def lasso_select():
return dict(
text="Select Lasso",
icon="ops.generic.select_lasso",
widget=None,
keymap=(
("gpencil.select_lasso",
dict(),
dict(type='EVT_TWEAK_A', value='ANY')),
("gpencil.select_circle",
dict(deselect=True),
dict(type='ACTIONMOUSE', value='PRESS', ctrl=True)),
),
)