diff options
Diffstat (limited to 'release')
25 files changed, 500 insertions, 336 deletions
diff --git a/release/datafiles/blender_icons_update.py b/release/datafiles/blender_icons_update.py index f4299fc510f..c1cf8d6fcb0 100755 --- a/release/datafiles/blender_icons_update.py +++ b/release/datafiles/blender_icons_update.py @@ -26,8 +26,8 @@ if sys.platform[:3] == "win": env["SystemDrive"] = os.environ.get("SystemDrive", "") env["SystemRoot"] = os.environ.get("SystemRoot", "") -inkscape_bin = os.environ.get("INKSCAPE_BIN", "inkscape") -blender_bin = os.environ.get("BLENDER_BIN", "blender") +inkscape_bin = "inkscape" +blender_bin = "blender" if sys.platform == 'darwin': inkscape_app_path = '/Applications/Inkscape.app/Contents/MacOS/inkscape' @@ -36,6 +36,11 @@ if sys.platform == 'darwin': blender_app_path = '/Applications/Blender.app/Contents/MacOS/Blender' if os.path.exists(blender_app_path): blender_bin = blender_app_path + else: + blender_bin = "Blender" + +inkscape_bin = os.environ.get("INKSCAPE_BIN", inkscape_bin) +blender_bin = os.environ.get("BLENDER_BIN", blender_bin) cmd = ( inkscape_bin, diff --git a/release/datafiles/colormanagement/config.ocio b/release/datafiles/colormanagement/config.ocio index bd342a0577e..bdb04cbf9ce 100644 --- a/release/datafiles/colormanagement/config.ocio +++ b/release/datafiles/colormanagement/config.ocio @@ -9,7 +9,7 @@ # # See ocio-license.txt for details. -ocio_profile_version: 1 +ocio_profile_version: 2 search_path: "luts:filmic" strictparsing: true @@ -100,8 +100,7 @@ colorspaces: from_reference: !<GroupTransform> children: - !<FileTransform> {src: srgb_to_xyz.spimtx, interpolation: linear} - - !<FileTransform> {src: xyz_D65_to_E.spimtx, interpolation: linear} - - !<FileTransform> {src: xyz_to_aces.spimtx, interpolation: linear} + - !<BuiltinTransform> {style: "UTILITY - ACES-AP0_to_CIE-XYZ-D65_BFD", direction: inverse} - !<ColorSpace> name: nuke_rec709 diff --git a/release/datafiles/locale b/release/datafiles/locale -Subproject af8f04db7686d1851d3ac9091472ca21989c8ef +Subproject 2a5095eed3028e91624d27ca93e4c65f572b809 diff --git a/release/datafiles/userdef/userdef_default.c b/release/datafiles/userdef/userdef_default.c index 34168cc0126..7cf8158c42d 100644 --- a/release/datafiles/userdef/userdef_default.c +++ b/release/datafiles/userdef/userdef_default.c @@ -144,7 +144,7 @@ const UserDef U_default = { * so invert this by default, see: T67579. */ NDOF_ROTX_INVERT_AXIS | NDOF_ROTY_INVERT_AXIS | NDOF_ROTZ_INVERT_AXIS | NDOF_PANX_INVERT_AXIS | NDOF_PANY_INVERT_AXIS | NDOF_PANZ_INVERT_AXIS | - NDOF_ZOOM_INVERT), + NDOF_ZOOM_INVERT | NDOF_CAMERA_PAN_ZOOM), .image_draw_method = IMAGE_DRAW_METHOD_AUTO, .glalphaclip = 0.004, .autokey_mode = (AUTOKEY_MODE_NORMAL & ~AUTOKEY_ON), diff --git a/release/scripts/addons b/release/scripts/addons -Subproject b0274e50da58bc1f0086794a16029ec6e2e9b92 +Subproject 842c215b746f7e14f9299fa8ae50d2fecd870a9 diff --git a/release/scripts/modules/addon_utils.py b/release/scripts/modules/addon_utils.py index 554150de87d..3e823f2b6b7 100644 --- a/release/scripts/modules/addon_utils.py +++ b/release/scripts/modules/addon_utils.py @@ -489,12 +489,7 @@ def disable_all(): def _blender_manual_url_prefix(): - if _bpy.app.version_cycle in {"rc", "release"}: - manual_version = "%d.%d" % _bpy.app.version[:2] - else: - manual_version = "dev" - - return "https://docs.blender.org/manual/en/" + manual_version + return "https://docs.blender.org/manual/en/%d.%d" % _bpy.app.version[:2] def module_bl_info(mod, *, info_basis=None): diff --git a/release/scripts/modules/bl_keymap_utils/io.py b/release/scripts/modules/bl_keymap_utils/io.py index f34002741c6..6631461eaba 100644 --- a/release/scripts/modules/bl_keymap_utils/io.py +++ b/release/scripts/modules/bl_keymap_utils/io.py @@ -52,6 +52,8 @@ def kmi_args_as_data(kmi): s.append(f"\"{attr:s}\": " + ("-1" if mod == -1 else "True")) if (mod := kmi.key_modifier) and (mod != 'NONE'): s.append(f"\"key_modifier\": '{mod:s}'") + if (direction := kmi.direction) and (direction != 'ANY'): + s.append(f"\"direction\": '{direction:s}'") if kmi.repeat: if ( diff --git a/release/scripts/modules/bl_keymap_utils/keymap_from_toolbar.py b/release/scripts/modules/bl_keymap_utils/keymap_from_toolbar.py index 604d1ffd547..6d41e290512 100644 --- a/release/scripts/modules/bl_keymap_utils/keymap_from_toolbar.py +++ b/release/scripts/modules/bl_keymap_utils/keymap_from_toolbar.py @@ -189,6 +189,7 @@ def generate(context, space_type, *, use_fallback_keys=True, use_reset=True): 'VERTEX_GPENCIL': "gpencil_vertex_tool", 'SCULPT_GPENCIL': "gpencil_sculpt_tool", 'WEIGHT_GPENCIL': "gpencil_weight_tool", + 'SCULPT_CURVES': "curves_sculpt_tool", }.get(mode, None) else: attr = None diff --git a/release/scripts/modules/bl_keymap_utils/versioning.py b/release/scripts/modules/bl_keymap_utils/versioning.py index ee7cc5daceb..402c21f8ef1 100644 --- a/release/scripts/modules/bl_keymap_utils/versioning.py +++ b/release/scripts/modules/bl_keymap_utils/versioning.py @@ -30,4 +30,22 @@ def keyconfig_update(keyconfig_data, keyconfig_version): # Setting repeat true on other kinds of events is harmless. item_event["repeat"] = True + if keyconfig_version <= (3, 2, 5): + # Only copy once. + if not has_copy: + keyconfig_data = copy.deepcopy(keyconfig_data) + has_copy = True + + for _km_name, _km_parms, km_items_data in keyconfig_data: + for (_item_op, item_event, _item_prop) in km_items_data["items"]: + if ty_new := { + 'EVT_TWEAK_L': 'LEFTMOUSE', + 'EVT_TWEAK_M': 'MIDDLEMOUSE', + 'EVT_TWEAK_R': 'RIGHTMOUSE', + }.get(item_event.get("type")): + item_event["type"] = ty_new + if (value := item_event["value"]) != 'ANY': + item_event["direction"] = value + item_event["value"] = 'CLICK_DRAG' + return keyconfig_data diff --git a/release/scripts/modules/rna_keymap_ui.py b/release/scripts/modules/rna_keymap_ui.py index 2676c00c655..5da98cd783d 100644 --- a/release/scripts/modules/rna_keymap_ui.py +++ b/release/scripts/modules/rna_keymap_ui.py @@ -180,6 +180,10 @@ def draw_kmi(display_keymaps, kc, km, kmi, layout, level): subrow.prop(kmi, "type", text="") subrow.prop(kmi, "value", text="") + if map_type in {'KEYBOARD', 'MOUSE'} and kmi.value == 'CLICK_DRAG': + subrow = sub.row() + subrow.prop(kmi, "direction") + subrow = sub.row() subrow.scale_x = 0.75 subrow.prop(kmi, "any", toggle=True) diff --git a/release/scripts/modules/rna_manual_reference.py b/release/scripts/modules/rna_manual_reference.py index dc2d0acbbee..4b10c29346e 100644 --- a/release/scripts/modules/rna_manual_reference.py +++ b/release/scripts/modules/rna_manual_reference.py @@ -3,10 +3,7 @@ import bpy -if bpy.app.version_cycle in {'rc', 'release'}: - manual_version = '%d.%d' % bpy.app.version[:2] -else: - manual_version = 'dev' +manual_version = '%d.%d' % bpy.app.version[:2] url_manual_prefix = "https://docs.blender.org/manual/en/" + manual_version + "/" @@ -50,7 +47,6 @@ url_manual_mapping = ( ("bpy.types.lineartgpencilmodifier.use_offset_towards_custom_camera*", "grease_pencil/modifiers/generate/line_art.html#bpy-types-lineartgpencilmodifier-use-offset-towards-custom-camera"), ("bpy.types.movietrackingsettings.refine_intrinsics_principal_point*", "movie_clip/tracking/clip/toolbar/solve.html#bpy-types-movietrackingsettings-refine-intrinsics-principal-point"), ("bpy.types.cyclesobjectsettings.shadow_terminator_geometry_offset*", "render/cycles/object_settings/object_data.html#bpy-types-cyclesobjectsettings-shadow-terminator-geometry-offset"), - ("bpy.types.cyclesrenderlayersettings.denoising_optix_input_passes*", "render/layers/denoising.html#bpy-types-cyclesrenderlayersettings-denoising-optix-input-passes"), ("bpy.types.sequencertoolsettings.use_snap_current_frame_to_strips*", "video_editing/sequencer/editing.html#bpy-types-sequencertoolsettings-use-snap-current-frame-to-strips"), ("bpy.types.fluiddomainsettings.sndparticle_potential_max_energy*", "physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-sndparticle-potential-max-energy"), ("bpy.types.fluiddomainsettings.sndparticle_potential_min_energy*", "physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-sndparticle-potential-min-energy"), @@ -114,6 +110,7 @@ url_manual_mapping = ( ("bpy.types.gpencilsculptsettings.intersection_threshold*", "grease_pencil/modes/draw/tools/cutter.html#bpy-types-gpencilsculptsettings-intersection-threshold"), ("bpy.types.gpencilsculptsettings.use_multiframe_falloff*", "grease_pencil/multiframe.html#bpy-types-gpencilsculptsettings-use-multiframe-falloff"), ("bpy.types.lineartgpencilmodifier.use_intersection_mask*", "grease_pencil/modifiers/generate/line_art.html#bpy-types-lineartgpencilmodifier-use-intersection-mask"), + ("bpy.types.lineartgpencilmodifier.use_invert_collection*", "grease_pencil/modifiers/generate/line_art.html#bpy-types-lineartgpencilmodifier-use-invert-collection"), ("bpy.types.movietrackingsettings.use_keyframe_selection*", "movie_clip/tracking/clip/toolbar/solve.html#bpy-types-movietrackingsettings-use-keyframe-selection"), ("bpy.types.rendersettings.simplify_gpencil_antialiasing*", "render/cycles/render_settings/simplify.html#bpy-types-rendersettings-simplify-gpencil-antialiasing"), ("bpy.types.sequencertimelineoverlay.show_strip_duration*", "editors/video_sequencer/sequencer/display.html#bpy-types-sequencertimelineoverlay-show-strip-duration"), @@ -123,7 +120,6 @@ url_manual_mapping = ( ("bpy.types.brush.show_multiplane_scrape_planes_preview*", "sculpt_paint/sculpting/tools/multiplane_scrape.html#bpy-types-brush-show-multiplane-scrape-planes-preview"), ("bpy.types.brushgpencilsettings.eraser_strength_factor*", "grease_pencil/modes/draw/tools/erase.html#bpy-types-brushgpencilsettings-eraser-strength-factor"), ("bpy.types.cyclesmaterialsettings.volume_interpolation*", "render/cycles/material_settings.html#bpy-types-cyclesmaterialsettings-volume-interpolation"), - ("bpy.types.cyclesrendersettings.debug_optix_curves_api*", "render/cycles/render_settings/debug.html#bpy-types-cyclesrendersettings-debug-optix-curves-api"), ("bpy.types.cyclesrendersettings.denoising_input_passes*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-denoising-input-passes"), ("bpy.types.cyclesrendersettings.film_transparent_glass*", "render/cycles/render_settings/film.html#bpy-types-cyclesrendersettings-film-transparent-glass"), ("bpy.types.cyclesrendersettings.offscreen_dicing_scale*", "render/cycles/render_settings/subdivision.html#bpy-types-cyclesrendersettings-offscreen-dicing-scale"), @@ -358,6 +354,7 @@ url_manual_mapping = ( ("bpy.types.toolsettings.use_keyframe_insert_auto*", "editors/timeline.html#bpy-types-toolsettings-use-keyframe-insert-auto"), ("bpy.types.viewlayer.use_pass_cryptomatte_object*", "render/layers/passes.html#bpy-types-viewlayer-use-pass-cryptomatte-object"), ("bpy.ops.armature.rigify_apply_selection_colors*", "addons/rigging/rigify/metarigs.html#bpy-ops-armature-rigify-apply-selection-colors"), + ("bpy.ops.ed.lib_id_generate_preview_from_object*", "editors/asset_browser.html#bpy-ops-ed-lib-id-generate-preview-from-object"), ("bpy.types.brushgpencilsettings.fill_layer_mode*", "grease_pencil/modes/draw/tools/fill.html#bpy-types-brushgpencilsettings-fill-layer-mode"), ("bpy.types.brushgpencilsettings.random_strength*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-random-strength"), ("bpy.types.brushgpencilsettings.simplify_factor*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-simplify-factor"), @@ -379,6 +376,7 @@ url_manual_mapping = ( ("bpy.types.freestylelinestyle.use_split_pattern*", "render/freestyle/view_layer/line_style/strokes.html#bpy-types-freestylelinestyle-use-split-pattern"), ("bpy.types.freestylesettings.use_view_map_cache*", "render/freestyle/view_layer/freestyle.html#bpy-types-freestylesettings-use-view-map-cache"), ("bpy.types.geometrynodecurvehandletypeselection*", "modeling/geometry_nodes/curve/handle_type_selection.html#bpy-types-geometrynodecurvehandletypeselection"), + ("bpy.types.geometrynodeinputmeshvertexneighbors*", "modeling/geometry_nodes/mesh/vertex_neighbors.html#bpy-types-geometrynodeinputmeshvertexneighbors"), ("bpy.types.greasepencil.curve_edit_corner_angle*", "grease_pencil/modes/edit/curve_editing.html#bpy-types-greasepencil-curve-edit-corner-angle"), ("bpy.types.lineartgpencilmodifier.source_camera*", "grease_pencil/modifiers/generate/line_art.html#bpy-types-lineartgpencilmodifier-source-camera"), ("bpy.types.lineartgpencilmodifier.use_face_mark*", "grease_pencil/modifiers/generate/line_art.html#bpy-types-lineartgpencilmodifier-use-face-mark"), @@ -405,7 +403,6 @@ url_manual_mapping = ( ("bpy.types.brushgpencilsettings.use_fill_limit*", "grease_pencil/modes/draw/tools/fill.html#bpy-types-brushgpencilsettings-use-fill-limit"), ("bpy.types.clothsettings.vertex_group_pressure*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-vertex-group-pressure"), ("bpy.types.cyclesmaterialsettings.displacement*", "render/cycles/material_settings.html#bpy-types-cyclesmaterialsettings-displacement"), - ("bpy.types.cyclesrendersettings.debug_bvh_type*", "render/cycles/render_settings/debug.html#bpy-types-cyclesrendersettings-debug-bvh-type"), ("bpy.types.cyclesrendersettings.fast_gi_method*", "render/cycles/render_settings/light_paths.html#bpy-types-cyclesrendersettings-fast-gi-method"), ("bpy.types.cyclesrendersettings.glossy_bounces*", "render/cycles/render_settings/light_paths.html#bpy-types-cyclesrendersettings-glossy-bounces"), ("bpy.types.cyclesrendersettings.volume_bounces*", "render/cycles/render_settings/light_paths.html#bpy-types-cyclesrendersettings-volume-bounces"), @@ -458,6 +455,7 @@ url_manual_mapping = ( ("bpy.types.cyclescamerasettings.panorama_type*", "render/cycles/object_settings/cameras.html#bpy-types-cyclescamerasettings-panorama-type"), ("bpy.types.cyclesrendersettings.dicing_camera*", "render/cycles/render_settings/subdivision.html#bpy-types-cyclesrendersettings-dicing-camera"), ("bpy.types.cyclesrendersettings.film_exposure*", "render/cycles/render_settings/film.html#bpy-types-cyclesrendersettings-film-exposure"), + ("bpy.types.cyclesrendersettings.sample_offset*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-sample-offset"), ("bpy.types.cyclesrendersettings.texture_limit*", "render/cycles/render_settings/simplify.html#bpy-types-cyclesrendersettings-texture-limit"), ("bpy.types.cyclesrendersettings.use_denoising*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-use-denoising"), ("bpy.types.editbone.bbone_custom_handle_start*", "animation/armatures/bones/properties/bendy_bones.html#bpy-types-editbone-bbone-custom-handle-start"), @@ -483,6 +481,8 @@ url_manual_mapping = ( ("bpy.types.freestylelinestyle.use_dashed_line*", "render/freestyle/view_layer/line_style/strokes.html#bpy-types-freestylelinestyle-use-dashed-line"), ("bpy.types.freestylelinestyle.use_same_object*", "render/freestyle/view_layer/line_style/strokes.html#bpy-types-freestylelinestyle-use-same-object"), ("bpy.types.functionnodeinputspecialcharacters*", "modeling/geometry_nodes/text/special_characters.html#bpy-types-functionnodeinputspecialcharacters"), + ("bpy.types.geometrynodeinputmeshedgeneighbors*", "modeling/geometry_nodes/mesh/edge_neighbors.html#bpy-types-geometrynodeinputmeshedgeneighbors"), + ("bpy.types.geometrynodeinputmeshfaceneighbors*", "modeling/geometry_nodes/mesh/face_neighbors.html#bpy-types-geometrynodeinputmeshfaceneighbors"), ("bpy.types.gpencilsculptguide.reference_point*", "grease_pencil/modes/draw/guides.html#bpy-types-gpencilsculptguide-reference-point"), ("bpy.types.greasepencil.edit_curve_resolution*", "grease_pencil/modes/edit/curve_editing.html#bpy-types-greasepencil-edit-curve-resolution"), ("bpy.types.linestylegeometrymodifier_2doffset*", "render/freestyle/view_layer/line_style/modifiers/geometry/2d_offset.html#bpy-types-linestylegeometrymodifier-2doffset"), @@ -495,6 +495,7 @@ url_manual_mapping = ( ("bpy.types.sequencertimelineoverlay.show_grid*", "editors/video_sequencer/sequencer/display.html#bpy-types-sequencertimelineoverlay-show-grid"), ("bpy.types.sequencertoolsettings.overlap_mode*", "video_editing/sequencer/editing.html#bpy-types-sequencertoolsettings-overlap-mode"), ("bpy.types.spaceclipeditor.show_green_channel*", "editors/clip/display/clip_display.html#bpy-types-spaceclipeditor-show-green-channel"), + ("bpy.types.spacenodeoverlay.show_context_path*", "interface/controls/nodes/introduction.html#bpy-types-spacenodeoverlay-show-context-path"), ("bpy.types.spaceoutliner.show_restrict_column*", "editors/outliner/interface.html#bpy-types-spaceoutliner-show-restrict-column"), ("bpy.types.spacespreadsheet.object_eval_state*", "editors/spreadsheet.html#bpy-types-spacespreadsheet-object-eval-state"), ("bpy.types.spaceuveditor.display_stretch_type*", "editors/uv/overlays.html#bpy-types-spaceuveditor-display-stretch-type"), @@ -522,6 +523,7 @@ url_manual_mapping = ( ("bpy.types.freestylelineset.select_edge_mark*", "render/freestyle/view_layer/line_set.html#bpy-types-freestylelineset-select-edge-mark"), ("bpy.types.freestylelinestyle.use_length_max*", "render/freestyle/view_layer/line_style/strokes.html#bpy-types-freestylelinestyle-use-length-max"), ("bpy.types.freestylelinestyle.use_length_min*", "render/freestyle/view_layer/line_style/strokes.html#bpy-types-freestylelinestyle-use-length-min"), + ("bpy.types.geometrynodeinputmeshedgevertices*", "modeling/geometry_nodes/mesh/edge_vertices.html#bpy-types-geometrynodeinputmeshedgevertices"), ("bpy.types.geometrynodeinputsplineresolution*", "modeling/geometry_nodes/curve/spline_resolution.html#bpy-types-geometrynodeinputsplineresolution"), ("bpy.types.greasepencil.curve_edit_threshold*", "grease_pencil/modes/edit/curve_editing.html#bpy-types-greasepencil-curve-edit-threshold"), ("bpy.types.materialgpencilstyle.stroke_style*", "grease_pencil/materials/properties.html#bpy-types-materialgpencilstyle-stroke-style"), @@ -617,6 +619,7 @@ url_manual_mapping = ( ("bpy.types.brush.surface_smooth_iterations*", "sculpt_paint/sculpting/tools/smooth.html#bpy-types-brush-surface-smooth-iterations"), ("bpy.types.brushgpencilsettings.pen_jitter*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-pen-jitter"), ("bpy.types.brushgpencilsettings.show_lasso*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-show-lasso"), + ("bpy.types.compositornodeconvertcolorspace*", "compositing/types/converter/color_space.html#bpy-types-compositornodeconvertcolorspace"), ("bpy.types.cyclescurverendersettings.shape*", "render/cycles/render_settings/hair.html#bpy-types-cyclescurverendersettings-shape"), ("bpy.types.cyclesrendersettings.ao_bounces*", "render/cycles/render_settings/light_paths.html#bpy-types-cyclesrendersettings-ao-bounces"), ("bpy.types.cyclesrendersettings.time_limit*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-time-limit"), @@ -713,7 +716,9 @@ url_manual_mapping = ( ("bpy.types.geometrynodealigneulertovector*", "modeling/geometry_nodes/utilities/align_euler_to_vector.html#bpy-types-geometrynodealigneulertovector"), ("bpy.types.geometrynodeattributestatistic*", "modeling/geometry_nodes/attribute/attribute_statistic.html#bpy-types-geometrynodeattributestatistic"), ("bpy.types.geometrynodecurvequadrilateral*", "modeling/geometry_nodes/curve_primitives/quadrilateral.html#bpy-types-geometrynodecurvequadrilateral"), + ("bpy.types.geometrynodegeometrytoinstance*", "modeling/geometry_nodes/geometry/geometry_to_instance.html#bpy-types-geometrynodegeometrytoinstance"), ("bpy.types.geometrynodeinputmaterialindex*", "modeling/geometry_nodes/material/material_index.html#bpy-types-geometrynodeinputmaterialindex"), + ("bpy.types.geometrynodeinputmeshedgeangle*", "modeling/geometry_nodes/mesh/edge_angle.html#bpy-types-geometrynodeinputmeshedgeangle"), ("bpy.types.geometrynodeseparatecomponents*", "modeling/geometry_nodes/geometry/separate_components.html#bpy-types-geometrynodeseparatecomponents"), ("bpy.types.geometrynodesubdivisionsurface*", "modeling/geometry_nodes/mesh/subdivision_surface.html#bpy-types-geometrynodesubdivisionsurface"), ("bpy.types.geometrynodetranslateinstances*", "modeling/geometry_nodes/instances/translate_instances.html#bpy-types-geometrynodetranslateinstances"), @@ -793,6 +798,7 @@ url_manual_mapping = ( ("bpy.types.freestylesettings.use_culling*", "render/freestyle/view_layer/freestyle.html#bpy-types-freestylesettings-use-culling"), ("bpy.types.geometrynodeendpointselection*", "modeling/geometry_nodes/curve/endpoint_selection.html#bpy-types-geometrynodeendpointselection"), ("bpy.types.geometrynodegeometryproximity*", "modeling/geometry_nodes/geometry/geometry_proximity.html#bpy-types-geometrynodegeometryproximity"), + ("bpy.types.geometrynodeinputmeshfacearea*", "modeling/geometry_nodes/mesh/face_area.html#bpy-types-geometrynodeinputmeshfacearea"), ("bpy.types.geometrynodeinputsplinecyclic*", "modeling/geometry_nodes/curve/is_spline_cyclic.html#bpy-types-geometrynodeinputsplinecyclic"), ("bpy.types.geometrynodeinstancestopoints*", "modeling/geometry_nodes/instances/instances_to_points.html#bpy-types-geometrynodeinstancestopoints"), ("bpy.types.geometrynodetransferattribute*", "modeling/geometry_nodes/attribute/transfer_attribute.html#bpy-types-geometrynodetransferattribute"), @@ -822,6 +828,7 @@ url_manual_mapping = ( ("bpy.types.toolsettings.mesh_select_mode*", "modeling/meshes/selecting/introduction.html#bpy-types-toolsettings-mesh-select-mode"), ("bpy.types.toolsettings.use_snap_project*", "editors/3dview/controls/snapping.html#bpy-types-toolsettings-use-snap-project"), ("bpy.types.transformorientationslot.type*", "editors/3dview/controls/orientation.html#bpy-types-transformorientationslot-type"), + ("bpy.types.unitsettings.temperature_unit*", "scene_layout/scene/properties.html#bpy-types-unitsettings-temperature-unit"), ("bpy.types.vertexweightproximitymodifier*", "modeling/modifiers/modify/weight_proximity.html#bpy-types-vertexweightproximitymodifier"), ("bpy.types.view3doverlay.show_wireframes*", "editors/3dview/display/overlays.html#bpy-types-view3doverlay-show-wireframes"), ("bpy.types.view3dshading.background_type*", "editors/3dview/display/shading.html#bpy-types-view3dshading-background-type"), @@ -879,6 +886,7 @@ url_manual_mapping = ( ("bpy.types.spacetexteditor.use_find_all*", "editors/text_editor.html#bpy-types-spacetexteditor-use-find-all"), ("bpy.types.toolsettings.snap_uv_element*", "editors/uv/controls/snapping.html#bpy-types-toolsettings-snap-uv-element"), ("bpy.types.toolsettings.use_snap_rotate*", "editors/3dview/controls/snapping.html#bpy-types-toolsettings-use-snap-rotate"), + ("bpy.types.unitsettings.system_rotation*", "scene_layout/scene/properties.html#bpy-types-unitsettings-system-rotation"), ("bpy.types.view3doverlay.display_handle*", "editors/3dview/display/overlays.html#bpy-types-view3doverlay-display-handle"), ("bpy.types.volumedisplay.wireframe_type*", "modeling/volumes/properties.html#bpy-types-volumedisplay-wireframe-type"), ("bpy.ops.anim.channels_editable_toggle*", "editors/graph_editor/channels.html#bpy-ops-anim-channels-editable-toggle"), @@ -923,11 +931,15 @@ url_manual_mapping = ( ("bpy.types.freestylelineset.visibility*", "render/freestyle/view_layer/line_set.html#bpy-types-freestylelineset-visibility"), ("bpy.types.freestylelinestyle.chaining*", "render/freestyle/view_layer/line_style/strokes.html#bpy-types-freestylelinestyle-chaining"), ("bpy.types.freestylelinestyle.sort_key*", "render/freestyle/view_layer/line_style/strokes.html#bpy-types-freestylelinestyle-sort-key"), + ("bpy.types.geometrynodeaccumulatefield*", "modeling/geometry_nodes/utilities/accumulate_field.html#bpy-types-geometrynodeaccumulatefield"), ("bpy.types.geometrynodecurvesethandles*", "modeling/geometry_nodes/curve/set_handle_type.html#bpy-types-geometrynodecurvesethandles"), ("bpy.types.geometrynodecurvesplinetype*", "modeling/geometry_nodes/curve/set_spline_type.html#bpy-types-geometrynodecurvesplinetype"), + ("bpy.types.geometrynodeinputmeshisland*", "modeling/geometry_nodes/mesh/mesh_island.html#bpy-types-geometrynodeinputmeshisland"), + ("bpy.types.geometrynodemergebydistance*", "modeling/geometry_nodes/geometry/merge_by_distance.html#bpy-types-geometrynodemergebydistance"), ("bpy.types.geometrynodereplacematerial*", "modeling/geometry_nodes/material/replace_material.html#bpy-types-geometrynodereplacematerial"), ("bpy.types.geometrynoderotateinstances*", "modeling/geometry_nodes/instances/rotate_instances.html#bpy-types-geometrynoderotateinstances"), ("bpy.types.geometrynodesetsplinecyclic*", "modeling/geometry_nodes/curve/set_spline_cyclic.html#bpy-types-geometrynodesetsplinecyclic"), + ("bpy.types.geometrynodesplineparameter*", "modeling/geometry_nodes/curve/spline_parameter.html#bpy-types-geometrynodesplineparameter"), ("bpy.types.gpencillayer.use_mask_layer*", "grease_pencil/properties/layers.html#bpy-types-gpencillayer-use-mask-layer"), ("bpy.types.greasepencil.use_curve_edit*", "grease_pencil/modes/edit/curve_editing.html#bpy-types-greasepencil-use-curve-edit"), ("bpy.types.imagepaint.screen_grab_size*", "sculpt_paint/texture_paint/tool_settings/options.html#bpy-types-imagepaint-screen-grab-size"), @@ -997,9 +1009,9 @@ url_manual_mapping = ( ("bpy.types.fluidflowsettings.use_flow*", "physics/fluid/type/flow.html#bpy-types-fluidflowsettings-use-flow"), ("bpy.types.fmodifierfunctiongenerator*", "editors/graph_editor/fcurves/modifiers.html#bpy-types-fmodifierfunctiongenerator"), ("bpy.types.geometrynodecollectioninfo*", "modeling/geometry_nodes/input/collection_info.html#bpy-types-geometrynodecollectioninfo"), - ("bpy.types.geometrynodecurveparameter*", "modeling/geometry_nodes/curve/curve_parameter.html#bpy-types-geometrynodecurveparameter"), ("bpy.types.geometrynodedeletegeometry*", "modeling/geometry_nodes/geometry/delete_geometry.html#bpy-types-geometrynodedeletegeometry"), ("bpy.types.geometrynodeinputcurvetilt*", "modeling/geometry_nodes/curve/curve_tilt.html#bpy-types-geometrynodeinputcurvetilt"), + ("bpy.types.geometrynodeinputscenetime*", "modeling/geometry_nodes/input/scene_time.html#bpy-types-geometrynodeinputscenetime"), ("bpy.types.geometrynodepointstovolume*", "modeling/geometry_nodes/point/points_to_volume.html#bpy-types-geometrynodepointstovolume"), ("bpy.types.geometrynodescaleinstances*", "modeling/geometry_nodes/instances/scale_instances.html#bpy-types-geometrynodescaleinstances"), ("bpy.types.geometrynodesetcurveradius*", "modeling/geometry_nodes/curve/set_curve_radius.html#bpy-types-geometrynodesetcurveradius"), @@ -1079,7 +1091,6 @@ url_manual_mapping = ( ("bpy.types.fluidflowsettings.density*", "physics/fluid/type/flow.html#bpy-types-fluidflowsettings-density"), ("bpy.types.freestylelineset.qi_start*", "render/freestyle/view_layer/line_set.html#bpy-types-freestylelineset-qi-start"), ("bpy.types.freestylelinestyle.rounds*", "render/freestyle/view_layer/line_style/strokes.html#bpy-types-freestylelinestyle-rounds"), - ("bpy.types.functionnodecomparefloats*", "modeling/geometry_nodes/utilities/compare_floats.html#bpy-types-functionnodecomparefloats"), ("bpy.types.geometrynodecurvetopoints*", "modeling/geometry_nodes/curve/curve_to_points.html#bpy-types-geometrynodecurvetopoints"), ("bpy.types.geometrynodeinputmaterial*", "modeling/geometry_nodes/input/material.html#bpy-types-geometrynodeinputmaterial"), ("bpy.types.geometrynodeinputposition*", "modeling/geometry_nodes/input/position.html#bpy-types-geometrynodeinputposition"), @@ -1087,6 +1098,7 @@ url_manual_mapping = ( ("bpy.types.geometrynodemeshicosphere*", "modeling/geometry_nodes/mesh_primitives/icosphere.html#bpy-types-geometrynodemeshicosphere"), ("bpy.types.geometrynodereplacestring*", "modeling/geometry_nodes/text/replace_string.html#bpy-types-geometrynodereplacestring"), ("bpy.types.geometrynoderesamplecurve*", "modeling/geometry_nodes/curve/resample_curve.html#bpy-types-geometrynoderesamplecurve"), + ("bpy.types.geometrynodescaleelements*", "modeling/geometry_nodes/mesh/scale_elements.html#bpy-types-geometrynodescaleelements"), ("bpy.types.geometrynodesubdividemesh*", "modeling/geometry_nodes/mesh/subdivide_mesh.html#bpy-types-geometrynodesubdividemesh"), ("bpy.types.geometrynodevaluetostring*", "modeling/geometry_nodes/text/value_to_string.html#bpy-types-geometrynodevaluetostring"), ("bpy.types.keyframe.handle_left_type*", "editors/graph_editor/fcurves/properties.html#bpy-types-keyframe-handle-left-type"), @@ -1110,6 +1122,7 @@ url_manual_mapping = ( ("bpy.types.shadernodebsdftranslucent*", "render/shader_nodes/shader/translucent.html#bpy-types-shadernodebsdftranslucent"), ("bpy.types.shadernodebsdftransparent*", "render/shader_nodes/shader/transparent.html#bpy-types-shadernodebsdftransparent"), ("bpy.types.shadernodevectortransform*", "render/shader_nodes/vector/transform.html#bpy-types-shadernodevectortransform"), + ("bpy.types.shrinkwrapgpencilmodifier*", "grease_pencil/modifiers/deform/shrinkwrap.html#bpy-types-shrinkwrapgpencilmodifier"), ("bpy.types.spaceclipeditor.show_grid*", "editors/clip/display/clip_display.html#bpy-types-spaceclipeditor-show-grid"), ("bpy.types.spaceoutliner.filter_text*", "editors/outliner/interface.html#bpy-types-spaceoutliner-filter-text"), ("bpy.types.spacetexteditor.find_text*", "editors/text_editor.html#bpy-types-spacetexteditor-find-text"), @@ -1118,6 +1131,8 @@ url_manual_mapping = ( ("bpy.types.spaceuveditor.lock_bounds*", "modeling/meshes/uv/editing.html#bpy-types-spaceuveditor-lock-bounds"), ("bpy.types.spline.tilt_interpolation*", "modeling/curves/properties/active_spline.html#bpy-types-spline-tilt-interpolation"), ("bpy.types.transformorientation.name*", "editors/3dview/controls/orientation.html#bpy-types-transformorientation-name"), + ("bpy.types.unitsettings.scale_length*", "scene_layout/scene/properties.html#bpy-types-unitsettings-scale-length"), + ("bpy.types.unitsettings.use_separate*", "scene_layout/scene/properties.html#bpy-types-unitsettings-use-separate"), ("bpy.types.viewlayer.use_motion_blur*", "render/layers/introduction.html#bpy-types-viewlayer-use-motion-blur"), ("bpy.types.volumedisplay.slice_depth*", "modeling/volumes/properties.html#bpy-types-volumedisplay-slice-depth"), ("bpy.types.worldmistsettings.falloff*", "render/cycles/world_settings.html#bpy-types-worldmistsettings-falloff"), @@ -1150,13 +1165,14 @@ url_manual_mapping = ( ("bpy.ops.wm.previews_batch_generate*", "files/blend/previews.html#bpy-ops-wm-previews-batch-generate"), ("bpy.types.assetmetadata.active_tag*", "editors/asset_browser.html#bpy-types-assetmetadata-active-tag"), ("bpy.types.bakesettings.cage_object*", "render/cycles/baking.html#bpy-types-bakesettings-cage-object"), + ("bpy.types.bakesettings.margin_type*", "render/cycles/baking.html#bpy-types-bakesettings-margin-type"), ("bpy.types.bone.use_relative_parent*", "animation/armatures/bones/properties/relations.html#bpy-types-bone-use-relative-parent"), ("bpy.types.brush.auto_smooth_factor*", "sculpt_paint/sculpting/tool_settings/brush_settings.html#bpy-types-brush-auto-smooth-factor"), ("bpy.types.brush.smooth_deform_type*", "sculpt_paint/sculpting/tools/smooth.html#bpy-types-brush-smooth-deform-type"), ("bpy.types.brush.use_connected_only*", "sculpt_paint/sculpting/tools/pose.html#bpy-types-brush-use-connected-only"), ("bpy.types.brush.use_cursor_overlay*", "sculpt_paint/brush/cursor.html#bpy-types-brush-use-cursor-overlay"), ("bpy.types.camera.show_passepartout*", "render/cameras.html#bpy-types-camera-show-passepartout"), - ("bpy.types.collection.lineart_usage*", "scene_layout/collections/properties.html#bpy-types-collection-lineart-usage"), + ("bpy.types.collection.lineart_usage*", "scene_layout/collections/collections.html#bpy-types-collection-lineart-usage"), ("bpy.types.colormanagedviewsettings*", "render/color_management.html#bpy-types-colormanagedviewsettings"), ("bpy.types.compositornodebokehimage*", "compositing/types/input/bokeh_image.html#bpy-types-compositornodebokehimage"), ("bpy.types.compositornodecolormatte*", "compositing/types/matte/color_key.html#bpy-types-compositornodecolormatte"), @@ -1172,6 +1188,7 @@ url_manual_mapping = ( ("bpy.types.freestylelineset.exclude*", "render/freestyle/view_layer/line_set.html#bpy-types-freestylelineset-exclude"), ("bpy.types.freestylelinestyle.alpha*", "render/freestyle/view_layer/line_style/alpha.html#bpy-types-freestylelinestyle-alpha"), ("bpy.types.freestylelinestyle.color*", "render/freestyle/view_layer/line_style/color.html#bpy-types-freestylelinestyle-color"), + ("bpy.types.geometrynodefieldatindex*", "modeling/geometry_nodes/utilities/field_at_index.html#bpy-types-geometrynodefieldatindex"), ("bpy.types.geometrynodeinputtangent*", "modeling/geometry_nodes/curve/curve_tangent.html#bpy-types-geometrynodeinputtangent"), ("bpy.types.geometrynodejoingeometry*", "modeling/geometry_nodes/geometry/join_geometry.html#bpy-types-geometrynodejoingeometry"), ("bpy.types.geometrynodemeshcylinder*", "modeling/geometry_nodes/mesh_primitives/cylinder.html#bpy-types-geometrynodemeshcylinder"), @@ -1207,6 +1224,7 @@ url_manual_mapping = ( ("bpy.types.thicknessgpencilmodifier*", "grease_pencil/modifiers/deform/thickness.html#bpy-types-thicknessgpencilmodifier"), ("bpy.types.toolsettings.snap_target*", "editors/3dview/controls/snapping.html#bpy-types-toolsettings-snap-target"), ("bpy.types.transformcacheconstraint*", "animation/constraints/transform/transform_cache.html#bpy-types-transformcacheconstraint"), + ("bpy.types.unitsettings.length_unit*", "scene_layout/scene/properties.html#bpy-types-unitsettings-length-unit"), ("bpy.types.vertexweighteditmodifier*", "modeling/modifiers/modify/weight_edit.html#bpy-types-vertexweighteditmodifier"), ("bpy.types.volumedisplay.slice_axis*", "modeling/volumes/properties.html#bpy-types-volumedisplay-slice-axis"), ("bpy.ops.anim.channels_clean_empty*", "editors/nla/editing.html#bpy-ops-anim-channels-clean-empty"), @@ -1229,7 +1247,7 @@ url_manual_mapping = ( ("bpy.ops.object.vertex_group_clean*", "sculpt_paint/weight_paint/editing.html#bpy-ops-object-vertex-group-clean"), ("bpy.ops.poselib.create_pose_asset*", "animation/armatures/posing/editing/pose_library.html#bpy-ops-poselib-create-pose-asset"), ("bpy.ops.preferences.theme_install*", "editors/preferences/themes.html#bpy-ops-preferences-theme-install"), - ("bpy.ops.render.play-rendered-anim*", "render/output/animation_player.html#bpy-ops-render-play-rendered-anim"), + ("bpy.ops.render.play_rendered_anim*", "render/output/animation_player.html#bpy-ops-render-play-rendered-anim"), ("bpy.ops.sculpt.set_pivot_position*", "sculpt_paint/sculpting/editing/sculpt.html#bpy-ops-sculpt-set-pivot-position"), ("bpy.ops.sequencer.image_strip_add*", "video_editing/sequencer/strips/image.html#bpy-ops-sequencer-image-strip-add"), ("bpy.ops.sequencer.movie_strip_add*", "video_editing/sequencer/strips/movie.html#bpy-ops-sequencer-movie-strip-add"), @@ -1253,6 +1271,7 @@ url_manual_mapping = ( ("bpy.types.compositornodemovieclip*", "compositing/types/input/movie_clip.html#bpy-types-compositornodemovieclip"), ("bpy.types.compositornodenormalize*", "compositing/types/vector/normalize.html#bpy-types-compositornodenormalize"), ("bpy.types.compositornodepremulkey*", "compositing/types/converter/alpha_convert.html#bpy-types-compositornodepremulkey"), + ("bpy.types.compositornodescenetime*", "compositing/types/input/scene_time.html#bpy-types-compositornodescenetime"), ("bpy.types.compositornodestabilize*", "compositing/types/distort/stabilize_2d.html#bpy-types-compositornodestabilize"), ("bpy.types.compositornodetransform*", "compositing/types/distort/transform.html#bpy-types-compositornodetransform"), ("bpy.types.compositornodetranslate*", "compositing/types/distort/translate.html#bpy-types-compositornodetranslate"), @@ -1273,6 +1292,7 @@ url_manual_mapping = ( ("bpy.types.geometrynodecurvelength*", "modeling/geometry_nodes/curve/curve_length.html#bpy-types-geometrynodecurvelength"), ("bpy.types.geometrynodecurvespiral*", "modeling/geometry_nodes/curve_primitives/curve_spiral.html#bpy-types-geometrynodecurvespiral"), ("bpy.types.geometrynodecurvetomesh*", "modeling/geometry_nodes/curve/curve_to_mesh.html#bpy-types-geometrynodecurvetomesh"), + ("bpy.types.geometrynodeextrudemesh*", "modeling/geometry_nodes/mesh/extrude_mesh.html#bpy-types-geometrynodeextrudemesh"), ("bpy.types.geometrynodefilletcurve*", "modeling/geometry_nodes/curve/fillet_curve.html#bpy-types-geometrynodefilletcurve"), ("bpy.types.geometrynodeinputnormal*", "modeling/geometry_nodes/input/normal.html#bpy-types-geometrynodeinputnormal"), ("bpy.types.geometrynodeinputradius*", "modeling/geometry_nodes/input/radius.html#bpy-types-geometrynodeinputradius"), @@ -1332,6 +1352,7 @@ url_manual_mapping = ( ("bpy.ops.mesh.primitive_plane_add*", "modeling/meshes/primitives.html#bpy-ops-mesh-primitive-plane-add"), ("bpy.ops.mesh.primitive_torus_add*", "modeling/meshes/primitives.html#bpy-ops-mesh-primitive-torus-add"), ("bpy.ops.mesh.select_non_manifold*", "modeling/meshes/selecting/all_by_trait.html#bpy-ops-mesh-select-non-manifold"), + ("bpy.ops.object.attribute_convert*", "modeling/geometry_nodes/attributes_reference.html#bpy-ops-object-attribute-convert"), ("bpy.ops.object.constraints_clear*", "animation/constraints/interface/adding_removing.html#bpy-ops-object-constraints-clear"), ("bpy.ops.object.quadriflow_remesh*", "modeling/meshes/retopology.html#bpy-ops-object-quadriflow-remesh"), ("bpy.ops.object.vertex_group_copy*", "modeling/meshes/properties/vertex_groups/vertex_groups.html#bpy-ops-object-vertex-group-copy"), @@ -1388,6 +1409,7 @@ url_manual_mapping = ( ("bpy.types.freestylelinestyle.gap*", "render/freestyle/view_layer/line_style/strokes.html#bpy-types-freestylelinestyle-gap"), ("bpy.types.freestylesettings.mode*", "render/freestyle/view_layer/freestyle.html#bpy-types-freestylesettings-mode"), ("bpy.types.geometrynodeconvexhull*", "modeling/geometry_nodes/geometry/convex_hull.html#bpy-types-geometrynodeconvexhull"), + ("bpy.types.geometrynodedomainsize*", "modeling/geometry_nodes/attribute/domain_size.html#bpy-types-geometrynodedomainsize"), ("bpy.types.geometrynodefloattoint*", "modeling/geometry_nodes/utilities/float_to_integer.html#bpy-types-geometrynodefloattoint"), ("bpy.types.geometrynodeinputcolor*", "modeling/geometry_nodes/input/color.html#bpy-types-geometrynodeinputcolor"), ("bpy.types.geometrynodeinputindex*", "modeling/geometry_nodes/input/input_index.html#bpy-types-geometrynodeinputindex"), @@ -1418,6 +1440,8 @@ url_manual_mapping = ( ("bpy.types.sound.use_memory_cache*", "video_editing/sequencer/sidebar/strip.html#bpy-types-sound-use-memory-cache"), ("bpy.types.spaceview3d.show_gizmo*", "editors/3dview/display/gizmo.html#bpy-types-spaceview3d-show-gizmo"), ("bpy.types.texturegpencilmodifier*", "grease_pencil/modifiers/modify/texture_mapping.html#bpy-types-texturegpencilmodifier"), + ("bpy.types.unitsettings.mass_unit*", "scene_layout/scene/properties.html#bpy-types-unitsettings-mass-unit"), + ("bpy.types.unitsettings.time_unit*", "scene_layout/scene/properties.html#bpy-types-unitsettings-time-unit"), ("bpy.types.volumedisplacemodifier*", "modeling/modifiers/deform/volume_displace.html#bpy-types-volumedisplacemodifier"), ("bpy.types.volumerender.step_size*", "modeling/volumes/properties.html#bpy-types-volumerender-step-size"), ("bpy.types.weightednormalmodifier*", "modeling/modifiers/modify/weighted_normal.html#bpy-types-weightednormalmodifier"), @@ -1435,6 +1459,7 @@ url_manual_mapping = ( ("bpy.ops.gpencil.stroke_caps_set*", "grease_pencil/modes/edit/stroke_menu.html#bpy-ops-gpencil-stroke-caps-set"), ("bpy.ops.gpencil.stroke_separate*", "grease_pencil/modes/edit/grease_pencil_menu.html#bpy-ops-gpencil-stroke-separate"), ("bpy.ops.gpencil.stroke_simplify*", "grease_pencil/modes/edit/stroke_menu.html#bpy-ops-gpencil-stroke-simplify"), + ("bpy.ops.graph.blend_to_neighbor*", "editors/graph_editor/fcurves/editing.html#bpy-ops-graph-blend-to-neighbor"), ("bpy.ops.graph.snap_cursor_value*", "editors/graph_editor/fcurves/editing.html#bpy-ops-graph-snap-cursor-value"), ("bpy.ops.image.save_all_modified*", "editors/image/editing.html#bpy-ops-image-save-all-modified"), ("bpy.ops.mesh.extrude_edges_move*", "modeling/meshes/editing/edge/extrude_edges.html#bpy-ops-mesh-extrude-edges-move"), @@ -1447,6 +1472,7 @@ url_manual_mapping = ( ("bpy.ops.mesh.subdivide_edgering*", "modeling/meshes/editing/edge/subdivide_edge_ring.html#bpy-ops-mesh-subdivide-edgering"), ("bpy.ops.node.hide_socket_toggle*", "interface/controls/nodes/editing.html#bpy-ops-node-hide-socket-toggle"), ("bpy.ops.node.tree_socket_remove*", "interface/controls/nodes/groups.html#bpy-ops-node-tree-socket-remove"), + ("bpy.ops.object.attribute_remove*", "modeling/geometry_nodes/attributes_reference.html#bpy-ops-object-attribute-remove"), ("bpy.ops.object.constraints_copy*", "animation/constraints/interface/adding_removing.html#bpy-ops-object-constraints-copy"), ("bpy.ops.object.gpencil_modifier*", "grease_pencil/modifiers/index.html#bpy-ops-object-gpencil-modifier"), ("bpy.ops.object.make_links_scene*", "scene_layout/object/editing/link_transfer/link_scene.html#bpy-ops-object-make-links-scene"), @@ -1509,6 +1535,7 @@ url_manual_mapping = ( ("bpy.types.geometrynodecurvestar*", "modeling/geometry_nodes/curve_primitives/star.html#bpy-types-geometrynodecurvestar"), ("bpy.types.geometrynodeedgesplit*", "modeling/geometry_nodes/mesh/split_edges.html#bpy-types-geometrynodeedgesplit"), ("bpy.types.geometrynodefillcurve*", "modeling/geometry_nodes/curve/fill_curve.html#bpy-types-geometrynodefillcurve"), + ("bpy.types.geometrynodeflipfaces*", "modeling/geometry_nodes/mesh/flip_faces.html#bpy-types-geometrynodeflipfaces"), ("bpy.types.geometrynodetransform*", "modeling/geometry_nodes/geometry/transform.html#bpy-types-geometrynodetransform"), ("bpy.types.geometrynodetrimcurve*", "modeling/geometry_nodes/curve/trim_curve.html#bpy-types-geometrynodetrimcurve"), ("bpy.types.gpencilsculptsettings*", "grease_pencil/properties/index.html#bpy-types-gpencilsculptsettings"), @@ -1552,6 +1579,7 @@ url_manual_mapping = ( ("bpy.ops.curve.switch_direction*", "modeling/curves/editing/segments.html#bpy-ops-curve-switch-direction"), ("bpy.ops.gpencil.duplicate_move*", "grease_pencil/modes/edit/grease_pencil_menu.html#bpy-ops-gpencil-duplicate-move"), ("bpy.ops.gpencil.stroke_arrange*", "grease_pencil/modes/edit/stroke_menu.html#bpy-ops-gpencil-stroke-arrange"), + ("bpy.ops.graph.equalize_handles*", "editors/graph_editor/fcurves/editing.html#bpy-ops-graph-equalize-handles"), ("bpy.ops.mesh.bridge-edge-loops*", "modeling/meshes/editing/edge/bridge_edge_loops.html#bpy-ops-mesh-bridge-edge-loops"), ("bpy.ops.mesh.intersect_boolean*", "modeling/meshes/editing/face/intersect_boolean.html#bpy-ops-mesh-intersect-boolean"), ("bpy.ops.mesh.loop_multi_select*", "modeling/meshes/selecting/loops.html#bpy-ops-mesh-loop-multi-select"), @@ -1616,6 +1644,7 @@ url_manual_mapping = ( ("bpy.types.motionpath.frame_end*", "animation/motion_paths.html#bpy-types-motionpath-frame-end"), ("bpy.types.noisegpencilmodifier*", "grease_pencil/modifiers/deform/noise.html#bpy-types-noisegpencilmodifier"), ("bpy.types.object.hide_viewport*", "scene_layout/object/properties/visibility.html#bpy-types-object-hide-viewport"), + ("bpy.types.object.rotation_mode*", "scene_layout/object/properties/transforms.html#bpy-types-object-rotation-mode"), ("bpy.types.object.show_in_front*", "scene_layout/object/properties/display.html#bpy-types-object-show-in-front"), ("bpy.types.posebone.rigify_type*", "addons/rigging/rigify/rig_types/index.html#bpy-types-posebone-rigify-type"), ("bpy.types.preferencesfilepaths*", "editors/preferences/file_paths.html#bpy-types-preferencesfilepaths"), @@ -1718,6 +1747,7 @@ url_manual_mapping = ( ("bpy.types.cyclesworldsettings*", "render/cycles/world_settings.html#bpy-types-cyclesworldsettings"), ("bpy.types.dashgpencilmodifier*", "grease_pencil/modifiers/generate/dash.html#bpy-types-dashgpencilmodifier"), ("bpy.types.fluiddomainsettings*", "physics/fluid/type/domain/index.html#bpy-types-fluiddomainsettings"), + ("bpy.types.functionnodecompare*", "modeling/geometry_nodes/utilities/compare.html#bpy-types-functionnodecompare"), ("bpy.types.geometrynodeboolean*", "modeling/geometry_nodes/input/boolean.html#bpy-types-geometrynodeboolean"), ("bpy.types.geometrynodeinputid*", "modeling/geometry_nodes/input/id.html#bpy-types-geometrynodeinputid"), ("bpy.types.geometrynodeinteger*", "modeling/geometry_nodes/input/integer.html#bpy-types-geometrynodeinteger"), @@ -1744,6 +1774,7 @@ url_manual_mapping = ( ("bpy.types.shadernodelightpath*", "render/shader_nodes/input/light_path.html#bpy-types-shadernodelightpath"), ("bpy.types.shadernodemixshader*", "render/shader_nodes/shader/mix.html#bpy-types-shadernodemixshader"), ("bpy.types.shadernodenormalmap*", "render/shader_nodes/vector/normal_map.html#bpy-types-shadernodenormalmap"), + ("bpy.types.shadernodepointinfo*", "render/shader_nodes/input/point_info.html#bpy-types-shadernodepointinfo"), ("bpy.types.shadernodewireframe*", "render/shader_nodes/input/wireframe.html#bpy-types-shadernodewireframe"), ("bpy.types.spacesequenceeditor*", "video_editing/index.html#bpy-types-spacesequenceeditor"), ("bpy.types.spline.resolution_u*", "modeling/curves/properties/active_spline.html#bpy-types-spline-resolution-u"), @@ -1756,6 +1787,7 @@ url_manual_mapping = ( ("bpy.types.tintgpencilmodifier*", "grease_pencil/modifiers/color/tint.html#bpy-types-tintgpencilmodifier"), ("bpy.types.transformconstraint*", "animation/constraints/transform/transformation.html#bpy-types-transformconstraint"), ("bpy.types.triangulatemodifier*", "modeling/modifiers/generate/triangulate.html#bpy-types-triangulatemodifier"), + ("bpy.types.unitsettings.system*", "scene_layout/scene/properties.html#bpy-types-unitsettings-system"), ("bpy.types.viewlayer.use_solid*", "render/layers/introduction.html#bpy-types-viewlayer-use-solid"), ("bpy.types.volume.frame_offset*", "modeling/volumes/properties.html#bpy-types-volume-frame-offset"), ("bpy.types.windowmanager.addon*", "editors/preferences/addons.html#bpy-types-windowmanager-addon"), @@ -1788,6 +1820,7 @@ url_manual_mapping = ( ("bpy.ops.node.node_copy_color*", "interface/controls/nodes/sidebar.html#bpy-ops-node-node-copy-color"), ("bpy.ops.node.read_viewlayers*", "interface/controls/nodes/editing.html#bpy-ops-node-read-viewlayers"), ("bpy.ops.node.tree_socket_add*", "interface/controls/nodes/groups.html#bpy-ops-node-tree-socket-add"), + ("bpy.ops.object.attribute_add*", "modeling/geometry_nodes/attributes_reference.html#bpy-ops-object-attribute-add"), ("bpy.ops.object.data_transfer*", "scene_layout/object/editing/link_transfer/transfer_mesh_data.html#bpy-ops-object-data-transfer"), ("bpy.ops.object.modifier_copy*", "modeling/modifiers/introduction.html#bpy-ops-object-modifier-copy"), ("bpy.ops.object.select_camera*", "scene_layout/object/selecting.html#bpy-ops-object-select-camera"), @@ -1819,12 +1852,12 @@ url_manual_mapping = ( ("bpy.types.armature.show_axes*", "animation/armatures/properties/display.html#bpy-types-armature-show-axes"), ("bpy.types.armatureconstraint*", "animation/constraints/relationship/armature.html#bpy-types-armatureconstraint"), ("bpy.types.compositornodeblur*", "compositing/types/filter/blur_node.html#bpy-types-compositornodeblur"), - ("bpy.types.compositornodecomb*", "editors/texture_node/types/color/combine_separate.html#bpy-types-compositornodecomb"), + ("bpy.types.compositornodecomb*", "compositing/types/converter/combine_separate.html#bpy-types-compositornodecomb"), ("bpy.types.compositornodecrop*", "compositing/types/distort/crop.html#bpy-types-compositornodecrop"), ("bpy.types.compositornodeflip*", "compositing/types/distort/flip.html#bpy-types-compositornodeflip"), ("bpy.types.compositornodemask*", "compositing/types/input/mask.html#bpy-types-compositornodemask"), ("bpy.types.compositornodemath*", "compositing/types/converter/math.html#bpy-types-compositornodemath"), - ("bpy.types.compositornodetime*", "compositing/types/input/time.html#bpy-types-compositornodetime"), + ("bpy.types.compositornodetime*", "compositing/types/input/time_curve.html#bpy-types-compositornodetime"), ("bpy.types.constraint.enabled*", "animation/constraints/interface/header.html#bpy-types-constraint-enabled"), ("bpy.types.curve.bevel_object*", "modeling/curves/properties/geometry.html#bpy-types-curve-bevel-object"), ("bpy.types.curve.resolution_u*", "modeling/curves/properties/shape.html#bpy-types-curve-resolution-u"), @@ -1860,7 +1893,6 @@ url_manual_mapping = ( ("bpy.types.shadernodeemission*", "render/shader_nodes/shader/emission.html#bpy-types-shadernodeemission"), ("bpy.types.shadernodegeometry*", "render/shader_nodes/input/geometry.html#bpy-types-shadernodegeometry"), ("bpy.types.shadernodehairinfo*", "render/shader_nodes/input/hair_info.html#bpy-types-shadernodehairinfo"), - ("bpy.types.shadernodepointinfo*", "render/shader_nodes/input/point_info.html#bpy-types-shadernodepointinfo"), ("bpy.types.shadernodemaprange*", "render/shader_nodes/converter/map_range.html#bpy-types-shadernodemaprange"), ("bpy.types.shadernodergbcurve*", "modeling/geometry_nodes/color/rgb_curves.html#bpy-types-shadernodergbcurve"), ("bpy.types.shadernodeseparate*", "render/shader_nodes/converter/combine_separate.html#bpy-types-shadernodeseparate"), @@ -1892,6 +1924,7 @@ url_manual_mapping = ( ("bpy.ops.curve.smooth_weight*", "modeling/curves/editing/control_points.html#bpy-ops-curve-smooth-weight"), ("bpy.ops.file.pack_libraries*", "files/blend/packed_data.html#bpy-ops-file-pack-libraries"), ("bpy.ops.font.change_spacing*", "modeling/texts/editing.html#bpy-ops-font-change-spacing"), + ("bpy.ops.gpencil.layer_merge*", "grease_pencil/properties/layers.html#bpy-ops-gpencil-layer-merge"), ("bpy.ops.gpencil.stroke_flip*", "grease_pencil/modes/edit/stroke_menu.html#bpy-ops-gpencil-stroke-flip"), ("bpy.ops.gpencil.stroke_join*", "grease_pencil/modes/edit/stroke_menu.html#bpy-ops-gpencil-stroke-join"), ("bpy.ops.gpencil.stroke_trim*", "grease_pencil/modes/edit/stroke_menu.html#bpy-ops-gpencil-stroke-trim"), @@ -1949,7 +1982,7 @@ url_manual_mapping = ( ("bpy.types.collisionmodifier*", "physics/collision.html#bpy-types-collisionmodifier"), ("bpy.types.collisionsettings*", "physics/collision.html#bpy-types-collisionsettings"), ("bpy.types.compositornodergb*", "compositing/types/input/rgb.html#bpy-types-compositornodergb"), - ("bpy.types.compositornodesep*", "editors/texture_node/types/color/combine_separate.html#bpy-types-compositornodesep"), + ("bpy.types.compositornodesep*", "compositing/types/converter/combine_separate.html#bpy-types-compositornodesep"), ("bpy.types.curve.bevel_depth*", "modeling/curves/properties/geometry.html#bpy-types-curve-bevel-depth"), ("bpy.types.curve.use_stretch*", "modeling/curves/properties/shape.html#bpy-types-curve-use-stretch"), ("bpy.types.edgesplitmodifier*", "modeling/modifiers/generate/edge_split.html#bpy-types-edgesplitmodifier"), @@ -2172,6 +2205,7 @@ url_manual_mapping = ( ("bpy.types.floorconstraint*", "animation/constraints/relationship/floor.html#bpy-types-floorconstraint"), ("bpy.types.fmodifiercycles*", "editors/graph_editor/fcurves/modifiers.html#bpy-types-fmodifiercycles"), ("bpy.types.fmodifierlimits*", "editors/graph_editor/fcurves/modifiers.html#bpy-types-fmodifierlimits"), + ("bpy.types.geometrynodearc*", "modeling/geometry_nodes/curve_primitives/arc.html#bpy-types-geometrynodearc"), ("bpy.types.imagepaint.mode*", "sculpt_paint/texture_paint/tool_settings/texture_slots.html#bpy-types-imagepaint-mode"), ("bpy.types.latticemodifier*", "modeling/modifiers/deform/lattice.html#bpy-types-latticemodifier"), ("bpy.types.materiallineart*", "render/materials/line_art.html#bpy-types-materiallineart"), @@ -2289,6 +2323,7 @@ url_manual_mapping = ( ("bpy.ops.fluid.free_mesh*", "physics/fluid/type/domain/liquid/mesh.html#bpy-ops-fluid-free-mesh"), ("bpy.ops.font.select_all*", "modeling/texts/selecting.html#bpy-ops-font-select-all"), ("bpy.ops.gpencil.convert*", "grease_pencil/modes/object/convert_to_geometry.html#bpy-ops-gpencil-convert"), + ("bpy.ops.graph.breakdown*", "editors/graph_editor/fcurves/editing.html#bpy-ops-graph-breakdown"), ("bpy.ops.mask.parent_set*", "movie_clip/masking/editing.html#bpy-ops-mask-parent-set"), ("bpy.ops.mask.select_all*", "movie_clip/masking/selecting.html#bpy-ops-mask-select-all"), ("bpy.ops.mask.select_box*", "movie_clip/masking/selecting.html#bpy-ops-mask-select-box"), @@ -2475,6 +2510,7 @@ url_manual_mapping = ( ("bpy.ops.sculpt.expand*", "sculpt_paint/sculpting/editing/mask.html#bpy-ops-sculpt-expand"), ("bpy.ops.view3d.select*", "editors/3dview/selecting.html#bpy-ops-view3d-select"), ("bpy.ops.wm.debug_menu*", "advanced/operators.html#bpy-ops-wm-debug-menu"), + ("bpy.ops.wm.obj_export*", "files/import_export/obj.html#bpy-ops-wm-obj-export"), ("bpy.ops.wm.properties*", "files/data_blocks.html#bpy-ops-wm-properties"), ("bpy.ops.wm.usd_export*", "files/import_export/usd.html#bpy-ops-wm-usd-export"), ("bpy.types.addsequence*", "video_editing/sequencer/strips/effects/add.html#bpy-types-addsequence"), @@ -2578,6 +2614,7 @@ url_manual_mapping = ( ("bpy.types.node.name*", "interface/controls/nodes/sidebar.html#bpy-types-node-name"), ("bpy.types.nodeframe*", "interface/controls/nodes/frame.html#bpy-types-nodeframe"), ("bpy.types.nodegroup*", "interface/controls/nodes/groups.html#bpy-types-nodegroup"), + ("bpy.types.scene.muv*", "addons/uv/magic_uv.html#bpy-types-scene-muv"), ("bpy.types.spotlight*", "render/lights/light_object.html#bpy-types-spotlight"), ("bpy.types.textcurve*", "modeling/texts/index.html#bpy-types-textcurve"), ("bpy.types.udimtiles*", "modeling/meshes/uv/workflows/udims.html#bpy-types-udimtiles"), @@ -2713,6 +2750,7 @@ url_manual_mapping = ( ("bpy.ops.render*", "render/index.html#bpy-ops-render"), ("bpy.ops.script*", "advanced/scripting/index.html#bpy-ops-script"), ("bpy.ops.sculpt*", "sculpt_paint/sculpting/index.html#bpy-ops-sculpt"), + ("bpy.ops.uv.muv*", "addons/uv/magic_uv.html#bpy-ops-uv-muv"), ("bpy.ops.uv.pin*", "modeling/meshes/uv/editing.html#bpy-ops-uv-pin"), ("bpy.ops.uv.rip*", "modeling/meshes/uv/tools/rip.html#bpy-ops-uv-rip"), ("bpy.ops.view3d*", "editors/3dview/index.html#bpy-ops-view3d"), diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py index 8884b835130..6f4f862a3b8 100644 --- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py +++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py @@ -20,12 +20,8 @@ class Params: "legacy", "select_mouse", "select_mouse_value", - "select_tweak", "action_mouse", - "action_tweak", "tool_mouse", - "tool_tweak", - "tool_maybe_tweak", "tool_maybe_tweak_value", "context_menu_event", "cursor_set_event", @@ -72,13 +68,13 @@ class Params: "use_fallback_tool_select_mouse", # Shorthand for: `('CLICK' if self.use_fallback_tool_rmb else self.select_mouse_value)`. "select_mouse_value_fallback", - # Shorthand for: `{"type": params.select_tweak, "value": 'ANY'}`. + # Shorthand for: `{"type": params.select_mouse, "value": 'CLICK_DRAG'}`. "select_tweak_event", # Shorthand for: `('CLICK_DRAG' if params.use_pie_click_drag else 'PRESS')` "pie_value", - # Shorthand for: `{"type": params.tool_tweak, "value": 'ANY'}`. + # Shorthand for: `{"type": params.tool_mouse, "value": 'CLICK_DRAG'}`. "tool_tweak_event", - # Shorthand for: `{"type": params.tool_maybe_tweak, "value": params.tool_maybe_tweak_value}`. + # Shorthand for: `{"type": params.tool_mouse, "value": params.tool_maybe_tweak_value}`. # # NOTE: This is typically used for active tool key-map items however it should never # be used for selection tools (the default box-select tool for example). @@ -122,24 +118,19 @@ class Params: # Right mouse select. self.select_mouse = 'RIGHTMOUSE' self.select_mouse_value = 'PRESS' - self.select_tweak = 'EVT_TWEAK_R' self.action_mouse = 'LEFTMOUSE' - self.action_tweak = 'EVT_TWEAK_L' self.tool_mouse = 'LEFTMOUSE' - self.tool_tweak = 'EVT_TWEAK_L' if use_alt_tool_or_cursor: - self.tool_maybe_tweak = 'LEFTMOUSE' self.tool_maybe_tweak_value = 'PRESS' else: - self.tool_maybe_tweak = 'EVT_TWEAK_L' - self.tool_maybe_tweak_value = 'ANY' + self.tool_maybe_tweak_value = 'CLICK_DRAG' self.context_menu_event = {"type": 'W', "value": 'PRESS'} # Use the "cursor" functionality for RMB select. if use_alt_tool_or_cursor: self.cursor_set_event = {"type": 'LEFTMOUSE', "value": 'PRESS', "alt": True} - self.cursor_tweak_event = {"type": 'EVT_TWEAK_L', "value": 'ANY', "alt": True} + self.cursor_tweak_event = {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', "alt": True} else: self.cursor_set_event = {"type": 'LEFTMOUSE', "value": 'CLICK'} self.cursor_tweak_event = None @@ -151,13 +142,9 @@ class Params: # events on the same mouse buttons. self.select_mouse = 'LEFTMOUSE' self.select_mouse_value = 'CLICK' - self.select_tweak = 'EVT_TWEAK_L' self.action_mouse = 'RIGHTMOUSE' - self.action_tweak = 'EVT_TWEAK_R' self.tool_mouse = 'LEFTMOUSE' - self.tool_tweak = 'EVT_TWEAK_L' - self.tool_maybe_tweak = 'EVT_TWEAK_L' - self.tool_maybe_tweak_value = 'ANY' + self.tool_maybe_tweak_value = 'CLICK_DRAG' if self.legacy: self.context_menu_event = {"type": 'W', "value": 'PRESS'} @@ -165,7 +152,7 @@ class Params: self.context_menu_event = {"type": 'RIGHTMOUSE', "value": 'PRESS'} self.cursor_set_event = {"type": 'RIGHTMOUSE', "value": 'PRESS', "shift": True} - self.cursor_tweak_event = {"type": 'EVT_TWEAK_R', "value": 'ANY', "shift": True} + self.cursor_tweak_event = {"type": 'RIGHTMOUSE', "value": 'CLICK_DRAG', "shift": True} # Use the "tool" functionality for LMB select. if use_alt_tool_or_cursor: @@ -199,15 +186,18 @@ class Params: # Convenience variables: self.use_fallback_tool_select_mouse = True if (select_mouse == 'LEFT') else self.use_fallback_tool_rmb self.select_mouse_value_fallback = 'CLICK' if self.use_fallback_tool_rmb else self.select_mouse_value - self.select_tweak_event = {"type": self.select_tweak, "value": 'ANY'} + self.select_tweak_event = {"type": self.select_mouse, "value": 'CLICK_DRAG'} self.pie_value = 'CLICK_DRAG' if use_pie_click_drag else 'PRESS' - self.tool_tweak_event = {"type": self.tool_tweak, "value": 'ANY'} - self.tool_maybe_tweak_event = {"type": self.tool_maybe_tweak, "value": self.tool_maybe_tweak_value} + self.tool_tweak_event = {"type": self.tool_mouse, "value": 'CLICK_DRAG'} + self.tool_maybe_tweak_event = {"type": self.tool_mouse, "value": self.tool_maybe_tweak_value} # ------------------------------------------------------------------------------ # Constants +from math import pi +pi_2 = pi / 2.0 + # Physical layout. NUMBERS_1 = ('ONE', 'TWO', 'THREE', 'FOUR', 'FIVE', 'SIX', 'SEVEN', 'EIGHT', 'NINE', 'ZERO') # Numeric order. @@ -352,13 +342,13 @@ def _template_items_gizmo_tweak_value_click_drag(): ("gizmogroup.gizmo_tweak", {"type": 'LEFTMOUSE', "value": 'CLICK', **any_except("alt")}, None), ("gizmogroup.gizmo_tweak", - {"type": 'EVT_TWEAK_L', "value": 'ANY', **any_except("alt")}, None), + {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', **any_except("alt")}, None), ] def _template_items_gizmo_tweak_value_drag(): return [ - ("gizmogroup.gizmo_tweak", {"type": 'EVT_TWEAK_L', "value": 'ANY', **any_except("alt")}, None), + ("gizmogroup.gizmo_tweak", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', **any_except("alt")}, None), ] @@ -387,6 +377,11 @@ def _template_items_uv_select_mode(params): ] else: return [ + # TODO(@campbellbarton): should this be kept? + # Seems it was included in the new key-map by accident, check on removing + # although it's not currently used for anything else. + op_menu("IMAGE_MT_uvs_select_mode", {"type": 'TAB', "value": 'PRESS', "ctrl": True}), + *_template_items_editmode_mesh_select_mode(params), # Hack to prevent fall-through, when sync select isn't enabled (and the island button isn't visible). ("mesh.select_mode", {"type": 'FOUR', "value": 'PRESS'}, None), @@ -439,7 +434,7 @@ def _template_items_tool_select(params, operator, cursor_operator, *, extend): # For right mouse, set the cursor. return [ (cursor_operator, {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), - ("transform.translate", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, + ("transform.translate", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, {"properties": [("release_confirm", True), ("cursor_transform", True)]}), ] @@ -861,7 +856,6 @@ def km_mask_editing(params): items.extend([ ("mask.select", {"type": 'RIGHTMOUSE', "value": 'PRESS'}, {"properties": [("deselect_all", not params.legacy)]}), - ("transform.translate", {"type": 'EVT_TWEAK_R', "value": 'ANY'}, None), ]) items.extend([ @@ -883,9 +877,9 @@ def km_mask_editing(params): {"properties": [("deselect", True)]}), ("mask.select_box", {"type": 'B', "value": 'PRESS'}, None), ("mask.select_circle", {"type": 'C', "value": 'PRESS'}, None), - ("mask.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True, "alt": True}, + ("mask.select_lasso", {"type": params.action_mouse, "value": 'CLICK_DRAG', "ctrl": True, "alt": True}, {"properties": [("mode", 'ADD')]}), - ("mask.select_lasso", {"type": params.action_tweak, "value": 'ANY', "shift": True, "ctrl": True, "alt": True}, + ("mask.select_lasso", {"type": params.action_mouse, "value": 'CLICK_DRAG', "shift": True, "ctrl": True, "alt": True}, {"properties": [("mode", 'SUB')]}), ("mask.select_more", {"type": 'NUMPAD_PLUS', "value": 'PRESS', "ctrl": True, "repeat": True}, None), ("mask.select_less", {"type": 'NUMPAD_MINUS', "value": 'PRESS', "ctrl": True, "repeat": True}, None), @@ -905,7 +899,7 @@ def km_mask_editing(params): ("mask.copy_splines", {"type": 'C', "value": 'PRESS', "ctrl": True}, None), ("mask.paste_splines", {"type": 'V', "value": 'PRESS', "ctrl": True}, None), ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), - ("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None), + ("transform.translate", {"type": params.select_mouse, "value": 'CLICK_DRAG'}, None), ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), ("transform.resize", {"type": 'S', "value": 'PRESS'}, None), ("transform.tosphere", {"type": 'S', "value": 'PRESS', "shift": True, "alt": True}, None), @@ -939,7 +933,7 @@ def km_markers(params): items.extend([ ("marker.add", {"type": 'M', "value": 'PRESS'}, None), - ("marker.move", {"type": params.select_tweak, "value": 'ANY'}, + ("marker.move", {"type": params.select_mouse, "value": 'CLICK_DRAG'}, {"properties": [("tweak", True)]}), ("marker.duplicate", {"type": 'D', "value": 'PRESS', "shift": True}, None), ("marker.select", {"type": params.select_mouse, "value": 'PRESS'}, None), @@ -949,7 +943,7 @@ def km_markers(params): {"properties": [("camera", True)]}), ("marker.select", {"type": params.select_mouse, "value": 'PRESS', "shift": True, "ctrl": True}, {"properties": [("extend", True), ("camera", True)]}), - ("marker.select_box", {"type": params.select_tweak, "value": 'ANY'}, + ("marker.select_box", {"type": params.select_mouse, "value": 'CLICK_DRAG'}, {"properties": [("tweak", True)]}), ("marker.select_box", {"type": 'B', "value": 'PRESS'}, None), *_template_items_select_actions(params, "marker.select_all"), @@ -1066,10 +1060,10 @@ def km_outliner(params): ("outliner.item_activate", {"type": 'LEFTMOUSE', "value": 'CLICK', "ctrl": True, "shift": True}, {"properties": [("extend", True), ("extend_range", True), ("deselect_all", not params.legacy)]}), ("outliner.select_box", {"type": 'B', "value": 'PRESS'}, None), - ("outliner.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, {"properties": [("tweak", True)]}), - ("outliner.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY', "shift": True}, + ("outliner.select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, {"properties": [("tweak", True)]}), + ("outliner.select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', "shift": True}, {"properties": [("tweak", True), ("mode", 'ADD')]}), - ("outliner.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY', "ctrl": True}, + ("outliner.select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', "ctrl": True}, {"properties": [("tweak", True), ("mode", 'SUB')]}), ("outliner.select_walk", {"type": 'UP_ARROW', "value": 'PRESS', "repeat": True}, {"properties": [("direction", 'UP')]}), @@ -1091,14 +1085,14 @@ def km_outliner(params): {"properties": [("all", False)]}), ("outliner.item_openclose", {"type": 'LEFTMOUSE', "value": 'CLICK', "shift": True}, {"properties": [("all", True)]}), - ("outliner.item_openclose", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, + ("outliner.item_openclose", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, {"properties": [("all", False)]}), # Fall through to generic context menu if the item(s) selected have no type specific actions. ("outliner.operation", {"type": 'RIGHTMOUSE', "value": 'PRESS'}, None), op_menu("OUTLINER_MT_context_menu", {"type": 'RIGHTMOUSE', "value": 'PRESS'}), op_menu_pie("OUTLINER_MT_view_pie", {"type": 'ACCENT_GRAVE', "value": 'PRESS'}), - ("outliner.item_drag_drop", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), - ("outliner.item_drag_drop", {"type": 'EVT_TWEAK_L', "value": 'ANY', "shift": True}, None), + ("outliner.item_drag_drop", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, None), + ("outliner.item_drag_drop", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', "shift": True}, None), ("outliner.show_hierarchy", {"type": 'HOME', "value": 'PRESS'}, None), ("outliner.show_active", {"type": 'PERIOD', "value": 'PRESS'}, None), ("outliner.show_active", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None), @@ -1176,9 +1170,9 @@ def km_uv_editor(params): op_tool_optional( ("uv.select_circle", {"type": 'C', "value": 'PRESS'}, None), (op_tool, "builtin.select_circle"), params), - ("uv.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True}, + ("uv.select_lasso", {"type": params.action_mouse, "value": 'CLICK_DRAG', "ctrl": True}, {"properties": [("mode", 'ADD')]}), - ("uv.select_lasso", {"type": params.action_tweak, "value": 'ANY', "shift": True, "ctrl": True}, + ("uv.select_lasso", {"type": params.action_mouse, "value": 'CLICK_DRAG', "shift": True, "ctrl": True}, {"properties": [("mode", 'SUB')]}), ("uv.select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True}, None), ("uv.select_linked_pick", {"type": 'L', "value": 'PRESS'}, @@ -1205,10 +1199,9 @@ def km_uv_editor(params): if not params.legacy else op_menu("IMAGE_MT_uvs_snap", {"type": 'S', "value": 'PRESS', "shift": True}) ), - op_menu("IMAGE_MT_uvs_select_mode", {"type": 'TAB', "value": 'PRESS', "ctrl": True}), *_template_items_proportional_editing( params, connected=False, toggle_data_path='tool_settings.use_proportional_edit'), - ("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None), + ("transform.translate", {"type": params.select_mouse, "value": 'CLICK_DRAG'}, None), op_tool_optional( ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), (op_tool_cycle, "builtin.move"), params), @@ -1370,7 +1363,6 @@ def km_view3d(params): *(() if not params.use_pie_click_drag else (("view3d.navigate", {"type": 'ACCENT_GRAVE', "value": 'CLICK'}, None),)), ("view3d.navigate", {"type": 'ACCENT_GRAVE', "value": 'PRESS', "shift": True}, None), - ("view3d.navigate", {"type": 'ACCENT_GRAVE', "value": 'PRESS', "shift": True}, None), # Numpad views. ("view3d.view_camera", {"type": 'NUMPAD_0', "value": 'PRESS'}, None), ("view3d.view_axis", {"type": 'NUMPAD_1', "value": 'PRESS'}, @@ -1407,7 +1399,7 @@ def km_view3d(params): ("view3d.view_roll", {"type": 'NUMPAD_6', "value": 'PRESS', "shift": True, "repeat": True}, {"properties": [("type", 'RIGHT')]}), ("view3d.view_orbit", {"type": 'NUMPAD_9', "value": 'PRESS'}, - {"properties": [("angle", 3.1415927), ("type", 'ORBITRIGHT')]}), + {"properties": [("angle", pi), ("type", 'ORBITRIGHT')]}), ("view3d.view_axis", {"type": 'NUMPAD_1', "value": 'PRESS', "shift": True}, {"properties": [("type", 'FRONT'), ("align_active", True)]}), ("view3d.view_axis", {"type": 'NUMPAD_3', "value": 'PRESS', "shift": True}, @@ -1421,28 +1413,28 @@ def km_view3d(params): ("view3d.view_axis", {"type": 'NUMPAD_7', "value": 'PRESS', "shift": True, "ctrl": True}, {"properties": [("type", 'BOTTOM'), ("align_active", True)]}), *(( - ("view3d.view_axis", {"type": 'EVT_TWEAK_M', "value": 'NORTH', "alt": True}, + ("view3d.view_axis", {"type": 'MIDDLEMOUSE', "value": 'CLICK_DRAG', "direction": 'NORTH', "alt": True}, {"properties": [("type", 'TOP'), ("relative", True)]}), - ("view3d.view_axis", {"type": 'EVT_TWEAK_M', "value": 'SOUTH', "alt": True}, + ("view3d.view_axis", {"type": 'MIDDLEMOUSE', "value": 'CLICK_DRAG', "direction": 'SOUTH', "alt": True}, {"properties": [("type", 'BOTTOM'), ("relative", True)]}), - ("view3d.view_axis", {"type": 'EVT_TWEAK_M', "value": 'EAST', "alt": True}, + ("view3d.view_axis", {"type": 'MIDDLEMOUSE', "value": 'CLICK_DRAG', "direction": 'EAST', "alt": True}, {"properties": [("type", 'RIGHT'), ("relative", True)]}), - ("view3d.view_axis", {"type": 'EVT_TWEAK_M', "value": 'WEST', "alt": True}, + ("view3d.view_axis", {"type": 'MIDDLEMOUSE', "value": 'CLICK_DRAG', "direction": 'WEST', "alt": True}, {"properties": [("type", 'LEFT'), ("relative", True)]}), ) if params.v3d_alt_mmb_drag_action == 'RELATIVE' else ( - ("view3d.view_axis", {"type": 'EVT_TWEAK_M', "value": 'NORTH', "alt": True}, + ("view3d.view_axis", {"type": 'MIDDLEMOUSE', "value": 'CLICK_DRAG', "direction": 'NORTH', "alt": True}, {"properties": [("type", 'TOP')]}), - ("view3d.view_axis", {"type": 'EVT_TWEAK_M', "value": 'SOUTH', "alt": True}, + ("view3d.view_axis", {"type": 'MIDDLEMOUSE', "value": 'CLICK_DRAG', "direction": 'SOUTH', "alt": True}, {"properties": [("type", 'BOTTOM')]}), - ("view3d.view_axis", {"type": 'EVT_TWEAK_M', "value": 'EAST', "alt": True}, + ("view3d.view_axis", {"type": 'MIDDLEMOUSE', "value": 'CLICK_DRAG', "direction": 'EAST', "alt": True}, {"properties": [("type", 'RIGHT')]}), - ("view3d.view_axis", {"type": 'EVT_TWEAK_M', "value": 'WEST', "alt": True}, + ("view3d.view_axis", {"type": 'MIDDLEMOUSE', "value": 'CLICK_DRAG', "direction": 'WEST', "alt": True}, {"properties": [("type", 'LEFT')]}), - # Match the pie menu. - ("view3d.view_axis", {"type": 'EVT_TWEAK_M', "value": 'NORTH_WEST', "alt": True}, + ("view3d.view_axis", {"type": 'MIDDLEMOUSE', "value": 'CLICK_DRAG', "direction": 'NORTH_WEST', "alt": True}, {"properties": [("type", 'FRONT')]}), - ("view3d.view_axis", {"type": 'EVT_TWEAK_M', "value": 'NORTH_EAST', "alt": True}, + ("view3d.view_axis", {"type": 'MIDDLEMOUSE', "value": 'CLICK_DRAG', "direction": 'NORTH_EAST', "alt": True}, {"properties": [("type", 'BACK')]}), + # Match the pie menu. )), ("view3d.view_center_pick", {"type": 'MIDDLEMOUSE', "value": 'CLICK', "alt": True}, None), ("view3d.ndof_orbit_zoom", {"type": 'NDOF_MOTION', "value": 'ANY'}, None), @@ -1451,10 +1443,10 @@ def km_view3d(params): ("view3d.ndof_all", {"type": 'NDOF_MOTION', "value": 'ANY', "shift": True, "ctrl": True}, None), ("view3d.view_selected", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, {"properties": [("use_all_regions", False)]}), + ("view3d.view_roll", {"type": 'NDOF_BUTTON_ROLL_CW', "value": 'PRESS'}, + {"properties": [("angle", pi_2)]}), ("view3d.view_roll", {"type": 'NDOF_BUTTON_ROLL_CCW', "value": 'PRESS'}, - {"properties": [("type", 'LEFT')]}), - ("view3d.view_roll", {"type": 'NDOF_BUTTON_ROLL_CCW', "value": 'PRESS'}, - {"properties": [("type", 'RIGHT')]}), + {"properties": [("angle", -pi_2)]}), ("view3d.view_axis", {"type": 'NDOF_BUTTON_FRONT', "value": 'PRESS'}, {"properties": [("type", 'FRONT')]}), ("view3d.view_axis", {"type": 'NDOF_BUTTON_BACK', "value": 'PRESS'}, @@ -1482,9 +1474,9 @@ def km_view3d(params): op_tool_optional( ("view3d.select_box", {"type": 'B', "value": 'PRESS'}, None), (op_tool, "builtin.select_box"), params), - ("view3d.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True}, + ("view3d.select_lasso", {"type": params.action_mouse, "value": 'CLICK_DRAG', "ctrl": True}, {"properties": [("mode", 'ADD')]}), - ("view3d.select_lasso", {"type": params.action_tweak, "value": 'ANY', "shift": True, "ctrl": True}, + ("view3d.select_lasso", {"type": params.action_mouse, "value": 'CLICK_DRAG', "shift": True, "ctrl": True}, {"properties": [("mode", 'SUB')]}), op_tool_optional( ("view3d.select_circle", {"type": 'C', "value": 'PRESS'}, None), @@ -1501,7 +1493,7 @@ def km_view3d(params): ("view3d.copybuffer", {"type": 'C', "value": 'PRESS', "ctrl": True}, None), ("view3d.pastebuffer", {"type": 'V', "value": 'PRESS', "ctrl": True}, None), # Transform. - ("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None), + ("transform.translate", {"type": params.select_mouse, "value": 'CLICK_DRAG'}, None), op_tool_optional( ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), (op_tool_cycle, "builtin.move"), params), @@ -1693,15 +1685,15 @@ def km_graph_editor(params): ("graph.select_box", {"type": 'B', "value": 'PRESS'}, None), ("graph.select_box", {"type": 'B', "value": 'PRESS', "alt": True}, {"properties": [("axis_range", True)]}), - ("graph.select_box", {"type": params.select_tweak, "value": 'ANY'}, + ("graph.select_box", {"type": params.select_mouse, "value": 'CLICK_DRAG'}, {"properties": [("tweak", True), ("mode", 'SET')]}), - ("graph.select_box", {"type": params.select_tweak, "value": 'ANY', "shift": True}, + ("graph.select_box", {"type": params.select_mouse, "value": 'CLICK_DRAG', "shift": True}, {"properties": [("tweak", True), ("mode", 'ADD')]}), - ("graph.select_box", {"type": params.select_tweak, "value": 'ANY', "ctrl": True}, + ("graph.select_box", {"type": params.select_mouse, "value": 'CLICK_DRAG', "ctrl": True}, {"properties": [("tweak", True), ("mode", 'SUB')]}), - ("graph.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True}, + ("graph.select_lasso", {"type": params.action_mouse, "value": 'CLICK_DRAG', "ctrl": True}, {"properties": [("mode", 'ADD')]}), - ("graph.select_lasso", {"type": params.action_tweak, "value": 'ANY', "shift": True, "ctrl": True}, + ("graph.select_lasso", {"type": params.action_mouse, "value": 'CLICK_DRAG', "shift": True, "ctrl": True}, {"properties": [("mode", 'SUB')]}), ("graph.select_circle", {"type": 'C', "value": 'PRESS'}, None), ("graph.select_column", {"type": 'K', "value": 'PRESS'}, @@ -1749,7 +1741,7 @@ def km_graph_editor(params): {"properties": [("only_active", False)]}), ("anim.channels_editable_toggle", {"type": 'TAB', "value": 'PRESS'}, None), ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), - ("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None), + ("transform.translate", {"type": params.select_mouse, "value": 'CLICK_DRAG'}, None), ("transform.transform", {"type": 'E', "value": 'PRESS'}, {"properties": [("mode", 'TIME_EXTEND')]}), ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), @@ -1977,11 +1969,11 @@ def km_node_editor(params): ]) items.extend([ - ("node.select_box", {"type": params.select_tweak, "value": 'ANY'}, + ("node.select_box", {"type": params.select_mouse, "value": 'CLICK_DRAG'}, {"properties": [("tweak", True)]}), - ("node.select_lasso", {"type": 'EVT_TWEAK_L', "value": 'ANY', "ctrl": True, "alt": True}, + ("node.select_lasso", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', "ctrl": True, "alt": True}, {"properties": [("mode", 'ADD')]}), - ("node.select_lasso", {"type": 'EVT_TWEAK_L', "value": 'ANY', "shift": True, "ctrl": True, "alt": True}, + ("node.select_lasso", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', "shift": True, "ctrl": True, "alt": True}, {"properties": [("mode", 'SUB')]}), op_tool_optional( ("node.select_box", {"type": 'B', "value": 'PRESS'}, @@ -1990,16 +1982,16 @@ def km_node_editor(params): op_tool_optional( ("node.select_circle", {"type": 'C', "value": 'PRESS'}, None), (op_tool, "builtin.select_circle"), params), - ("node.link", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, + ("node.link", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, {"properties": [("detach", False)]}), - ("node.link", {"type": 'EVT_TWEAK_L', "value": 'ANY', "ctrl": True}, + ("node.link", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', "ctrl": True}, {"properties": [("detach", True)]}), - ("node.resize", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), + ("node.resize", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, None), ("node.add_reroute", - {"type": 'EVT_TWEAK_L' if params.legacy else 'EVT_TWEAK_R', "value": 'ANY', "shift": True}, None), + {"type": 'LEFTMOUSE' if params.legacy else 'RIGHTMOUSE', "value": 'CLICK_DRAG', "shift": True}, None), ("node.links_cut", - {"type": 'EVT_TWEAK_L' if params.legacy else 'EVT_TWEAK_R', "value": 'ANY', "ctrl": True}, None), - ("node.links_mute", {"type": 'EVT_TWEAK_R', "value": 'ANY', "ctrl": True, "alt": True}, None), + {"type": 'LEFTMOUSE' if params.legacy else 'RIGHTMOUSE', "value": 'CLICK_DRAG', "ctrl": True}, None), + ("node.links_mute", {"type": 'RIGHTMOUSE', "value": 'CLICK_DRAG', "ctrl": True, "alt": True}, None), ("node.select_link_viewer", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True}, None), ("node.backimage_move", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "alt": True}, None), ("node.backimage_zoom", {"type": 'V', "value": 'PRESS', "repeat": True}, @@ -2060,26 +2052,31 @@ def km_node_editor(params): {"type": 'G', "value": 'PRESS'}, {"properties": [("TRANSFORM_OT_translate", [("view2d_edge_pan", True)])]}), ("node.translate_attach", - {"type": 'EVT_TWEAK_L', "value": 'ANY'}, - {"properties": [("TRANSFORM_OT_translate", [("view2d_edge_pan", True)])]}), - ("node.translate_attach", - {"type": params.select_tweak, "value": 'ANY'}, + {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, {"properties": [("TRANSFORM_OT_translate", [("view2d_edge_pan", True)])]}), + # Avoid duplicating the previous item. + *([] if params.select_mouse == 'LEFTMOUSE' else ( + ("node.translate_attach", {"type": params.select_mouse, "value": 'CLICK_DRAG'}, + {"properties": [("TRANSFORM_OT_translate", [("view2d_edge_pan", True)])]}), + )), ("transform.translate", {"type": 'G', "value": 'PRESS'}, {"properties": [("view2d_edge_pan", True)]}), - ("transform.translate", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, - {"properties": [("release_confirm", True), ("view2d_edge_pan", True)]}), - ("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, + ("transform.translate", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, {"properties": [("release_confirm", True), ("view2d_edge_pan", True)]}), + # Avoid duplicating the previous item. + *([] if params.select_mouse == 'LEFTMOUSE' else ( + ("transform.translate", {"type": params.select_mouse, "value": 'CLICK_DRAG'}, + {"properties": [("release_confirm", True), ("view2d_edge_pan", True)]}), + )), ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), ("transform.resize", {"type": 'S', "value": 'PRESS'}, None), ("node.move_detach_links", {"type": 'D', "value": 'PRESS', "alt": True}, {"properties": [("TRANSFORM_OT_translate", [("view2d_edge_pan", True)])]}), ("node.move_detach_links_release", - {"type": params.action_tweak, "value": 'ANY', "alt": True}, + {"type": params.action_mouse, "value": 'CLICK_DRAG', "alt": True}, {"properties": [("NODE_OT_translate_attach", [("TRANSFORM_OT_translate", [("view2d_edge_pan", True)])])]}), ("node.move_detach_links", - {"type": params.select_tweak, "value": 'ANY', "alt": True}, + {"type": params.select_mouse, "value": 'CLICK_DRAG', "alt": True}, {"properties": [("TRANSFORM_OT_translate", [("view2d_edge_pan", True)])]}), ("wm.context_toggle", {"type": 'TAB', "value": 'PRESS', "shift": True}, {"properties": [("data_path", 'tool_settings.use_snap')]}), @@ -2108,7 +2105,7 @@ def km_info(params): ("info.select_pick", {"type": 'LEFTMOUSE', "value": 'CLICK'}, None), ("info.select_pick", {"type": 'LEFTMOUSE', "value": 'CLICK', "shift": True}, {"properties": [("extend", True)]}), - ("info.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, + ("info.select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, {"properties": [("wait_for_input", False)]}), *_template_items_select_actions(params, "info.select_all"), ("info.select_box", {"type": 'B', "value": 'PRESS'}, None), @@ -2237,10 +2234,10 @@ def km_file_browser_main(params): ("file.next", {"type": 'BUTTON5MOUSE', "value": 'CLICK'}, None), *_template_items_select_actions(params, "file.select_all"), ("file.select_box", {"type": 'B', "value": 'PRESS'}, None), - ("file.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), - ("file.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY', "shift": True}, + ("file.select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, None), + ("file.select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', "shift": True}, {"properties": [("mode", 'ADD')]}), - ("file.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY', "ctrl": True}, + ("file.select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', "ctrl": True}, {"properties": [("mode", 'SUB')]}), ("file.highlight", {"type": 'MOUSEMOVE', "value": 'ANY', "any": True}, None), ("file.sort_column_ui_context", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), @@ -2342,15 +2339,15 @@ def km_dopesheet(params): {"properties": [("axis_range", False)]}), ("action.select_box", {"type": 'B', "value": 'PRESS', "alt": True}, {"properties": [("axis_range", True)]}), - ("action.select_box", {"type": params.select_tweak, "value": 'ANY'}, + ("action.select_box", {"type": params.select_mouse, "value": 'CLICK_DRAG'}, {"properties": [("tweak", True), ("mode", 'SET')]}), - ("action.select_box", {"type": params.select_tweak, "value": 'ANY', "shift": True}, + ("action.select_box", {"type": params.select_mouse, "value": 'CLICK_DRAG', "shift": True}, {"properties": [("tweak", True), ("mode", 'ADD')]}), - ("action.select_box", {"type": params.select_tweak, "value": 'ANY', "ctrl": True}, + ("action.select_box", {"type": params.select_mouse, "value": 'CLICK_DRAG', "ctrl": True}, {"properties": [("tweak", True), ("mode", 'SUB')]}), - ("action.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True}, + ("action.select_lasso", {"type": params.action_mouse, "value": 'CLICK_DRAG', "ctrl": True}, {"properties": [("mode", 'ADD')]}), - ("action.select_lasso", {"type": params.action_tweak, "value": 'ANY', "shift": True, "ctrl": True}, + ("action.select_lasso", {"type": params.action_mouse, "value": 'CLICK_DRAG', "shift": True, "ctrl": True}, {"properties": [("mode", 'SUB')]}), ("action.select_circle", {"type": 'C', "value": 'PRESS'}, None), ("action.select_column", {"type": 'K', "value": 'PRESS'}, @@ -2395,7 +2392,7 @@ def km_dopesheet(params): ("anim.channels_select_filter", {"type": 'F', "value": 'PRESS', "ctrl": True}, None), ("transform.transform", {"type": 'G', "value": 'PRESS'}, {"properties": [("mode", 'TIME_TRANSLATE')]}), - ("transform.transform", {"type": params.select_tweak, "value": 'ANY'}, + ("transform.transform", {"type": params.select_mouse, "value": 'CLICK_DRAG'}, {"properties": [("mode", 'TIME_TRANSLATE')]}), ("transform.transform", {"type": 'E', "value": 'PRESS'}, {"properties": [("mode", 'TIME_EXTEND')]}), @@ -2494,11 +2491,11 @@ def km_nla_editor(params): {"properties": [("axis_range", False)]}), ("nla.select_box", {"type": 'B', "value": 'PRESS', "alt": True}, {"properties": [("axis_range", True)]}), - ("nla.select_box", {"type": params.select_tweak, "value": 'ANY'}, + ("nla.select_box", {"type": params.select_mouse, "value": 'CLICK_DRAG'}, {"properties": [("tweak", True), ("mode", 'SET')]}), - ("nla.select_box", {"type": params.select_tweak, "value": 'ANY', "shift": True}, + ("nla.select_box", {"type": params.select_mouse, "value": 'CLICK_DRAG', "shift": True}, {"properties": [("tweak", True), ("mode", 'ADD')]}), - ("nla.select_box", {"type": params.select_tweak, "value": 'ANY', "ctrl": True}, + ("nla.select_box", {"type": params.select_mouse, "value": 'CLICK_DRAG', "ctrl": True}, {"properties": [("tweak", True), ("mode", 'SUB')]}), ("nla.previewrange_set", {"type": 'P', "value": 'PRESS', "ctrl": True, "alt": True}, None), ("nla.view_all", {"type": 'HOME', "value": 'PRESS'}, None), @@ -2533,7 +2530,7 @@ def km_nla_editor(params): ("nla.fmodifier_add", {"type": 'M', "value": 'PRESS', "shift": True, "ctrl": True}, None), ("transform.transform", {"type": 'G', "value": 'PRESS'}, {"properties": [("mode", 'TRANSLATION')]}), - ("transform.transform", {"type": params.select_tweak, "value": 'ANY'}, + ("transform.transform", {"type": params.select_mouse, "value": 'CLICK_DRAG'}, {"properties": [("mode", 'TRANSLATION')]}), ("transform.transform", {"type": 'E', "value": 'PRESS'}, {"properties": [("mode", 'TIME_EXTEND')]}), @@ -2695,7 +2692,7 @@ def km_text(params): ("text.scroll_bar", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None), ("text.scroll", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None), ("text.scroll", {"type": 'TRACKPADPAN', "value": 'ANY'}, None), - ("text.selection_set", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), + ("text.selection_set", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, None), ("text.cursor_set", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), ("text.selection_set", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, None), ("text.scroll", {"type": 'WHEELUPMOUSE', "value": 'PRESS'}, @@ -2826,11 +2823,11 @@ def km_sequencer(params): ("sequencer.select_linked_pick", {"type": 'L', "value": 'PRESS', "shift": True}, {"properties": [("extend", True)]}), ("sequencer.select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True}, None), - ("sequencer.select_box", {"type": params.select_tweak, "value": 'ANY'}, + ("sequencer.select_box", {"type": params.select_mouse, "value": 'CLICK_DRAG'}, {"properties": [("tweak", True), ("mode", 'SET')]}), - ("sequencer.select_box", {"type": params.select_tweak, "value": 'ANY', "shift": True}, + ("sequencer.select_box", {"type": params.select_mouse, "value": 'CLICK_DRAG', "shift": True}, {"properties": [("tweak", True), ("mode", 'ADD')]}), - ("sequencer.select_box", {"type": params.select_tweak, "value": 'ANY', "ctrl": True}, + ("sequencer.select_box", {"type": params.select_mouse, "value": 'CLICK_DRAG', "ctrl": True}, {"properties": [("tweak", True), ("mode", 'SUB')]}), ("sequencer.select_box", {"type": 'B', "value": 'PRESS'}, None), ("sequencer.select_box", {"type": 'B', "value": 'PRESS', "ctrl": True}, @@ -2843,7 +2840,7 @@ def km_sequencer(params): ("wm.context_set_int", {"type": 'O', "value": 'PRESS'}, {"properties": [("data_path", 'scene.sequence_editor.overlay_frame'), ("value", 0)]}), ("transform.seq_slide", {"type": 'G', "value": 'PRESS'}, None), - ("transform.seq_slide", {"type": params.select_tweak, "value": 'ANY'}, None), + ("transform.seq_slide", {"type": params.select_mouse, "value": 'CLICK_DRAG'}, None), ("transform.transform", {"type": 'E', "value": 'PRESS'}, {"properties": [("mode", 'TIME_EXTEND')]}), ("marker.add", {"type": 'M', "value": 'PRESS'}, None), @@ -2899,7 +2896,7 @@ def km_sequencerpreview(params): op_menu_pie("SEQUENCER_MT_preview_view_pie", {"type": 'ACCENT_GRAVE', "value": 'PRESS'}), # Edit. - ("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None), + ("transform.translate", {"type": params.select_mouse, "value": 'CLICK_DRAG'}, None), op_tool_optional( ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), (op_tool_cycle, "builtin.move"), params), @@ -3115,9 +3112,9 @@ def km_clip_editor(params): ("clip.select_box", {"type": 'B', "value": 'PRESS'}, None), ("clip.select_circle", {"type": 'C', "value": 'PRESS'}, None), op_menu("CLIP_MT_select_grouped", {"type": 'G', "value": 'PRESS', "shift": True}), - ("clip.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True, "alt": True}, + ("clip.select_lasso", {"type": params.action_mouse, "value": 'CLICK_DRAG', "ctrl": True, "alt": True}, {"properties": [("mode", 'ADD')]}), - ("clip.select_lasso", {"type": params.action_tweak, "value": 'ANY', "shift": True, "ctrl": True, "alt": True}, + ("clip.select_lasso", {"type": params.action_mouse, "value": 'CLICK_DRAG', "shift": True, "ctrl": True, "alt": True}, {"properties": [("mode", 'SUB')]}), ("clip.add_marker_slide", {"type": 'LEFTMOUSE', "value": 'PRESS', "ctrl": True}, None), ("clip.delete_marker", {"type": 'X', "value": 'PRESS', "shift": True}, None), @@ -3144,7 +3141,7 @@ def km_clip_editor(params): ("wm.context_toggle", {"type": 'M', "value": 'PRESS'}, {"properties": [("data_path", 'space_data.use_mute_footage')]}), ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), - ("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None), + ("transform.translate", {"type": params.select_mouse, "value": 'CLICK_DRAG'}, None), ("transform.resize", {"type": 'S', "value": 'PRESS'}, None), ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), ("clip.clear_track_path", {"type": 'T', "value": 'PRESS', "alt": True}, @@ -3213,7 +3210,7 @@ def km_clip_graph_editor(params): ("clip.graph_disable_markers", {"type": 'D', "value": 'PRESS', "shift": True}, {"properties": [("action", 'TOGGLE')]}), ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), - ("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None), + ("transform.translate", {"type": params.select_mouse, "value": 'CLICK_DRAG'}, None), ("transform.resize", {"type": 'S', "value": 'PRESS'}, None), ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), ]) @@ -3395,10 +3392,10 @@ def km_animation_channels(params): # Selection. *_template_items_select_actions(params, "anim.channels_select_all"), ("anim.channels_select_box", {"type": 'B', "value": 'PRESS'}, None), - ("anim.channels_select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), - ("anim.channels_select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY', "shift": True}, + ("anim.channels_select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, None), + ("anim.channels_select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', "shift": True}, {"properties": [("extend", True)]}), - ("anim.channels_select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY', "ctrl": True}, + ("anim.channels_select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', "ctrl": True}, {"properties": [("deselect", True)]}), # Delete. ("anim.channels_delete", {"type": 'X', "value": 'PRESS'}, None), @@ -3488,9 +3485,9 @@ def _grease_pencil_selection(params, use_select_mouse=True): ("gpencil.select_box", {"type": 'B', "value": 'PRESS'}, None), (op_tool, "builtin.select_box"), params), # Lasso select - ("gpencil.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True}, + ("gpencil.select_lasso", {"type": params.action_mouse, "value": 'CLICK_DRAG', "ctrl": True}, {"properties": [("mode", 'ADD')]}), - ("gpencil.select_lasso", {"type": params.action_tweak, "value": 'ANY', "shift": True, "ctrl": True}, + ("gpencil.select_lasso", {"type": params.action_mouse, "value": 'CLICK_DRAG', "shift": True, "ctrl": True}, {"properties": [("mode", 'SUB')]}), # In the Node Editor, lasso select needs ALT modifier too # (as somehow CTRL+LMB drag gets taken for "cut" quite early). @@ -3498,10 +3495,10 @@ def _grease_pencil_selection(params, use_select_mouse=True): # as part of standard GP editing keymap. This hotkey combo doesn't seem # to see much use under standard scenarios? ("gpencil.select_lasso", - {"type": params.action_tweak, "value": 'ANY', "ctrl": True, "alt": True}, + {"type": params.action_mouse, "value": 'CLICK_DRAG', "ctrl": True, "alt": True}, {"properties": [("mode", 'ADD')]}), ("gpencil.select_lasso", - {"type": params.action_tweak, "value": 'ANY', "shift": True, "ctrl": True, "alt": True}, + {"type": params.action_mouse, "value": 'CLICK_DRAG', "shift": True, "ctrl": True, "alt": True}, {"properties": [("mode", 'SUB')]}), *_template_view3d_gpencil_select( type=params.select_mouse, @@ -3593,7 +3590,7 @@ def km_grease_pencil_stroke_edit_mode(params): # Merge Layer ("gpencil.layer_merge", {"type": 'M', "value": 'PRESS', "shift": True, "ctrl": True}, None), # Transform tools - ("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None), + ("transform.translate", {"type": params.select_mouse, "value": 'CLICK_DRAG'}, None), op_tool_optional( ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), (op_tool_cycle, "builtin.move"), params), @@ -3765,7 +3762,7 @@ def km_grease_pencil_stroke_paint_draw_brush(params): # Box select ("gpencil.select_box", {"type": 'B', "value": 'PRESS'}, None), # Lasso select - ("gpencil.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True, "alt": True}, None), + ("gpencil.select_lasso", {"type": params.action_mouse, "value": 'CLICK_DRAG', "ctrl": True, "alt": True}, None), ]) return keymap @@ -3788,7 +3785,7 @@ def km_grease_pencil_stroke_paint_erase(params): # Box select (used by eraser) ("gpencil.select_box", {"type": 'B', "value": 'PRESS'}, None), # Lasso select - ("gpencil.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True, "alt": True}, None), + ("gpencil.select_lasso", {"type": params.action_mouse, "value": 'CLICK_DRAG', "ctrl": True, "alt": True}, None), ]) return keymap @@ -4336,9 +4333,9 @@ def km_weight_paint_vertex_selection(params): items.extend([ *_template_items_select_actions(params, "paint.vert_select_all"), ("view3d.select_box", {"type": 'B', "value": 'PRESS'}, None), - ("view3d.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True}, + ("view3d.select_lasso", {"type": params.action_mouse, "value": 'CLICK_DRAG', "ctrl": True}, {"properties": [("mode", 'ADD')]}), - ("view3d.select_lasso", {"type": params.action_tweak, "value": 'ANY', "shift": True, "ctrl": True}, + ("view3d.select_lasso", {"type": params.action_mouse, "value": 'CLICK_DRAG', "shift": True, "ctrl": True}, {"properties": [("mode", 'SUB')]}), ("view3d.select_circle", {"type": 'C', "value": 'PRESS'}, None), ]) @@ -4536,7 +4533,7 @@ def km_paint_curve(params): ("paintcurve.draw", {"type": 'RET', "value": 'PRESS'}, None), ("paintcurve.draw", {"type": 'NUMPAD_ENTER', "value": 'PRESS'}, None), ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), - ("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None), + ("transform.translate", {"type": params.select_mouse, "value": 'CLICK_DRAG'}, None), ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), ("transform.resize", {"type": 'S', "value": 'PRESS'}, None), ]) @@ -4652,7 +4649,9 @@ def _template_paint_radial_control(paint, rotation=False, secondary_rotation=Fal return items -def _template_view3d_select(*, type, value, legacy): +def _template_view3d_select(*, type, value, legacy, exclude_mod=None): + # NOTE: `exclude_mod` is needed since we don't want this tool to exclude Control-RMB actions when this is used + # as a tool key-map with RMB-select and `use_fallback_tool_rmb` is enabled. See T92467. return [( "view3d.select", {"type": type, "value": value, **{m: True for m in mods}}, @@ -4666,7 +4665,7 @@ def _template_view3d_select(*, type, value, legacy): (("center", "enumerate"), ("ctrl", "alt")), (("toggle", "enumerate"), ("shift", "alt")), (("toggle", "center", "enumerate"), ("shift", "ctrl", "alt")), - )] + ) if exclude_mod is None or exclude_mod not in mods] def _template_view3d_gpencil_select(*, type, value, legacy, use_select_mouse=True): @@ -5450,6 +5449,22 @@ def km_font(params): return keymap +def km_sculpt_curves(params): + items = [] + keymap = ( + "Sculpt Curves", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": items}, + ) + + items.extend([ + ("sculpt_curves.brush_stroke", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), + *_template_paint_radial_control("curves_sculpt"), + ]) + + return keymap + + def km_object_non_modal(params): items = [] keymap = ( @@ -6433,8 +6448,8 @@ def km_node_editor_tool_select_circle(params, *, fallback): "node.select_circle", # Why circle select should be used on tweak? # So that RMB or Shift-RMB is still able to set an element as active. - type=params.select_tweak if (fallback and params.use_fallback_tool_select_mouse) else params.tool_mouse, - value='ANY' if fallback else 'PRESS', + type=params.select_mouse if (fallback and params.use_fallback_tool_select_mouse) else params.tool_mouse, + value='CLICK_DRAG' if (fallback and params.use_fallback_tool_select_mouse) else 'PRESS', properties=[("wait_for_input", False)])), ]}, ) @@ -6474,7 +6489,7 @@ def km_3d_view_tool_select(params, *, fallback): *([] if (fallback and (params.select_mouse == 'RIGHTMOUSE')) else _template_items_tool_select( params, "view3d.select", "view3d.cursor3d", extend="toggle")), *([] if (not params.use_fallback_tool_rmb) else _template_view3d_select( - type=params.select_mouse, value=params.select_mouse_value, legacy=params.legacy)), + type=params.select_mouse, value=params.select_mouse_value, legacy=params.legacy, exclude_mod="ctrl")), ]}, ) @@ -6502,8 +6517,8 @@ def km_3d_view_tool_select_circle(params, *, fallback): "view3d.select_circle", # Why circle select should be used on tweak? # So that RMB or Shift-RMB is still able to set an element as active. - type=params.select_tweak if (fallback and params.use_fallback_tool_select_mouse) else params.tool_mouse, - value='ANY' if fallback else 'PRESS', + type=params.select_mouse if (fallback and params.use_fallback_tool_select_mouse) else params.tool_mouse, + value='CLICK_DRAG' if (fallback and params.use_fallback_tool_select_mouse) else 'PRESS', properties=[("wait_for_input", False)])), ]}, ) @@ -6572,15 +6587,15 @@ def km_3d_view_tool_shear(params): {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, {"items": [ ("transform.shear", - {"type": params.tool_tweak, "value": 'NORTH', **params.tool_modifier}, + {"type": params.tool_mouse, "value": 'CLICK_DRAG', "direction": 'NORTH', **params.tool_modifier}, {"properties": [("release_confirm", True), ("orient_axis_ortho", 'Y')]}), ("transform.shear", - {"type": params.tool_tweak, "value": 'SOUTH', **params.tool_modifier}, + {"type": params.tool_mouse, "value": 'CLICK_DRAG', "direction": 'SOUTH', **params.tool_modifier}, {"properties": [("release_confirm", True), ("orient_axis_ortho", 'Y')]}), # Use as fallback to catch diagonals too. ("transform.shear", - {"type": params.tool_tweak, "value": 'ANY', **params.tool_modifier}, + {"type": params.tool_mouse, "value": 'CLICK_DRAG', **params.tool_modifier}, {"properties": [("release_confirm", True), ("orient_axis_ortho", 'X')]}), ]}, ) @@ -7253,7 +7268,7 @@ def km_3d_view_tool_paint_gpencil_line(params): ("gpencil.primitive_line", {"type": 'LEFTMOUSE', "value": 'PRESS', "alt": True}, {"properties": [("wait_for_input", False)]}), # Lasso select - ("gpencil.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True, "alt": True}, None), + ("gpencil.select_lasso", {"type": params.action_mouse, "value": 'CLICK_DRAG', "ctrl": True, "alt": True}, None), ]}, ) @@ -7268,7 +7283,7 @@ def km_3d_view_tool_paint_gpencil_polyline(params): ("gpencil.primitive_polyline", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, {"properties": [("wait_for_input", False)]}), # Lasso select - ("gpencil.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True, "alt": True}, None), + ("gpencil.select_lasso", {"type": params.action_mouse, "value": 'CLICK_DRAG', "ctrl": True, "alt": True}, None), ]}, ) @@ -7285,7 +7300,7 @@ def km_3d_view_tool_paint_gpencil_box(params): ("gpencil.primitive_box", {"type": 'LEFTMOUSE', "value": 'PRESS', "alt": True}, {"properties": [("wait_for_input", False)]}), # Lasso select - ("gpencil.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True, "alt": True}, None), + ("gpencil.select_lasso", {"type": params.action_mouse, "value": 'CLICK_DRAG', "ctrl": True, "alt": True}, None), ]}, ) @@ -7302,7 +7317,7 @@ def km_3d_view_tool_paint_gpencil_circle(params): ("gpencil.primitive_circle", {"type": 'LEFTMOUSE', "value": 'PRESS', "alt": True}, {"properties": [("wait_for_input", False)]}), # Lasso select - ("gpencil.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True, "alt": True}, None), + ("gpencil.select_lasso", {"type": params.action_mouse, "value": 'CLICK_DRAG', "ctrl": True, "alt": True}, None), ]}, ) @@ -7319,7 +7334,7 @@ def km_3d_view_tool_paint_gpencil_arc(params): ("gpencil.primitive_curve", {"type": 'LEFTMOUSE', "value": 'PRESS', "alt": True}, {"properties": [("type", 'ARC'), ("wait_for_input", False)]}), # Lasso select - ("gpencil.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True, "alt": True}, None), + ("gpencil.select_lasso", {"type": params.action_mouse, "value": 'CLICK_DRAG', "ctrl": True, "alt": True}, None), ]}, ) @@ -7332,7 +7347,7 @@ def km_3d_view_tool_paint_gpencil_curve(params): ("gpencil.primitive_curve", params.tool_maybe_tweak_event, {"properties": [("type", 'CURVE'), ("wait_for_input", False)]}), # Lasso select - ("gpencil.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True, "alt": True}, None), + ("gpencil.select_lasso", {"type": params.action_mouse, "value": 'CLICK_DRAG', "ctrl": True, "alt": True}, None), ]}, ) @@ -7344,7 +7359,7 @@ def km_3d_view_tool_paint_gpencil_cutter(params): {"items": [ ("gpencil.stroke_cutter", {"type": params.tool_mouse, "value": 'PRESS'}, None), # Lasso select - ("gpencil.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True, "alt": True}, None), + ("gpencil.select_lasso", {"type": params.action_mouse, "value": 'CLICK_DRAG', "ctrl": True, "alt": True}, None), ]}, ) @@ -7414,8 +7429,8 @@ def km_3d_view_tool_edit_gpencil_select_circle(params, *, fallback): "gpencil.select_circle", # Why circle select should be used on tweak? # So that RMB or Shift-RMB is still able to set an element as active. - type=params.select_tweak if (fallback and params.use_fallback_tool_select_mouse) else params.tool_mouse, - value='ANY' if fallback else 'PRESS', + type=params.select_mouse if (fallback and params.use_fallback_tool_select_mouse) else params.tool_mouse, + value='CLICK_DRAG' if (fallback and params.use_fallback_tool_select_mouse) else 'PRESS', properties=[("wait_for_input", False)])), ]}, ) @@ -7771,6 +7786,7 @@ def generate_keymaps(params=None): km_lattice(params), km_particle(params), km_font(params), + km_sculpt_curves(params), km_object_non_modal(params), # Modal maps. diff --git a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py index c9dea8ab2e7..e65ac32d088 100644 --- a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py +++ b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py @@ -7,11 +7,8 @@ class Params: __slots__ = ( "select_mouse", "select_mouse_value", - "select_tweak", "action_mouse", - "action_tweak", "tool_mouse", - "tool_tweak", "use_mouse_emulate_3_button", ) @@ -24,9 +21,7 @@ class Params: self.tool_mouse = 'LEFTMOUSE' self.select_mouse = 'LEFTMOUSE' self.select_mouse_value = 'CLICK' - self.select_tweak = 'EVT_TWEAK_L' - self.tool_tweak = 'EVT_TWEAK_L' - self.action_tweak = 'EVT_TWEAK_R' + self.action_mouse = 'RIGHTMOUSE' self.use_mouse_emulate_3_button = use_mouse_emulate_3_button @@ -103,7 +98,7 @@ def _template_items_animation(): def _template_items_gizmo_tweak_value_drag(): return [ - ("gizmogroup.gizmo_tweak", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), + ("gizmogroup.gizmo_tweak", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, None), ] @@ -479,10 +474,10 @@ def km_outliner(params): {"properties": [("extend", False), ("extend_range", True), ("deselect_all", True)]}), ("outliner.item_activate", {"type": 'LEFTMOUSE', "value": 'CLICK', "ctrl": True, "shift": True}, {"properties": [("extend", True), ("extend_range", True), ("deselect_all", True)]}), - ("outliner.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, {"properties": [("tweak", True)]}), - ("outliner.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY', "shift": True}, + ("outliner.select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, {"properties": [("tweak", True)]}), + ("outliner.select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', "shift": True}, {"properties": [("tweak", True), ("mode", 'ADD')]}), - ("outliner.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY', "ctrl": True}, + ("outliner.select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', "ctrl": True}, {"properties": [("tweak", True), ("mode", 'SUB')]}), ("outliner.select_walk", {"type": 'UP_ARROW', "value": 'PRESS', "repeat": True}, {"properties": [("direction", 'UP')]}), @@ -504,13 +499,13 @@ def km_outliner(params): {"properties": [("all", False)]}), ("outliner.item_openclose", {"type": 'LEFTMOUSE', "value": 'CLICK', "shift": True}, {"properties": [("all", True)]}), - ("outliner.item_openclose", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, + ("outliner.item_openclose", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, {"properties": [("all", False)]}), # Fall through to generic context menu if the item(s) selected have no type specific actions. ("outliner.operation", {"type": 'RIGHTMOUSE', "value": 'PRESS'}, None), op_menu("OUTLINER_MT_context_menu", {"type": 'RIGHTMOUSE', "value": 'PRESS'}), - ("outliner.item_drag_drop", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), - ("outliner.item_drag_drop", {"type": 'EVT_TWEAK_L', "value": 'ANY', "shift": True}, None), + ("outliner.item_drag_drop", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, None), + ("outliner.item_drag_drop", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', "shift": True}, None), ("outliner.show_hierarchy", {"type": 'A', "value": 'PRESS'}, None), ("outliner.show_active", {"type": 'PERIOD', "value": 'PRESS'}, None), ("outliner.show_active", {"type": 'F', "value": 'PRESS'}, None), @@ -573,7 +568,7 @@ def km_uv_editor(params): ("uv.select", {"type": 'LEFTMOUSE', "value": 'CLICK', "shift": True}, {"properties": [("extend", True), ("deselect_all", False)]}), - ("transform.translate", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), + ("transform.translate", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, None), ("uv.select_loop", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK', "shift": True}, {"properties": [("extend", True)]}), ("uv.select_loop", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'}, @@ -742,7 +737,7 @@ def km_view3d(params): # Menus. op_menu_pie("VIEW3D_MT_snap_pie", {"type": 'X', "value": 'PRESS', "shift": True}), # Transform. - ("transform.translate", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), + ("transform.translate", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, None), op_menu_pie("VIEW3D_MT_pivot_pie", {"type": 'PERIOD', "value": 'PRESS'}), op_menu_pie("VIEW3D_MT_orientations_pie", {"type": 'COMMA', "value": 'PRESS'}), ("view3d.toggle_xray", {"type": 'X', "value": 'PRESS', "alt": True}, None), @@ -782,9 +777,9 @@ def km_mask_editing(params): {"properties": [("deselect", True)]}), ("mask.select_box", {"type": 'Q', "value": 'PRESS'}, None), ("mask.select_circle", {"type": 'C', "value": 'PRESS'}, None), - ("mask.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True, "alt": True}, + ("mask.select_lasso", {"type": params.action_mouse, "value": 'CLICK_DRAG', "ctrl": True, "alt": True}, {"properties": [("mode", 'ADD')]}), - ("mask.select_lasso", {"type": params.action_tweak, "value": 'ANY', "shift": True, "ctrl": True, "alt": True}, + ("mask.select_lasso", {"type": params.action_mouse, "value": 'CLICK_DRAG', "shift": True, "ctrl": True, "alt": True}, {"properties": [("mode", 'SUB')]}), ("mask.select_more", {"type": 'UP_ARROW', "value": 'PRESS', "repeat": True}, None), ("mask.select_less", {"type": 'DOWN_ARROW', "value": 'PRESS', "repeat": True}, None), @@ -826,7 +821,7 @@ def km_markers(params): items.extend([ ("wm.search_menu", {"type": 'TAB', "value": 'PRESS'}, None), ("marker.add", {"type": 'M', "value": 'PRESS'}, None), - ("marker.move", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), + ("marker.move", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, None), ("marker.duplicate", {"type": 'D', "value": 'PRESS', "ctrl": True}, None), ("marker.select", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), ("marker.select", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, @@ -906,11 +901,11 @@ def km_graph_editor(params): {"properties": [("axis_range", False)]}), ("graph.select_box", {"type": 'Q', "value": 'PRESS', "alt": True}, {"properties": [("axis_range", True)]}), - ("graph.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, + ("graph.select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, {"properties":[("tweak", True), ("axis_range", False), ("mode", 'SET')]}), - ("graph.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY', "shift": True}, + ("graph.select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', "shift": True}, {"properties":[("tweak", True), ("axis_range", False), ("mode", 'ADD')]}), - ("graph.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY', "ctrl": True}, + ("graph.select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', "ctrl": True}, {"properties":[("tweak", True), ("axis_range", False), ("mode", 'SUB')]}), ("graph.select_more", {"type": 'UP_ARROW', "value": 'PRESS', "repeat": True}, None), ("graph.select_less", {"type": 'DOWN_ARROW', "value": 'PRESS', "repeat": True}, None), @@ -931,8 +926,8 @@ def km_graph_editor(params): ("graph.view_frame", {"type": 'A', "value": 'PRESS', "shift": True}, None), ("anim.channels_editable_toggle", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'}, None), ("transform.translate", {"type": 'W', "value": 'PRESS'}, None), - ("transform.translate", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), - ("transform.translate", {"type": 'EVT_TWEAK_M', "value": 'ANY'}, None), + ("transform.translate", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, None), + ("transform.translate", {"type": 'MIDDLEMOUSE', "value": 'CLICK_DRAG'}, None), ("transform.transform", {"type": 'Y', "value": 'PRESS'}, {"properties": [("mode", 'TIME_EXTEND')]}), ("transform.rotate", {"type": 'E', "value": 'PRESS'}, None), @@ -1087,20 +1082,20 @@ def km_node_editor(params): items.extend(node_select_ops('LEFTMOUSE')) items.extend([ - ("node.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, + ("node.select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, {"properties": [("tweak", True)]}), - ("node.select_lasso", {"type": 'EVT_TWEAK_L', "value": 'ANY', "ctrl": True, "alt": True}, + ("node.select_lasso", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', "ctrl": True, "alt": True}, {"properties": [("mode", 'ADD')]}), - ("node.select_lasso", {"type": 'EVT_TWEAK_L', "value": 'ANY', "shift": True, "ctrl": True, "alt": True}, + ("node.select_lasso", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', "shift": True, "ctrl": True, "alt": True}, {"properties": [("mode", 'SUB')]}), - ("node.link", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, + ("node.link", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, {"properties": [("detach", False)]}), - ("node.link", {"type": 'EVT_TWEAK_L', "value": 'ANY', "ctrl": True}, + ("node.link", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', "ctrl": True}, {"properties": [("detach", True)]}), - ("node.resize", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), - ("node.add_reroute", {"type": params.action_tweak, "value": 'ANY', "shift": True}, None), - ("node.links_cut", {"type": params.action_tweak, "value": 'ANY', "ctrl": True}, None), - ("node.links_mute", {"type": params.action_tweak, "value": 'ANY', "ctrl": True, "alt": True}, None), + ("node.resize", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, None), + ("node.add_reroute", {"type": params.action_mouse, "value": 'CLICK_DRAG', "shift": True}, None), + ("node.links_cut", {"type": params.action_mouse, "value": 'CLICK_DRAG', "ctrl": True}, None), + ("node.links_mute", {"type": params.action_mouse, "value": 'CLICK_DRAG', "ctrl": True, "alt": True}, None), ("node.select_link_viewer", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True, "ctrl": True}, None), ("node.backimage_fit", {"type": 'A', "value": 'PRESS', "alt": True}, None), ("node.backimage_sample", {"type": 'LEFTMOUSE', "value": 'PRESS', "alt": True}, None), @@ -1147,15 +1142,15 @@ def km_node_editor(params): ("node.viewer_border", {"type": 'Z', "value": 'PRESS'}, None), ("node.clear_viewer_border", {"type": 'Z', "value": 'PRESS', "alt": True}, None), ("node.translate_attach", {"type": 'W', "value": 'PRESS'}, None), - ("node.translate_attach", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), - ("node.translate_attach", {"type": 'EVT_TWEAK_M', "value": 'ANY'}, None), + ("node.translate_attach", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, None), + ("node.translate_attach", {"type": 'MIDDLEMOUSE', "value": 'CLICK_DRAG'}, None), ("transform.translate", {"type": 'W', "value": 'PRESS'}, None), - ("transform.translate", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, + ("transform.translate", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, {"properties": [("release_confirm", True)]}), ("transform.rotate", {"type": 'E', "value": 'PRESS'}, None), ("transform.resize", {"type": 'R', "value": 'PRESS'}, None), - ("node.move_detach_links_release", {"type": params.action_tweak, "value": 'ANY', "alt": True}, None), - ("node.move_detach_links", {"type": 'EVT_TWEAK_L', "value": 'ANY', "alt": True}, None), + ("node.move_detach_links_release", {"type": params.action_mouse, "value": 'CLICK_DRAG', "alt": True}, None), + ("node.move_detach_links", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', "alt": True}, None), ("wm.context_toggle", {"type": 'X', "value": 'PRESS'}, {"properties": [("data_path", 'tool_settings.use_snap')]}), ]) @@ -1177,7 +1172,7 @@ def km_info(params): ("info.select_pick", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), ("info.select_pick", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, {"properties": [("extend", True)]}), - ("info.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, + ("info.select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, {"properties": [("wait_for_input", False)]}), ("info.select_all", {"type": 'A', "value": 'PRESS', "ctrl": True}, {"properties": [("action", 'SELECT')]}), @@ -1300,8 +1295,8 @@ def km_file_browser_main(params): ("file.next", {"type": 'BUTTON5MOUSE', "value": 'CLICK'}, None), ("file.select_all", {"type": 'A', "value": 'PRESS', "ctrl": True}, None), ("file.select_box", {"type": 'Q', "value": 'PRESS'}, None), - ("file.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), - ("file.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY', "shift": True}, + ("file.select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, None), + ("file.select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', "shift": True}, {"properties": [("mode", 'ADD')]}), ("file.highlight", {"type": 'MOUSEMOVE', "value": 'ANY', "any": True}, None), ("file.sort_column_ui_context", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), @@ -1391,11 +1386,11 @@ def km_dopesheet(params): {"properties": [("axis_range", False)]}), ("action.select_box", {"type": 'Q', "value": 'PRESS', "alt": True}, {"properties": [("axis_range", True)]}), - ("action.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, + ("action.select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, {"properties":[("tweak", True), ("axis_range", False), ("wait_for_input", False), ("mode", 'SET')]}), - ("action.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY', "shift": True}, + ("action.select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', "shift": True}, {"properties":[("tweak", True), ("axis_range", False), ("wait_for_input", False), ("mode", 'ADD')]}), - ("action.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY', "ctrl": True}, + ("action.select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', "ctrl": True}, {"properties":[("tweak", True), ("axis_range", False), ("wait_for_input", False), ("mode", 'SUB')]}), ("action.select_column", {"type": 'K', "value": 'PRESS'}, {"properties": [("mode", 'KEYS')]}), @@ -1430,9 +1425,9 @@ def km_dopesheet(params): ("anim.channels_select_filter", {"type": 'F', "value": 'PRESS', "ctrl": True}, None), ("transform.transform", {"type": 'W', "value": 'PRESS'}, {"properties": [("mode", 'TIME_TRANSLATE')]}), - ("transform.transform", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, + ("transform.transform", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, {"properties": [("mode", 'TIME_TRANSLATE')]}), - ("transform.transform", {"type": 'EVT_TWEAK_M', "value": 'ANY'}, + ("transform.transform", {"type": 'MIDDLEMOUSE', "value": 'CLICK_DRAG'}, {"properties": [("mode", 'TIME_TRANSLATE')]}), ("transform.transform", {"type": 'E', "value": 'PRESS'}, {"properties": [("mode", 'TIME_EXTEND')]}), @@ -1518,11 +1513,11 @@ def km_nla_editor(params): {"properties": [("axis_range", False)]}), ("nla.select_box", {"type": 'Q', "value": 'PRESS', "alt": True}, {"properties": [("axis_range", True)]}), - ("nla.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, + ("nla.select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, {"properties":[("tweak", True), ("mode", 'SET')]}), - ("nla.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY', "shift": True}, + ("nla.select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', "shift": True}, {"properties":[("tweak", True), ("mode", 'ADD')]}), - ("nla.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY', "ctrl": True}, + ("nla.select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', "ctrl": True}, {"properties":[("tweak", True), ("mode", 'SUB')]}), ("nla.view_all", {"type": 'A', "value": 'PRESS'}, None), ("nla.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None), @@ -1542,9 +1537,9 @@ def km_nla_editor(params): ("nla.move_down", {"type": 'PAGE_DOWN', "value": 'PRESS'}, None), ("transform.transform", {"type": 'W', "value": 'PRESS'}, {"properties": [("mode", 'TRANSLATION')]}), - ("transform.transform", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, + ("transform.transform", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, {"properties": [("mode", 'TRANSLATION')]}), - ("transform.transform", {"type": 'EVT_TWEAK_M', "value": 'ANY'}, + ("transform.transform", {"type": 'MIDDLEMOUSE', "value": 'CLICK_DRAG'}, {"properties": [("mode", 'TRANSLATION')]}), ("transform.transform", {"type": 'E', "value": 'PRESS'}, {"properties": [("mode", 'TIME_EXTEND')]}), @@ -1701,7 +1696,7 @@ def km_text(params): ("text.scroll_bar", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None), ("text.scroll", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None), ("text.scroll", {"type": 'TRACKPADPAN', "value": 'ANY'}, None), - ("text.selection_set", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), + ("text.selection_set", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, None), ("text.cursor_set", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), ("text.selection_set", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, None), ("text.scroll", {"type": 'WHEELUPMOUSE', "value": 'PRESS'}, @@ -1823,19 +1818,19 @@ def km_sequencer(params): ("sequencer.select_linked_pick", {"type": 'RIGHT_BRACKET', "value": 'PRESS', "shift": True}, {"properties": [("extend", True)]}), ("sequencer.select_linked", {"type": 'RIGHT_BRACKET', "value": 'PRESS', "ctrl": True}, None), - ("sequencer.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, + ("sequencer.select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, {"properties":[("tweak", True), ("mode", 'SET')]}), - ("sequencer.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY', "shift": True}, + ("sequencer.select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', "shift": True}, {"properties":[("tweak", True), ("mode", 'ADD')]}), - ("sequencer.select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY', "ctrl": True}, + ("sequencer.select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', "ctrl": True}, {"properties":[("tweak", True), ("mode", 'SUB')]}), ("sequencer.select_grouped", {"type": 'G', "value": 'PRESS', "shift": True}, None), ("sequencer.slip", {"type": 'R', "value": 'PRESS'}, None), ("wm.context_set_int", {"type": 'O', "value": 'PRESS'}, {"properties": [("data_path", 'scene.sequence_editor.overlay_frame'), ("value", 0)]}), ("transform.seq_slide", {"type": 'W', "value": 'PRESS'}, None), - ("transform.seq_slide", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), - ("transform.seq_slide", {"type": 'EVT_TWEAK_M', "value": 'ANY'}, None), + ("transform.seq_slide", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, None), + ("transform.seq_slide", {"type": 'MIDDLEMOUSE', "value": 'CLICK_DRAG'}, None), ("transform.transform", {"type": 'E', "value": 'PRESS'}, {"properties": [("mode", 'TIME_EXTEND')]}), *_template_items_context_menu("SEQUENCER_MT_context_menu", {"type": 'RIGHTMOUSE', "value": 'PRESS'}), @@ -2059,7 +2054,7 @@ def km_clip_editor(params): ("wm.context_toggle", {"type": 'M', "value": 'PRESS'}, {"properties": [("data_path", 'space_data.use_mute_footage')]}), ("transform.translate", {"type": 'W', "value": 'PRESS'}, None), - ("transform.translate", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), + ("transform.translate", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, None), ("transform.resize", {"type": 'R', "value": 'PRESS'}, None), ("transform.rotate", {"type": 'E', "value": 'PRESS'}, None), ("clip.clear_track_path", {"type": 'T', "value": 'PRESS', "alt": True}, @@ -2113,7 +2108,7 @@ def km_clip_graph_editor(params): ("clip.graph_disable_markers", {"type": 'D', "value": 'PRESS', "shift": True}, {"properties": [("action", 'TOGGLE')]}), ("transform.translate", {"type": 'W', "value": 'PRESS'}, None), - ("transform.translate", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), + ("transform.translate", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, None), ("transform.resize", {"type": 'R', "value": 'PRESS'}, None), ("transform.rotate", {"type": 'E', "value": 'PRESS'}, None), ]) @@ -2227,10 +2222,10 @@ def km_animation_channels(params): ("anim.channels_select_all", {"type": 'A', "value": 'PRESS', "ctrl": True}, {"properties": [("action", 'SELECT')]}), ("anim.channels_select_all", {"type": 'A', "value": 'PRESS', "ctrl": True, "shift": True}, {"properties": [("action", 'DESELECT')]}), ("anim.channels_select_all", {"type": 'I', "value": 'PRESS', "ctrl": True}, {"properties": [("action", 'INVERT')]}), - ("anim.channels_select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), - ("anim.channels_select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY', "shift": True,}, + ("anim.channels_select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, None), + ("anim.channels_select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', "shift": True,}, {"properties": [("extend", True)]}), - ("anim.channels_select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY', "ctrl": True,}, + ("anim.channels_select_box", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG', "ctrl": True,}, {"properties": [("deselect", True)]}), # Delete. ("anim.channels_delete", {"type": 'BACK_SPACE', "value": 'PRESS'}, None), @@ -2359,7 +2354,7 @@ def km_grease_pencil_stroke_edit_mode(params): # Isolate layer ("gpencil.layer_isolate", {"type": 'NUMPAD_ASTERIX', "value": 'PRESS'}, None), # Transform tools - ("transform.translate", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), + ("transform.translate", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, None), ("wm.context_toggle", {"type": 'B', "value": 'PRESS'}, {"properties": [("data_path", 'tool_settings.use_proportional_edit')]}), # Vertex group menu @@ -2482,7 +2477,7 @@ def km_grease_pencil_stroke_paint_erase(params): # Box select (used by eraser) ("gpencil.select_box", {"type": 'B', "value": 'PRESS'}, None), # Lasso select - ("gpencil.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True, "alt": True}, None), + ("gpencil.select_lasso", {"type": params.action_mouse, "value": 'CLICK_DRAG', "ctrl": True, "alt": True}, None), ]) return keymap @@ -3125,7 +3120,7 @@ def km_paint_curve(params): ("paintcurve.draw", {"type": 'RET', "value": 'PRESS'}, None), ("paintcurve.draw", {"type": 'NUMPAD_ENTER', "value": 'PRESS'}, None), ("transform.translate", {"type": 'W', "value": 'PRESS'}, None), - ("transform.translate", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), + ("transform.translate", {"type": 'LEFTMOUSE', "value": 'CLICK_DRAG'}, None), ("transform.rotate", {"type": 'E', "value": 'PRESS'}, None), ("transform.resize", {"type": 'R', "value": 'PRESS'}, None), ]) @@ -3408,9 +3403,6 @@ def km_sculpt(params): ("sculpt.set_detail_size", {"type": 'D', "value": 'PRESS', "shift": True, "alt": True}, None), # Remesh ("object.voxel_remesh", {"type": 'R', "value": 'PRESS', "ctrl": True}, None), - ("object.quadriflow_remesh", {"type": 'R', "value": 'PRESS', "ctrl": True, "alt": True}, None), - # Remesh - ("object.voxel_remesh", {"type": 'R', "value": 'PRESS', "ctrl": True}, None), ("object.voxel_size_edit", {"type": 'R', "value": 'PRESS', "shift": True}, None), ("object.quadriflow_remesh", {"type": 'R', "value": 'PRESS', "ctrl": True, "alt": True}, None), # Brush properties @@ -4021,9 +4013,9 @@ def km_3d_view_tool_interactive_add(params): "3D View Tool: Object, Add Primitive", {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, {"items": [ - ("view3d.interactive_add", {"type": params.tool_tweak, "value": 'ANY'}, + ("view3d.interactive_add", {"type": params.tool_mouse, "value": 'CLICK_DRAG'}, {"properties": [("wait_for_input", False)]}), - ("view3d.interactive_add", {"type": params.tool_tweak, "value": 'ANY', "ctrl": True}, + ("view3d.interactive_add", {"type": params.tool_mouse, "value": 'CLICK_DRAG', "ctrl": True}, {"properties": [("wait_for_input", False)]}), ]}, ) @@ -4187,29 +4179,28 @@ def keymap_transform_tool_mmb(keymap): km_items_new = [] for kmi in km_items: ty = kmi[1]["type"] + value = kmi[1]["value"] if km_name.endswith(" (fallback)"): if ty == 'RIGHTMOUSE': kmi = (kmi[0], kmi[1].copy(), kmi[2]) kmi[1]["type"] = 'LEFTMOUSE' km_items_new.append(kmi) - elif ty == 'EVT_TWEAK_R': - kmi = (kmi[0], kmi[1].copy(), kmi[2]) - kmi[1]["type"] = 'EVT_TWEAK_L' - km_items_new.append(kmi) else: if ty == 'LEFTMOUSE': - kmi = (kmi[0], kmi[1].copy(), kmi[2]) - kmi[1]["type"] = 'MIDDLEMOUSE' - km_items_new.append(kmi) - elif ty == 'EVT_TWEAK_L': - kmi = (kmi[0], kmi[1].copy(), kmi[2]) - if kmi[1]["value"] == 'ANY': + if value == 'CLICK_DRAG': + kmi = (kmi[0], kmi[1].copy(), kmi[2]) + if kmi[1].get("direction", 'ANY') == 'ANY': + kmi[1]["type"] = 'MIDDLEMOUSE' + kmi[1]["value"] = 'PRESS' + else: + # Directional tweaking can't be replaced by middle-mouse. + kmi[1]["type"] = 'MIDDLEMOUSE' + km_items_new.append(kmi) + else: + kmi = (kmi[0], kmi[1].copy(), kmi[2]) kmi[1]["type"] = 'MIDDLEMOUSE' kmi[1]["value"] = 'PRESS' - else: - # Directional tweaking can't be replaced by middle-mouse. - kmi[1]["type"] = 'EVT_TWEAK_M' - km_items_new.append(kmi) + km_items_new.append(kmi) km_items.extend(km_items_new) diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py index 9ba5480cf5a..a7f401afad1 100644 --- a/release/scripts/startup/bl_operators/wm.py +++ b/release/scripts/startup/bl_operators/wm.py @@ -963,21 +963,19 @@ class WM_OT_url_open(Operator): return {'FINISHED'} -# NOTE: needed for Python 3.10 since there are name-space issues with annotations. -# This can be moved into the class as a static-method once Python 3.9x is dropped. -def _wm_url_open_preset_type_items(_self, _context): - return [item for (item, _) in WM_OT_url_open_preset.preset_items] - - class WM_OT_url_open_preset(Operator): """Open a preset website in the web browser""" bl_idname = "wm.url_open_preset" bl_label = "Open Preset Website" bl_options = {'INTERNAL'} + @staticmethod + def _wm_url_open_preset_type_items(_self, _context): + return [item for (item, _) in WM_OT_url_open_preset.preset_items] + type: EnumProperty( name="Site", - items=_wm_url_open_preset_type_items, + items=WM_OT_url_open_preset._wm_url_open_preset_type_items, ) id: StringProperty( @@ -997,11 +995,10 @@ class WM_OT_url_open_preset(Operator): return "https://www.blender.org/download/releases/%d-%d/" % bpy.app.version[:2] def _url_from_manual(self, _context): - if bpy.app.version_cycle in {"rc", "release"}: - manual_version = "%d.%d" % bpy.app.version[:2] - else: - manual_version = "dev" - return "https://docs.blender.org/manual/en/" + manual_version + "/" + return "https://docs.blender.org/manual/en/%d.%d/" % bpy.app.version[:2] + + def _url_from_api(self, _context): + return "https://docs.blender.org/api/%d.%d/" % bpy.app.version[:2] # This list is: (enum_item, url) pairs. # Allow dynamically extending. @@ -1016,9 +1013,12 @@ class WM_OT_url_open_preset(Operator): (('RELEASE_NOTES', "Release Notes", "Read about what's new in this version of Blender"), _url_from_release_notes), - (('MANUAL', "Manual", + (('MANUAL', "User Manual", "The reference manual for this version of Blender"), _url_from_manual), + (('API', "Python API Reference", + "The API reference manual for this version of Blender"), + _url_from_api), # Static URL's. (('FUND', "Development Fund", @@ -1233,11 +1233,7 @@ class WM_OT_doc_view(Operator): bl_label = "View Documentation" doc_id: doc_id - if bpy.app.version_cycle in {"release", "rc", "beta"}: - _prefix = ("https://docs.blender.org/api/%d.%d" % - (bpy.app.version[0], bpy.app.version[1])) - else: - _prefix = ("https://docs.blender.org/api/master") + _prefix = "https://docs.blender.org/api/%d.%d" % bpy.app.version[:2] def execute(self, _context): url = _wm_doc_get_id(self.doc_id, do_url=True, url_prefix=self._prefix, report=self.report) @@ -1283,12 +1279,6 @@ rna_vector_subtype_items = ( ) -# NOTE: needed for Python 3.10 since there are name-space issues with annotations. -# This can be moved into the class as a static-method once Python 3.9x is dropped. -def _wm_properties_edit_subtype_items(_self, _context): - return WM_OT_properties_edit.subtype_items - - class WM_OT_properties_edit(Operator): """Change a custom property's type, or adjust how it is displayed in the interface""" bl_idname = "wm.properties_edit" @@ -1395,7 +1385,7 @@ class WM_OT_properties_edit(Operator): ) subtype: EnumProperty( name="Subtype", - items=_wm_properties_edit_subtype_items, + items=WM_OT_properties_edit.subtype_items, ) # String properties. diff --git a/release/scripts/startup/bl_ui/properties_animviz.py b/release/scripts/startup/bl_ui/properties_animviz.py index 548ce72c429..629399084ba 100644 --- a/release/scripts/startup/bl_ui/properties_animviz.py +++ b/release/scripts/startup/bl_ui/properties_animviz.py @@ -24,55 +24,55 @@ class MotionPathButtonsPanel: layout.use_property_split = True layout.use_property_decorate = False - row = layout.row(align=True) - row.prop(mps, "type") - if mps.type == 'RANGE': - if bones: - row.operator("pose.paths_range_update", text="", icon='TIME') - else: - row.operator("object.paths_range_update", text="", icon='TIME') - + # Display Range + col = layout.column(align=True) + col.prop(mps, "type") + col = layout.column(align=True) if mps.type == 'CURRENT_FRAME': - col = layout.column(align=True) col.prop(mps, "frame_before", text="Frame Range Before") col.prop(mps, "frame_after", text="After") - col.prop(mps, "frame_step", text="Step") - elif mps.type == 'RANGE': - col = layout.column(align=True) - col.prop(mps, "frame_start", text="Frame Range Start") - col.prop(mps, "frame_end", text="End") - col.prop(mps, "frame_step", text="Step") + col.prop(mps, "frame_step", text="Step") + + # Calculation Range + col = layout.column(align=True) + row = col.row(align=True) + row.prop(mps, "range", text="Calculation Range") if mpath: col = layout.column(align=True) - col.enabled = False - if bones: - col.prop(mpath, "frame_start", text="Bone Cache From") - else: - col.prop(mpath, "frame_start", text="Cache From") - col.prop(mpath, "frame_end", text="To") + row = col.row(align=True) + row.enabled = False + row.prop(mpath, "frame_start", text="Cached Range") + row.prop(mpath, "frame_end", text="") col = layout.column(align=True) - + row = col.row(align=True) if bones: - col.operator("pose.paths_update", text="Update Paths", icon='BONE_DATA') + row.operator("pose.paths_update", text="Update Paths", icon='BONE_DATA') + row.operator("pose.paths_clear", text="", icon='X').only_selected = True + row = col.row(align=True) + row.operator("object.paths_update_visible", text="Update All Paths", icon='WORLD') + row.operator("pose.paths_clear", text="", icon='X').only_selected = False else: - col.operator("object.paths_update", text="Update Paths", icon='OBJECT_DATA') + row.operator("object.paths_update", text="Update Paths", icon='OBJECT_DATA') + row.operator("object.paths_clear", text="", icon='X').only_selected = True + row = col.row(align=True) + row.operator("object.paths_update_visible", text="Update All Paths", icon='WORLD') + row.operator("object.paths_clear", text="", icon='X').only_selected = False else: col = layout.column(align=True) - col.label(text="Nothing to show yet...", icon='ERROR') + col.label(text="No Motion Path generated yet", icon='ERROR') + # Don't invoke settings popup because settings are right above + col.operator_context = 'EXEC_REGION_WIN' if bones: - col.operator("pose.paths_calculate", text="Calculate...", icon='BONE_DATA') + col.operator( + "pose.paths_calculate", text="Generate for selected bones", icon='BONE_DATA') else: - col.operator("object.paths_calculate", text="Calculate...", icon='OBJECT_DATA') - - row = col.row(align=True) - row.operator("object.paths_update_visible", text="Update All Paths", icon='WORLD') - if bones: - row.operator("pose.paths_clear", text="", icon='X') - else: - row.operator("object.paths_clear", text="", icon='X') + col.operator("object.paths_calculate", text="Generate", icon='OBJECT_DATA') + row = col.row(align=True) + row.operator("object.paths_update_visible", text="Update All Paths", icon='WORLD') + row.operator("object.paths_clear", text="", icon='X').only_selected = False class MotionPathButtonsPanel_display: diff --git a/release/scripts/startup/bl_ui/properties_data_curves.py b/release/scripts/startup/bl_ui/properties_data_curves.py index 3e350575bc8..1bb5fc9afbe 100644 --- a/release/scripts/startup/bl_ui/properties_data_curves.py +++ b/release/scripts/startup/bl_ui/properties_data_curves.py @@ -35,6 +35,17 @@ class DATA_PT_context_curves(DataButtonsPanel, Panel): layout.template_ID(space, "pin_id") +class DATA_PT_curves_surface(DataButtonsPanel, Panel): + bl_label = "Surface" + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'} + + def draw(self, context): + layout = self.layout + ob = context.object + + layout.prop(ob.data, "surface") + + class CURVES_MT_add_attribute(Menu): bl_label = "Add Attribute" @@ -115,6 +126,7 @@ class DATA_PT_custom_props_curves(DataButtonsPanel, PropertyPanel, Panel): classes = ( DATA_PT_context_curves, DATA_PT_CURVES_attributes, + DATA_PT_curves_surface, DATA_PT_custom_props_curves, CURVES_MT_add_attribute, CURVES_UL_attributes, diff --git a/release/scripts/startup/bl_ui/properties_paint_common.py b/release/scripts/startup/bl_ui/properties_paint_common.py index ca623797c49..9e40a8d364a 100644 --- a/release/scripts/startup/bl_ui/properties_paint_common.py +++ b/release/scripts/startup/bl_ui/properties_paint_common.py @@ -79,6 +79,8 @@ class UnifiedPaintPanel: return tool_settings.gpencil_weight_paint elif mode == 'VERTEX_GPENCIL': return tool_settings.gpencil_vertex_paint + elif mode == 'SCULPT_CURVES': + return tool_settings.curves_sculpt return None @staticmethod diff --git a/release/scripts/startup/bl_ui/space_dopesheet.py b/release/scripts/startup/bl_ui/space_dopesheet.py index 8e328e7cf2b..7b7fc9dcf77 100644 --- a/release/scripts/startup/bl_ui/space_dopesheet.py +++ b/release/scripts/startup/bl_ui/space_dopesheet.py @@ -663,6 +663,10 @@ class DOPESHEET_MT_context_menu(Menu): layout.operator_menu_enum("action.mirror", "type", text="Mirror") layout.operator_menu_enum("action.snap", "type", text="Snap") + if st.mode == 'DOPESHEET': + layout.separator() + layout.menu("VIEW3D_MT_motion_path") + class DOPESHEET_MT_channel_context_menu(Menu): bl_label = "Dope Sheet Channel Context Menu" diff --git a/release/scripts/startup/bl_ui/space_graph.py b/release/scripts/startup/bl_ui/space_graph.py index 6f9ef12c3b7..6bc11d51ca0 100644 --- a/release/scripts/startup/bl_ui/space_graph.py +++ b/release/scripts/startup/bl_ui/space_graph.py @@ -390,6 +390,9 @@ class GRAPH_MT_context_menu(Menu): layout.operator_menu_enum("graph.mirror", "type", text="Mirror") layout.operator_menu_enum("graph.snap", "type", text="Snap") + layout.separator() + layout.menu("VIEW3D_MT_motion_path") + class GRAPH_MT_pivot_pie(Menu): bl_label = "Pivot Point" diff --git a/release/scripts/startup/bl_ui/space_toolsystem_common.py b/release/scripts/startup/bl_ui/space_toolsystem_common.py index 411db8781e1..3e4f7f6fbcb 100644 --- a/release/scripts/startup/bl_ui/space_toolsystem_common.py +++ b/release/scripts/startup/bl_ui/space_toolsystem_common.py @@ -1038,9 +1038,6 @@ def _activate_by_item(context, space_type, item, index, *, as_fallback=False): if props is None: print("Error:", gizmo_group, "could not access properties!") else: - for key in props.bl_rna.properties.keys(): - props.property_unset(key) - gizmo_properties = item.widget_properties if gizmo_properties is not None: if not isinstance(gizmo_properties, list): diff --git a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py index 338bf5a9d5d..f4aa4c50d76 100644 --- a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py +++ b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py @@ -2306,6 +2306,19 @@ class _defs_gpencil_weight: ) +class _defs_curves_sculpt: + + @staticmethod + def generate_from_brushes(context): + return generate_from_enum_ex( + context, + idname_prefix="builtin_brush.", + icon_prefix="ops.curves.sculpt_", + type= bpy.types.Brush, + attr="curves_sculpt_tool", + ) + + class _defs_gpencil_vertex: @staticmethod @@ -3065,6 +3078,9 @@ class VIEW3D_PT_tools_active(ToolSelectPanelHelper, Panel): else () ), ], + 'SCULPT_CURVES': [ + _defs_curves_sculpt.generate_from_brushes, + ], } diff --git a/release/scripts/startup/bl_ui/space_topbar.py b/release/scripts/startup/bl_ui/space_topbar.py index 493cad6d2db..3b6bdd01efa 100644 --- a/release/scripts/startup/bl_ui/space_topbar.py +++ b/release/scripts/startup/bl_ui/space_topbar.py @@ -448,8 +448,7 @@ class TOPBAR_MT_file_import(Menu): def draw(self, _context): if bpy.app.build_options.collada: - self.layout.operator("wm.collada_import", - text="Collada (Default) (.dae)") + self.layout.operator("wm.collada_import", text="Collada (.dae)") if bpy.app.build_options.alembic: self.layout.operator("wm.alembic_import", text="Alembic (.abc)") if bpy.app.build_options.usd: @@ -467,8 +466,7 @@ class TOPBAR_MT_file_export(Menu): def draw(self, _context): self.layout.operator("wm.obj_export", text="Wavefront OBJ (.obj)") if bpy.app.build_options.collada: - self.layout.operator("wm.collada_export", - text="Collada (Default) (.dae)") + self.layout.operator("wm.collada_export", text="Collada (.dae)") if bpy.app.build_options.alembic: self.layout.operator("wm.alembic_export", text="Alembic (.abc)") if bpy.app.build_options.usd: @@ -690,8 +688,8 @@ class TOPBAR_MT_help(Menu): layout.separator() layout.operator( - "wm.url_open", text="Python API Reference", icon='URL', - ).url = bpy.types.WM_OT_doc_view._prefix + "wm.url_open_preset", text="Python API Reference", icon='URL', + ).type = 'API' if show_developer: layout.operator( diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py index fc1911910c4..f80ad378b3c 100644 --- a/release/scripts/startup/bl_ui/space_userpref.py +++ b/release/scripts/startup/bl_ui/space_userpref.py @@ -1718,6 +1718,7 @@ class USERPREF_PT_ndof_settings(Panel): if show_3dview_settings: col.prop(props, "ndof_show_guide") col.prop(props, "ndof_zoom_invert") + col.prop(props, "ndof_lock_camera_pan_zoom") row = col.row(heading="Pan") row.prop(props, "ndof_pan_yz_swap_axis", text="Swap Y and Z Axes") diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index 61ba6189be4..cd0306d31fd 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -468,6 +468,38 @@ class _draw_tool_settings_context_mode: return True + @staticmethod + def SCULPT_CURVES(context, layout, tool): + if (tool is None) or (not tool.has_datablock): + return False + + paint = context.tool_settings.curves_sculpt + layout.template_ID_preview(paint, "brush", rows=3, cols=8, hide_buttons=True) + + brush = paint.brush + if brush is None: + return False + + UnifiedPaintPanel.prop_unified( + layout, + context, + brush, + "size", + unified_name="use_unified_size", + text="Radius", + slider=True, + header=True + ) + + UnifiedPaintPanel.prop_unified( + layout, + context, + brush, + "strength", + unified_name="use_unified_strength", + header=True + ) + class VIEW3D_HT_header(Header): bl_space_type = 'VIEW_3D' @@ -1165,23 +1197,24 @@ class VIEW3D_MT_view_viewpoint(Menu): def draw(self, _context): layout = self.layout + i18n_text_ctxt = bpy.app.translations.contexts_C_to_py['BLT_I18NCONTEXT_EDITOR_VIEW3D'] - layout.operator("view3d.view_camera", text="Camera") + layout.operator("view3d.view_camera", text="Camera", text_ctxt=i18n_text_ctxt) layout.separator() - layout.operator("view3d.view_axis", text="Top").type = 'TOP' - layout.operator("view3d.view_axis", text="Bottom").type = 'BOTTOM' + layout.operator("view3d.view_axis", text="Top", text_ctxt=i18n_text_ctxt).type = 'TOP' + layout.operator("view3d.view_axis", text="Bottom", text_ctxt=i18n_text_ctxt).type = 'BOTTOM' layout.separator() - layout.operator("view3d.view_axis", text="Front").type = 'FRONT' - layout.operator("view3d.view_axis", text="Back").type = 'BACK' + layout.operator("view3d.view_axis", text="Front", text_ctxt=i18n_text_ctxt).type = 'FRONT' + layout.operator("view3d.view_axis", text="Back", text_ctxt=i18n_text_ctxt).type = 'BACK' layout.separator() - layout.operator("view3d.view_axis", text="Right").type = 'RIGHT' - layout.operator("view3d.view_axis", text="Left").type = 'LEFT' + layout.operator("view3d.view_axis", text="Right", text_ctxt=i18n_text_ctxt).type = 'RIGHT' + layout.operator("view3d.view_axis", text="Left", text_ctxt=i18n_text_ctxt).type = 'LEFT' class VIEW3D_MT_view_navigation(Menu): @@ -1248,31 +1281,31 @@ class VIEW3D_MT_view_align_selected(Menu): def draw(self, _context): layout = self.layout - props = layout.operator("view3d.view_axis", text="Top") + props = layout.operator("view3d.view_axis", text="Top", text_ctxt=i18n_text_ctxt) props.align_active = True props.type = 'TOP' - props = layout.operator("view3d.view_axis", text="Bottom") + props = layout.operator("view3d.view_axis", text="Bottom", text_ctxt=i18n_text_ctxt) props.align_active = True props.type = 'BOTTOM' layout.separator() - props = layout.operator("view3d.view_axis", text="Front") + props = layout.operator("view3d.view_axis", text="Front", text_ctxt=i18n_text_ctxt) props.align_active = True props.type = 'FRONT' - props = layout.operator("view3d.view_axis", text="Back") + props = layout.operator("view3d.view_axis", text="Back", text_ctxt=i18n_text_ctxt) props.align_active = True props.type = 'BACK' layout.separator() - props = layout.operator("view3d.view_axis", text="Right") + props = layout.operator("view3d.view_axis", text="Right", text_ctxt=i18n_text_ctxt) props.align_active = True props.type = 'RIGHT' - props = layout.operator("view3d.view_axis", text="Left") + props = layout.operator("view3d.view_axis", text="Left", text_ctxt=i18n_text_ctxt) props.align_active = True props.type = 'LEFT' @@ -1899,6 +1932,13 @@ class VIEW3D_MT_select_paint_mask_vertex(Menu): layout.operator("paint.vert_select_ungrouped", text="Ungrouped Vertices") +class VIEW3D_MT_select_edit_curves(Menu): + bl_label = "Select" + + def draw(self, _context): + pass + + class VIEW3D_MT_angle_control(Menu): bl_label = "Angle Control" @@ -2344,6 +2384,25 @@ class VIEW3D_MT_object_clear(Menu): layout.operator("object.origin_clear", text="Origin") +class VIEW3D_MT_motion_path(Menu): + bl_label = "Motion Paths" + + def draw(self, _context): + layout = self.layout + ob = _context.object + if ob.mode == 'OBJECT': + layout.operator("object.paths_calculate") + layout.operator("object.paths_update") + layout.operator("object.paths_update_visible") + layout.operator("object.paths_clear", text="Clear all").only_selected = False + layout.operator("object.paths_clear", text="Clear selected").only_selected = True + elif ob.mode == 'POSE': + layout.operator("pose.paths_calculate") + layout.operator("pose.paths_update") + layout.operator("pose.paths_clear", text="Clear all").only_selected = False + layout.operator("pose.paths_clear", text="Clear selected").only_selected = True + + class VIEW3D_MT_object_context_menu(Menu): bl_label = "Object Context Menu" @@ -2545,6 +2604,7 @@ class VIEW3D_MT_object_context_menu(Menu): layout.menu("VIEW3D_MT_mirror") layout.menu("VIEW3D_MT_snap") layout.menu("VIEW3D_MT_object_parent") + layout.menu("VIEW3D_MT_motion_path") layout.operator_context = 'INVOKE_REGION_WIN' if view and view.local_view: @@ -3592,10 +3652,10 @@ class VIEW3D_MT_pose_context_menu(Menu): layout.separator() - layout.operator("pose.paths_calculate", text="Calculate Motion Paths") - layout.operator("pose.paths_clear", text="Clear Motion Paths") - layout.operator("pose.paths_update", text="Update Armature Motion Paths") - layout.operator("object.paths_update_visible", text="Update All Motion Paths") + layout.operator("pose.paths_calculate") + layout.operator("pose.paths_update") + layout.operator("pose.paths_clear", text="Clear all").only_selected = False + layout.operator("pose.paths_clear", text="Clear selected").only_selected = True layout.separator() @@ -5123,6 +5183,13 @@ class VIEW3D_MT_edit_gpencil_showhide(Menu): layout.operator("gpencil.hide", text="Hide Inactive Layers").unselected = True +class VIEW3D_MT_edit_curves(Menu): + bl_label = "Curves" + + def draw(self, _context): + pass + + class VIEW3D_MT_object_mode_pie(Menu): bl_label = "Mode" @@ -7544,6 +7611,7 @@ classes = ( VIEW3D_MT_select_gpencil, VIEW3D_MT_select_paint_mask, VIEW3D_MT_select_paint_mask_vertex, + VIEW3D_MT_select_edit_curves, VIEW3D_MT_angle_control, VIEW3D_MT_mesh_add, VIEW3D_MT_curve_add, @@ -7576,6 +7644,7 @@ classes = ( VIEW3D_MT_object_quick_effects, VIEW3D_MT_object_showhide, VIEW3D_MT_object_cleanup, + VIEW3D_MT_motion_path, VIEW3D_MT_make_single_user, VIEW3D_MT_make_links, VIEW3D_MT_brush_paint_modes, @@ -7666,6 +7735,7 @@ classes = ( VIEW3D_MT_edit_armature_names, VIEW3D_MT_edit_armature_delete, VIEW3D_MT_edit_gpencil_transform, + VIEW3D_MT_edit_curves, VIEW3D_MT_object_mode_pie, VIEW3D_MT_view_pie, VIEW3D_MT_transform_gizmo_pie, diff --git a/release/scripts/startup/nodeitems_builtins.py b/release/scripts/startup/nodeitems_builtins.py index 21e20c3b734..a0205a2bcb1 100644 --- a/release/scripts/startup/nodeitems_builtins.py +++ b/release/scripts/startup/nodeitems_builtins.py @@ -142,6 +142,7 @@ def mesh_node_items(context): yield NodeItem("GeometryNodeInputMeshEdgeVertices") yield NodeItem("GeometryNodeInputMeshFaceArea") yield NodeItem("GeometryNodeInputMeshFaceNeighbors") + yield NodeItem("GeometryNodeInputMeshFaceIsPlanar") yield NodeItem("GeometryNodeInputMeshIsland") yield NodeItem("GeometryNodeInputShadeSmooth") yield NodeItem("GeometryNodeInputMeshVertexNeighbors") @@ -164,6 +165,7 @@ def geometry_node_items(context): yield NodeItem("GeometryNodeBoundBox") yield NodeItem("GeometryNodeConvexHull") yield NodeItem("GeometryNodeDeleteGeometry") + yield NodeItem("GeometryNodeDuplicateElements") yield NodeItem("GeometryNodeGeometryToInstance") yield NodeItem("GeometryNodeMergeByDistance") yield NodeItem("GeometryNodeProximity") |