2022-02-11 09:07:11 +11:00
|
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
2018-11-20 11:36:44 +11:00
|
|
|
|
|
|
|
__all__ = (
|
|
|
|
"generate",
|
|
|
|
)
|
|
|
|
|
2020-10-02 10:10:01 +10:00
|
|
|
|
2018-11-20 11:36:44 +11:00
|
|
|
def _km_expand_from_toolsystem(space_type, context_mode):
|
|
|
|
def _fn():
|
|
|
|
from bl_ui.space_toolsystem_common import ToolSelectPanelHelper
|
|
|
|
for cls in ToolSelectPanelHelper.__subclasses__():
|
|
|
|
if cls.bl_space_type == space_type:
|
|
|
|
return cls.keymap_ui_hierarchy(context_mode)
|
|
|
|
raise Exception("keymap not found")
|
|
|
|
return _fn
|
|
|
|
|
|
|
|
|
|
|
|
def _km_hierarchy_iter_recursive(items):
|
|
|
|
for sub in items:
|
|
|
|
if callable(sub):
|
|
|
|
yield from sub()
|
|
|
|
else:
|
|
|
|
yield (*sub[:3], list(_km_hierarchy_iter_recursive(sub[3])))
|
|
|
|
|
|
|
|
|
|
|
|
def generate():
|
|
|
|
return list(_km_hierarchy_iter_recursive(_km_hierarchy))
|
|
|
|
|
|
|
|
|
|
|
|
# bpy.type.KeyMap: (km.name, km.space_type, km.region_type, [...])
|
|
|
|
|
|
|
|
# ('Script', 'EMPTY', 'WINDOW', []),
|
|
|
|
|
|
|
|
|
|
|
|
# Access via 'km_hierarchy'.
|
|
|
|
_km_hierarchy = [
|
|
|
|
('Window', 'EMPTY', 'WINDOW', []), # file save, window change, exit
|
|
|
|
('Screen', 'EMPTY', 'WINDOW', [ # full screen, undo, screenshot
|
|
|
|
('Screen Editing', 'EMPTY', 'WINDOW', []), # re-sizing, action corners
|
2019-05-09 18:40:42 +10:00
|
|
|
('Region Context Menu', 'EMPTY', 'WINDOW', []), # header/footer/navigation_bar stuff (per region)
|
2018-11-20 11:36:44 +11:00
|
|
|
]),
|
|
|
|
|
|
|
|
('View2D', 'EMPTY', 'WINDOW', []), # view 2d navigation (per region)
|
|
|
|
('View2D Buttons List', 'EMPTY', 'WINDOW', []), # view 2d with buttons navigation
|
|
|
|
|
|
|
|
('User Interface', 'EMPTY', 'WINDOW', []),
|
|
|
|
|
|
|
|
('3D View', 'VIEW_3D', 'WINDOW', [ # view 3d navigation and generic stuff (select, transform)
|
|
|
|
('Object Mode', 'EMPTY', 'WINDOW', [
|
|
|
|
_km_expand_from_toolsystem('VIEW_3D', 'OBJECT'),
|
|
|
|
]),
|
|
|
|
('Mesh', 'EMPTY', 'WINDOW', [
|
|
|
|
_km_expand_from_toolsystem('VIEW_3D', 'EDIT_MESH'),
|
|
|
|
]),
|
|
|
|
('Curve', 'EMPTY', 'WINDOW', [
|
|
|
|
_km_expand_from_toolsystem('VIEW_3D', 'EDIT_CURVE'),
|
|
|
|
]),
|
2023-01-20 16:40:51 +01:00
|
|
|
('Curves', 'EMPTY', 'WINDOW', []),
|
2018-11-20 11:36:44 +11:00
|
|
|
('Armature', 'EMPTY', 'WINDOW', [
|
|
|
|
_km_expand_from_toolsystem('VIEW_3D', 'EDIT_ARMATURE'),
|
|
|
|
]),
|
|
|
|
('Metaball', 'EMPTY', 'WINDOW', [
|
|
|
|
_km_expand_from_toolsystem('VIEW_3D', 'EDIT_METABALL'),
|
|
|
|
]),
|
|
|
|
('Lattice', 'EMPTY', 'WINDOW', [
|
|
|
|
_km_expand_from_toolsystem('VIEW_3D', 'EDIT_LATTICE'),
|
|
|
|
]),
|
|
|
|
('Font', 'EMPTY', 'WINDOW', [
|
|
|
|
_km_expand_from_toolsystem('VIEW_3D', 'EDIT_TEXT'),
|
|
|
|
]),
|
|
|
|
|
|
|
|
('Pose', 'EMPTY', 'WINDOW', [
|
|
|
|
_km_expand_from_toolsystem('VIEW_3D', 'POSE'),
|
|
|
|
]),
|
|
|
|
|
|
|
|
('Vertex Paint', 'EMPTY', 'WINDOW', [
|
|
|
|
_km_expand_from_toolsystem('VIEW_3D', 'PAINT_VERTEX'),
|
|
|
|
]),
|
|
|
|
('Weight Paint', 'EMPTY', 'WINDOW', [
|
|
|
|
_km_expand_from_toolsystem('VIEW_3D', 'PAINT_WEIGHT'),
|
|
|
|
]),
|
2020-02-10 12:13:55 +01:00
|
|
|
('Paint Vertex Selection (Weight, Vertex)', 'EMPTY', 'WINDOW', []),
|
|
|
|
('Paint Face Mask (Weight, Vertex, Texture)', 'EMPTY', 'WINDOW', []),
|
2018-11-20 11:36:44 +11:00
|
|
|
# image and view3d
|
|
|
|
('Image Paint', 'EMPTY', 'WINDOW', [
|
|
|
|
_km_expand_from_toolsystem('VIEW_3D', 'PAINT_TEXTURE'),
|
|
|
|
]),
|
|
|
|
('Sculpt', 'EMPTY', 'WINDOW', [
|
|
|
|
_km_expand_from_toolsystem('VIEW_3D', 'SCULPT'),
|
|
|
|
]),
|
|
|
|
|
2022-06-03 13:41:09 +02:00
|
|
|
('Sculpt Curves', 'EMPTY', 'WINDOW', [
|
|
|
|
_km_expand_from_toolsystem('VIEW_3D', 'CURVES_SCULPT'),
|
|
|
|
]),
|
|
|
|
|
2018-11-20 11:36:44 +11:00
|
|
|
('Particle', 'EMPTY', 'WINDOW', [
|
|
|
|
_km_expand_from_toolsystem('VIEW_3D', 'PARTICLE'),
|
|
|
|
]),
|
|
|
|
|
|
|
|
('Knife Tool Modal Map', 'EMPTY', 'WINDOW', []),
|
|
|
|
('Custom Normals Modal Map', 'EMPTY', 'WINDOW', []),
|
2019-02-10 16:08:25 -05:00
|
|
|
('Bevel Modal Map', 'EMPTY', 'WINDOW', []),
|
2018-11-20 11:36:44 +11:00
|
|
|
('Paint Stroke Modal', 'EMPTY', 'WINDOW', []),
|
Sculpt: Expand Operator
Expand is a new operator for Sculpt Mode which is intended to be the main
tool for masking, Face Set editing, interacting with the filters and pattern
creation.
The fundamentals of the tool are similar to the previous sculpt.mask_expand
operator. It shares the same default shortcuts and functionality, making
the previous operator obsolete.
The shortcuts to execute the operator are:
- Shift + A: Expand mask
- Shift + Alt + A: Expand mask by normals
- Shift + W: Expand Face Set
- Shift + Alt + W: Resize current Face Set
The main changes compared to the previous sculpt.mask_expand operator are:
- Modal keymap, all operator options can be changed in real time while the
operator is running.
- Supports creating Mask, Face Sets and Sculpt Vertex Colors.
- Much better code, new features can be easily integrated.
Limitations:
- All Mask operations are supported for Sculpt Vertex colors, but not exposed
by default as their support is still experimental.
- Dyntopo does not support any Face Set or Sculpt Vertex Colors. functionality
(they are not implemented in general for Dyntopo).
- Multires does not support any feature related to geodesic distances.
- Multires does not support vertex colors.
- Multires does not support recursions.
- In Multires, Face Sets snaping does not initialize all current enabled Face
Sets when toggling snapping.
- In Multires, Face Sets are created at base mesh level (works by this by
design, like any other tool).
- Unlike the previous mask_expand operator, this one does not blur the mask
by default after finishing Expand as that does not fit the new design.
The mask can still be blurred by using the mask filter manually.
Reviewed By: JacquesLucke
Differential Revision: https://developer.blender.org/D10455
2021-03-01 23:37:48 +01:00
|
|
|
('Sculpt Expand Modal', 'EMPTY', 'WINDOW', []),
|
2018-11-20 11:36:44 +11:00
|
|
|
('Paint Curve', 'EMPTY', 'WINDOW', []),
|
2022-04-03 22:37:22 +05:30
|
|
|
('Curve Pen Modal Map', 'EMPTY', 'WINDOW', []),
|
2018-11-20 11:36:44 +11:00
|
|
|
|
|
|
|
('Object Non-modal', 'EMPTY', 'WINDOW', []), # mode change
|
|
|
|
|
2021-01-16 11:29:53 +11:00
|
|
|
('View3D Placement Modal', 'EMPTY', 'WINDOW', []),
|
2018-11-20 11:36:44 +11:00
|
|
|
('View3D Walk Modal', 'EMPTY', 'WINDOW', []),
|
|
|
|
('View3D Fly Modal', 'EMPTY', 'WINDOW', []),
|
|
|
|
('View3D Rotate Modal', 'EMPTY', 'WINDOW', []),
|
|
|
|
('View3D Move Modal', 'EMPTY', 'WINDOW', []),
|
|
|
|
('View3D Zoom Modal', 'EMPTY', 'WINDOW', []),
|
|
|
|
('View3D Dolly Modal', 'EMPTY', 'WINDOW', []),
|
|
|
|
|
|
|
|
# toolbar and properties
|
|
|
|
('3D View Generic', 'VIEW_3D', 'WINDOW', [
|
|
|
|
_km_expand_from_toolsystem('VIEW_3D', None),
|
|
|
|
]),
|
|
|
|
]),
|
|
|
|
|
|
|
|
('Graph Editor', 'GRAPH_EDITOR', 'WINDOW', [
|
|
|
|
('Graph Editor Generic', 'GRAPH_EDITOR', 'WINDOW', []),
|
|
|
|
]),
|
|
|
|
('Dopesheet', 'DOPESHEET_EDITOR', 'WINDOW', [
|
|
|
|
('Dopesheet Generic', 'DOPESHEET_EDITOR', 'WINDOW', []),
|
|
|
|
]),
|
|
|
|
('NLA Editor', 'NLA_EDITOR', 'WINDOW', [
|
|
|
|
('NLA Channels', 'NLA_EDITOR', 'WINDOW', []),
|
|
|
|
('NLA Generic', 'NLA_EDITOR', 'WINDOW', []),
|
|
|
|
]),
|
|
|
|
('Timeline', 'TIMELINE', 'WINDOW', []),
|
|
|
|
|
|
|
|
('Image', 'IMAGE_EDITOR', 'WINDOW', [
|
2019-07-12 19:05:03 +10:00
|
|
|
# Image (reverse order, UVEdit before Image).
|
|
|
|
('UV Editor', 'EMPTY', 'WINDOW', [
|
|
|
|
_km_expand_from_toolsystem('IMAGE_EDITOR', 'UV'),
|
|
|
|
]),
|
2018-11-20 11:36:44 +11:00
|
|
|
('UV Sculpt', 'EMPTY', 'WINDOW', []),
|
2019-07-12 19:05:03 +10:00
|
|
|
# Image and view3d.
|
|
|
|
('Image Paint', 'EMPTY', 'WINDOW', [
|
|
|
|
_km_expand_from_toolsystem('IMAGE_EDITOR', 'PAINT'),
|
|
|
|
]),
|
|
|
|
('Image View', 'IMAGE_EDITOR', 'WINDOW', [
|
|
|
|
_km_expand_from_toolsystem('IMAGE_EDITOR', 'VIEW'),
|
|
|
|
]),
|
2018-11-20 11:36:44 +11:00
|
|
|
('Image Generic', 'IMAGE_EDITOR', 'WINDOW', [
|
|
|
|
_km_expand_from_toolsystem('IMAGE_EDITOR', None),
|
|
|
|
]),
|
|
|
|
]),
|
|
|
|
|
|
|
|
('Outliner', 'OUTLINER', 'WINDOW', []),
|
|
|
|
|
|
|
|
('Node Editor', 'NODE_EDITOR', 'WINDOW', [
|
|
|
|
('Node Generic', 'NODE_EDITOR', 'WINDOW', []),
|
|
|
|
]),
|
2021-10-06 14:45:28 +11:00
|
|
|
('SequencerCommon', 'SEQUENCE_EDITOR', 'WINDOW', [
|
|
|
|
('Sequencer', 'SEQUENCE_EDITOR', 'WINDOW', [
|
|
|
|
_km_expand_from_toolsystem('SEQUENCE_EDITOR', 'SEQUENCER'),
|
|
|
|
]),
|
|
|
|
('SequencerPreview', 'SEQUENCE_EDITOR', 'WINDOW', [
|
|
|
|
_km_expand_from_toolsystem('SEQUENCE_EDITOR', 'PREVIEW'),
|
|
|
|
]),
|
2018-11-20 11:36:44 +11:00
|
|
|
]),
|
|
|
|
|
|
|
|
('File Browser', 'FILE_BROWSER', 'WINDOW', [
|
|
|
|
('File Browser Main', 'FILE_BROWSER', 'WINDOW', []),
|
|
|
|
('File Browser Buttons', 'FILE_BROWSER', 'WINDOW', []),
|
|
|
|
]),
|
|
|
|
|
|
|
|
('Info', 'INFO', 'WINDOW', []),
|
|
|
|
|
|
|
|
('Property Editor', 'PROPERTIES', 'WINDOW', []), # align context menu
|
|
|
|
|
|
|
|
('Text', 'TEXT_EDITOR', 'WINDOW', [
|
|
|
|
('Text Generic', 'TEXT_EDITOR', 'WINDOW', []),
|
|
|
|
]),
|
|
|
|
('Console', 'CONSOLE', 'WINDOW', []),
|
|
|
|
('Clip', 'CLIP_EDITOR', 'WINDOW', [
|
|
|
|
('Clip Editor', 'CLIP_EDITOR', 'WINDOW', []),
|
|
|
|
('Clip Graph Editor', 'CLIP_EDITOR', 'WINDOW', []),
|
|
|
|
('Clip Dopesheet Editor', 'CLIP_EDITOR', 'WINDOW', []),
|
|
|
|
]),
|
|
|
|
|
|
|
|
('Grease Pencil', 'EMPTY', 'WINDOW', [ # grease pencil stuff (per region)
|
2020-11-13 21:43:00 +01:00
|
|
|
('Grease Pencil Stroke Curve Edit Mode', 'EMPTY', 'WINDOW', []),
|
2018-11-20 11:36:44 +11:00
|
|
|
('Grease Pencil Stroke Edit Mode', 'EMPTY', 'WINDOW', []),
|
|
|
|
('Grease Pencil Stroke Paint (Draw brush)', 'EMPTY', 'WINDOW', []),
|
|
|
|
('Grease Pencil Stroke Paint (Fill)', 'EMPTY', 'WINDOW', []),
|
|
|
|
('Grease Pencil Stroke Paint (Erase)', 'EMPTY', 'WINDOW', []),
|
2020-03-09 16:27:24 +01:00
|
|
|
('Grease Pencil Stroke Paint (Tint)', 'EMPTY', 'WINDOW', []),
|
2018-11-20 11:36:44 +11:00
|
|
|
('Grease Pencil Stroke Paint Mode', 'EMPTY', 'WINDOW', []),
|
|
|
|
('Grease Pencil Stroke Sculpt Mode', 'EMPTY', 'WINDOW', []),
|
2020-03-09 16:27:24 +01:00
|
|
|
('Grease Pencil Stroke Sculpt (Smooth)', 'EMPTY', 'WINDOW', []),
|
|
|
|
('Grease Pencil Stroke Sculpt (Thickness)', 'EMPTY', 'WINDOW', []),
|
|
|
|
('Grease Pencil Stroke Sculpt (Strength)', 'EMPTY', 'WINDOW', []),
|
|
|
|
('Grease Pencil Stroke Sculpt (Grab)', 'EMPTY', 'WINDOW', []),
|
|
|
|
('Grease Pencil Stroke Sculpt (Push)', 'EMPTY', 'WINDOW', []),
|
|
|
|
('Grease Pencil Stroke Sculpt (Twist)', 'EMPTY', 'WINDOW', []),
|
|
|
|
('Grease Pencil Stroke Sculpt (Pinch)', 'EMPTY', 'WINDOW', []),
|
|
|
|
('Grease Pencil Stroke Sculpt (Randomize)', 'EMPTY', 'WINDOW', []),
|
|
|
|
('Grease Pencil Stroke Sculpt (Clone)', 'EMPTY', 'WINDOW', []),
|
2018-11-20 11:36:44 +11:00
|
|
|
('Grease Pencil Stroke Weight Mode', 'EMPTY', 'WINDOW', []),
|
2020-03-09 16:27:24 +01:00
|
|
|
('Grease Pencil Stroke Weight (Draw)', 'EMPTY', 'WINDOW', []),
|
|
|
|
('Grease Pencil Stroke Vertex Mode', 'EMPTY', 'WINDOW', []),
|
|
|
|
('Grease Pencil Stroke Vertex (Draw)', 'EMPTY', 'WINDOW', []),
|
|
|
|
('Grease Pencil Stroke Vertex (Blur)', 'EMPTY', 'WINDOW', []),
|
|
|
|
('Grease Pencil Stroke Vertex (Average)', 'EMPTY', 'WINDOW', []),
|
|
|
|
('Grease Pencil Stroke Vertex (Smear)', 'EMPTY', 'WINDOW', []),
|
|
|
|
('Grease Pencil Stroke Vertex (Replace)', 'EMPTY', 'WINDOW', []),
|
2018-11-20 11:36:44 +11:00
|
|
|
]),
|
|
|
|
('Mask Editing', 'EMPTY', 'WINDOW', []),
|
|
|
|
('Frames', 'EMPTY', 'WINDOW', []), # frame navigation (per region)
|
|
|
|
('Markers', 'EMPTY', 'WINDOW', []), # markers (per region)
|
|
|
|
('Animation', 'EMPTY', 'WINDOW', []), # frame change on click, preview range (per region)
|
|
|
|
('Animation Channels', 'EMPTY', 'WINDOW', []),
|
|
|
|
|
|
|
|
('View3D Gesture Circle', 'EMPTY', 'WINDOW', []),
|
|
|
|
('Gesture Straight Line', 'EMPTY', 'WINDOW', []),
|
|
|
|
('Gesture Zoom Border', 'EMPTY', 'WINDOW', []),
|
|
|
|
('Gesture Box', 'EMPTY', 'WINDOW', []),
|
|
|
|
|
|
|
|
('Standard Modal Map', 'EMPTY', 'WINDOW', []),
|
|
|
|
('Transform Modal Map', 'EMPTY', 'WINDOW', []),
|
|
|
|
('Eyedropper Modal Map', 'EMPTY', 'WINDOW', []),
|
2019-03-18 18:20:44 +11:00
|
|
|
('Eyedropper ColorRamp PointSampling Map', 'EMPTY', 'WINDOW', []),
|
2018-11-20 11:36:44 +11:00
|
|
|
]
|