diff options
author | TempoDev <alexia.legrand@epitech.eu> | 2020-09-03 20:37:15 +0300 |
---|---|---|
committer | TempoDev <alexia.legrand@epitech.eu> | 2020-09-03 20:37:15 +0300 |
commit | 1b8bc74b1f93f460a65e255a083f48798834368f (patch) | |
tree | b63e6b4ac1b6acbc2c9b9d5788645f92704ee763 /release | |
parent | 705acb423b54d71a99a8e630774cb3e4888df90f (diff) | |
parent | 89ed6b12936bc2a89b18cf6dbd7b86e0fbc760d3 (diff) |
Custom Menus : merge master
Diffstat (limited to 'release')
63 files changed, 403 insertions, 148 deletions
diff --git a/release/datafiles/icons/brush.gpencil_draw.tint.dat b/release/datafiles/icons/brush.gpencil_draw.tint.dat Binary files differindex 016e4304498..32d8a5f04e4 100644 --- a/release/datafiles/icons/brush.gpencil_draw.tint.dat +++ b/release/datafiles/icons/brush.gpencil_draw.tint.dat diff --git a/release/datafiles/icons/brush.paint_texture.draw.dat b/release/datafiles/icons/brush.paint_texture.draw.dat Binary files differindex cfa5f1a6042..678a9ea26e5 100644 --- a/release/datafiles/icons/brush.paint_texture.draw.dat +++ b/release/datafiles/icons/brush.paint_texture.draw.dat diff --git a/release/datafiles/icons/brush.paint_texture.soften.dat b/release/datafiles/icons/brush.paint_texture.soften.dat Binary files differindex 8c547809792..2128de71dff 100644 --- a/release/datafiles/icons/brush.paint_texture.soften.dat +++ b/release/datafiles/icons/brush.paint_texture.soften.dat diff --git a/release/datafiles/icons/brush.paint_vertex.blur.dat b/release/datafiles/icons/brush.paint_vertex.blur.dat Binary files differindex 8c547809792..2128de71dff 100644 --- a/release/datafiles/icons/brush.paint_vertex.blur.dat +++ b/release/datafiles/icons/brush.paint_vertex.blur.dat diff --git a/release/datafiles/icons/brush.paint_vertex.draw.dat b/release/datafiles/icons/brush.paint_vertex.draw.dat Binary files differindex c1a8796ea02..74e00d243d6 100644 --- a/release/datafiles/icons/brush.paint_vertex.draw.dat +++ b/release/datafiles/icons/brush.paint_vertex.draw.dat diff --git a/release/datafiles/icons/brush.paint_vertex.replace.dat b/release/datafiles/icons/brush.paint_vertex.replace.dat Binary files differindex a37fdf2e1b1..676436548a7 100644 --- a/release/datafiles/icons/brush.paint_vertex.replace.dat +++ b/release/datafiles/icons/brush.paint_vertex.replace.dat diff --git a/release/datafiles/icons/brush.paint_weight.blur.dat b/release/datafiles/icons/brush.paint_weight.blur.dat Binary files differindex 8c547809792..2128de71dff 100644 --- a/release/datafiles/icons/brush.paint_weight.blur.dat +++ b/release/datafiles/icons/brush.paint_weight.blur.dat diff --git a/release/datafiles/icons/brush.paint_weight.draw.dat b/release/datafiles/icons/brush.paint_weight.draw.dat Binary files differindex cdb4ccf5efb..a2641927371 100644 --- a/release/datafiles/icons/brush.paint_weight.draw.dat +++ b/release/datafiles/icons/brush.paint_weight.draw.dat diff --git a/release/datafiles/icons/brush.particle.add.dat b/release/datafiles/icons/brush.particle.add.dat Binary files differindex 3c4f65cf6e2..b66f4da5b71 100644 --- a/release/datafiles/icons/brush.particle.add.dat +++ b/release/datafiles/icons/brush.particle.add.dat diff --git a/release/datafiles/icons/brush.particle.comb.dat b/release/datafiles/icons/brush.particle.comb.dat Binary files differindex 8b656db622b..d6dd75a35d7 100644 --- a/release/datafiles/icons/brush.particle.comb.dat +++ b/release/datafiles/icons/brush.particle.comb.dat diff --git a/release/datafiles/icons/brush.particle.cut.dat b/release/datafiles/icons/brush.particle.cut.dat Binary files differindex 97dc3e6099b..e7ef86e2fbc 100644 --- a/release/datafiles/icons/brush.particle.cut.dat +++ b/release/datafiles/icons/brush.particle.cut.dat diff --git a/release/datafiles/icons/brush.particle.length.dat b/release/datafiles/icons/brush.particle.length.dat Binary files differindex 59e74fd9912..e3aa3f2f9df 100644 --- a/release/datafiles/icons/brush.particle.length.dat +++ b/release/datafiles/icons/brush.particle.length.dat diff --git a/release/datafiles/icons/brush.particle.puff.dat b/release/datafiles/icons/brush.particle.puff.dat Binary files differindex 9dd194bfd93..db2bab46bfe 100644 --- a/release/datafiles/icons/brush.particle.puff.dat +++ b/release/datafiles/icons/brush.particle.puff.dat diff --git a/release/datafiles/icons/brush.particle.smooth.dat b/release/datafiles/icons/brush.particle.smooth.dat Binary files differindex 54b80a25841..7deaa4ed082 100644 --- a/release/datafiles/icons/brush.particle.smooth.dat +++ b/release/datafiles/icons/brush.particle.smooth.dat diff --git a/release/datafiles/icons/brush.sculpt.cloth.dat b/release/datafiles/icons/brush.sculpt.cloth.dat Binary files differindex 5e8fad60035..7e936167381 100644 --- a/release/datafiles/icons/brush.sculpt.cloth.dat +++ b/release/datafiles/icons/brush.sculpt.cloth.dat diff --git a/release/datafiles/icons/brush.sculpt.draw.dat b/release/datafiles/icons/brush.sculpt.draw.dat Binary files differindex 36ec5575bdd..014ce10e8cc 100644 --- a/release/datafiles/icons/brush.sculpt.draw.dat +++ b/release/datafiles/icons/brush.sculpt.draw.dat diff --git a/release/datafiles/icons/brush.sculpt.draw_sharp.dat b/release/datafiles/icons/brush.sculpt.draw_sharp.dat Binary files differindex ad42f4bf870..9bea1b02894 100644 --- a/release/datafiles/icons/brush.sculpt.draw_sharp.dat +++ b/release/datafiles/icons/brush.sculpt.draw_sharp.dat diff --git a/release/datafiles/icons/brush.sculpt.elastic_deform.dat b/release/datafiles/icons/brush.sculpt.elastic_deform.dat Binary files differindex 6d0ea25c1fe..0b12d717d3a 100644 --- a/release/datafiles/icons/brush.sculpt.elastic_deform.dat +++ b/release/datafiles/icons/brush.sculpt.elastic_deform.dat diff --git a/release/datafiles/icons/brush.sculpt.layer.dat b/release/datafiles/icons/brush.sculpt.layer.dat Binary files differindex 184f1bc9c13..1031d95332a 100644 --- a/release/datafiles/icons/brush.sculpt.layer.dat +++ b/release/datafiles/icons/brush.sculpt.layer.dat diff --git a/release/datafiles/icons/brush.sculpt.nudge.dat b/release/datafiles/icons/brush.sculpt.nudge.dat Binary files differindex 309a01a5645..e10157e9cd0 100644 --- a/release/datafiles/icons/brush.sculpt.nudge.dat +++ b/release/datafiles/icons/brush.sculpt.nudge.dat diff --git a/release/datafiles/icons/brush.sculpt.rotate.dat b/release/datafiles/icons/brush.sculpt.rotate.dat Binary files differindex a0bb63d14db..8d1723a8c71 100644 --- a/release/datafiles/icons/brush.sculpt.rotate.dat +++ b/release/datafiles/icons/brush.sculpt.rotate.dat diff --git a/release/datafiles/icons/brush.sculpt.snake_hook.dat b/release/datafiles/icons/brush.sculpt.snake_hook.dat Binary files differindex 64256d93702..20300c1d97c 100644 --- a/release/datafiles/icons/brush.sculpt.snake_hook.dat +++ b/release/datafiles/icons/brush.sculpt.snake_hook.dat diff --git a/release/datafiles/icons/brush.sculpt.thumb.dat b/release/datafiles/icons/brush.sculpt.thumb.dat Binary files differindex a2634afced9..9da33eccd98 100644 --- a/release/datafiles/icons/brush.sculpt.thumb.dat +++ b/release/datafiles/icons/brush.sculpt.thumb.dat diff --git a/release/datafiles/icons/ops.curve.draw.dat b/release/datafiles/icons/ops.curve.draw.dat Binary files differindex 8ae8ef5b1c8..cf2c8e31bcb 100644 --- a/release/datafiles/icons/ops.curve.draw.dat +++ b/release/datafiles/icons/ops.curve.draw.dat diff --git a/release/datafiles/icons/ops.gpencil.draw.dat b/release/datafiles/icons/ops.gpencil.draw.dat Binary files differindex d05e67d276c..e71644f4968 100644 --- a/release/datafiles/icons/ops.gpencil.draw.dat +++ b/release/datafiles/icons/ops.gpencil.draw.dat diff --git a/release/datafiles/icons/ops.gpencil.draw.eraser.dat b/release/datafiles/icons/ops.gpencil.draw.eraser.dat Binary files differindex 2dc1653f810..44f65c4581d 100644 --- a/release/datafiles/icons/ops.gpencil.draw.eraser.dat +++ b/release/datafiles/icons/ops.gpencil.draw.eraser.dat diff --git a/release/datafiles/icons/ops.gpencil.draw.line.dat b/release/datafiles/icons/ops.gpencil.draw.line.dat Binary files differindex 53fa0193fa9..bbfaf28bc5e 100644 --- a/release/datafiles/icons/ops.gpencil.draw.line.dat +++ b/release/datafiles/icons/ops.gpencil.draw.line.dat diff --git a/release/datafiles/icons/ops.gpencil.draw.poly.dat b/release/datafiles/icons/ops.gpencil.draw.poly.dat Binary files differindex a223c9eb90c..e3ca2f35ece 100644 --- a/release/datafiles/icons/ops.gpencil.draw.poly.dat +++ b/release/datafiles/icons/ops.gpencil.draw.poly.dat diff --git a/release/datafiles/icons/ops.gpencil.sculpt_smooth.dat b/release/datafiles/icons/ops.gpencil.sculpt_smooth.dat Binary files differindex 90ba16d846a..d480913608d 100644 --- a/release/datafiles/icons/ops.gpencil.sculpt_smooth.dat +++ b/release/datafiles/icons/ops.gpencil.sculpt_smooth.dat diff --git a/release/datafiles/icons/ops.gpencil.sculpt_strength.dat b/release/datafiles/icons/ops.gpencil.sculpt_strength.dat Binary files differindex d3f48931831..3b1732ab1da 100644 --- a/release/datafiles/icons/ops.gpencil.sculpt_strength.dat +++ b/release/datafiles/icons/ops.gpencil.sculpt_strength.dat diff --git a/release/datafiles/icons/ops.gpencil.sculpt_weight.dat b/release/datafiles/icons/ops.gpencil.sculpt_weight.dat Binary files differindex d5441fcbeb9..01c9587ec2e 100644 --- a/release/datafiles/icons/ops.gpencil.sculpt_weight.dat +++ b/release/datafiles/icons/ops.gpencil.sculpt_weight.dat diff --git a/release/datafiles/icons/ops.paint.weight_sample.dat b/release/datafiles/icons/ops.paint.weight_sample.dat Binary files differindex 423365f5a55..a428ae67e4c 100644 --- a/release/datafiles/icons/ops.paint.weight_sample.dat +++ b/release/datafiles/icons/ops.paint.weight_sample.dat diff --git a/release/datafiles/icons/ops.paint.weight_sample_group.dat b/release/datafiles/icons/ops.paint.weight_sample_group.dat Binary files differindex b37eb59ad23..863496f8908 100644 --- a/release/datafiles/icons/ops.paint.weight_sample_group.dat +++ b/release/datafiles/icons/ops.paint.weight_sample_group.dat diff --git a/release/datafiles/icons/ops.sculpt.cloth_filter.dat b/release/datafiles/icons/ops.sculpt.cloth_filter.dat Binary files differnew file mode 100644 index 00000000000..dc20c8f0bfd --- /dev/null +++ b/release/datafiles/icons/ops.sculpt.cloth_filter.dat diff --git a/release/datafiles/locale b/release/datafiles/locale -Subproject a7bbfac76c00edd0fb79a4766b7ac7c5dcbcac5 +Subproject 2b3c19f5f61fc72dba56a7edfdc4e55e2327dc1 diff --git a/release/datafiles/userdef/userdef_default_theme.c b/release/datafiles/userdef/userdef_default_theme.c index 4d48bb8eaac..7604a06f7df 100644 --- a/release/datafiles/userdef/userdef_default_theme.c +++ b/release/datafiles/userdef/userdef_default_theme.c @@ -238,11 +238,11 @@ const bTheme U_theme_default = { .menu_shadow_fac = 0.3f, .menu_shadow_width = 4, .editor_outline = RGBA(0x1f1f1fff), - .icon_alpha = 1.0f, - .icon_saturation = 0.5f, .transparent_checker_primary = RGBA(0x333333ff), .transparent_checker_secondary = RGBA(0x262626ff), .transparent_checker_size = 8, + .icon_alpha = 1.0f, + .icon_saturation = 0.5f, .widget_text_cursor = RGBA(0x3399e6ff), .xaxis = RGBA(0xff3352ff), .yaxis = RGBA(0x8bdc00ff), @@ -250,9 +250,9 @@ const bTheme U_theme_default = { .gizmo_hi = RGBA(0xffffffff), .gizmo_primary = RGBA(0xf5f14dff), .gizmo_secondary = RGBA(0x63ffffff), + .gizmo_view_align = RGBA(0xffffffff), .gizmo_a = RGBA(0x4da84dff), .gizmo_b = RGBA(0xa33535ff), - .gizmo_view_align = RGBA(0xffffffff), .icon_scene = RGBA(0xe6e6e6ff), .icon_collection = RGBA(0xf4f4f4ff), .icon_object = RGBA(0xee9e5dff), @@ -379,7 +379,7 @@ const bTheme U_theme_default = { .paint_curve_handle = RGBA(0x7fff7f7f), }, .space_file = { - .back = RGBA(0x33333300), + .back = RGBA(0x28282800), .title = RGBA(0xffffffff), .text = RGBA(0xe6e6e6ff), .text_hi = RGBA(0xffffffff), @@ -404,6 +404,7 @@ const bTheme U_theme_default = { .vertex_size = 3, .outline_width = 1, .facedot_size = 4, + .row_alternate = RGBA(0xffffff07), }, .space_graph = { .back = RGBA(0x42424200), @@ -710,7 +711,6 @@ const bTheme U_theme_default = { .preview_stitch_unstitchable = RGBA(0xff0000ff), .preview_stitch_active = RGBA(0xe1d2c323), .uv_shadow = RGBA(0x707070ff), - .uv_others = RGBA(0x606060ff), .paint_curve_pivot = RGBA(0xff7f7f7f), .paint_curve_handle = RGBA(0x7fff7f7f), .metadatatext = RGBA(0xffffffff), diff --git a/release/freedesktop/org.blender.Blender.appdata.xml b/release/freedesktop/org.blender.Blender.appdata.xml index 3cb09ed4d21..edadf9d7438 100644 --- a/release/freedesktop/org.blender.Blender.appdata.xml +++ b/release/freedesktop/org.blender.Blender.appdata.xml @@ -40,6 +40,31 @@ </screenshot> </screenshots> <releases> + <release version="2.90" date="2020-08-31"> + <description> + <p>New features:</p> + <ul> + <li>Nishita sky texture for Cycles</li> + <li>EEVEE motion blur</li> + <li>Cloth filter</li> + <li>Ocean modifier spray</li> + <li>Correct face attributes modeling</li> + <li>OpenVDB fluid integration with mantaflow</li> + <li>Nuke lens distortion model for motion tracking</li> + </ul> + <p>Enhancements:</p> + <ul> + <li>Intel Embree for faster motion blur in Cycles</li> + <li>Viewport Intel OpenImageDenoise</li> + <li>Shadow terminator offset setting</li> + <li>NVLink support for CUDA and Optix</li> + <li>Multires unsubdivide, rebuild and modes</li> + <li>Pose brush transformations</li> + <li>Correct face attributes modeling</li> + <li>User interface improvements: new search, modifiers, headings, stats</li> + </ul> + </description> + </release> <release version="2.83" date="2020-06-03"> <description> <p>New features:</p> diff --git a/release/scripts/addons b/release/scripts/addons -Subproject 82ed41ec632483fa9260d90dae7afdf3192c509 +Subproject 49c39f59fbc464dd34388990123f271c39eacbf diff --git a/release/scripts/addons_contrib b/release/scripts/addons_contrib -Subproject f2f4a8b3bfa36ee49f7bdb3a1acb40ef4b39ee3 +Subproject a52733b58d95ce60ecde95a9eca242e7319c285 diff --git a/release/scripts/modules/addon_utils.py b/release/scripts/modules/addon_utils.py index af6d4b1cd29..6fd091cefc2 100644 --- a/release/scripts/modules/addon_utils.py +++ b/release/scripts/modules/addon_utils.py @@ -492,6 +492,8 @@ def disable_all(): item for item in sys.modules.items() if getattr(item[1], "__addon_enabled__", False) ] + # Check the enabled state again since it's possible the disable call + # of one add-on disables others. for mod_name, mod in addon_modules: if getattr(mod, "__addon_enabled__", False): disable(mod_name) diff --git a/release/scripts/modules/bpy/ops.py b/release/scripts/modules/bpy/ops.py index 4e226f80f79..c2245d908b5 100644 --- a/release/scripts/modules/bpy/ops.py +++ b/release/scripts/modules/bpy/ops.py @@ -27,6 +27,7 @@ op_poll = ops_module.poll op_call = ops_module.call op_as_string = ops_module.as_string op_get_rna_type = ops_module.get_rna_type +op_get_bl_options = ops_module.get_bl_options class BPyOps: @@ -209,6 +210,10 @@ class BPyOpsSubModOp: """Internal function for introspection""" return op_get_rna_type(self.idname()) + @property + def bl_options(self): + return op_get_bl_options(self.idname()) + def __repr__(self): # useful display, repr(op) # import bpy return op_as_string(self.idname()) diff --git a/release/scripts/modules/nodeitems_utils.py b/release/scripts/modules/nodeitems_utils.py index 595b6c8ee5f..d1e1cc5e346 100644 --- a/release/scripts/modules/nodeitems_utils.py +++ b/release/scripts/modules/nodeitems_utils.py @@ -144,6 +144,14 @@ def node_categories_iter(context): yield cat +def has_node_categories(context): + for cat_type in _node_categories.values(): + for cat in cat_type[0]: + if cat.poll and ((context is None) or cat.poll(context)): + return True + return False + + def node_items_iter(context): for cat in node_categories_iter(context): for item in cat.items(context): diff --git a/release/scripts/modules/rna_manual_reference.py b/release/scripts/modules/rna_manual_reference.py index 673b33a1e93..f8562241ef9 100644 --- a/release/scripts/modules/rna_manual_reference.py +++ b/release/scripts/modules/rna_manual_reference.py @@ -42,6 +42,8 @@ url_manual_mapping = ( ("bpy.types.fluiddomainsettings.sndparticle_potential_min_energy*", "physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-sndparticle-potential-min-energy"), ("bpy.types.fluiddomainsettings.sndparticle_sampling_trappedair*", "physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-sndparticle-sampling-trappedair"), ("bpy.types.fluiddomainsettings.sndparticle_sampling_wavecrest*", "physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-sndparticle-sampling-wavecrest"), + ("bpy.types.toolsettings.use_transform_correct_face_attributes*", "modeling/meshes/tools/tool_settings.html#bpy-types-toolsettings-use-transform-correct-face-attributes"), + ("bpy.types.toolsettings.use_transform_correct_keep_connected*", "modeling/meshes/tools/tool_settings.html#bpy-types-toolsettings-use-transform-correct-keep-connected"), ("bpy.types.fluiddomainsettings.sndparticle_potential_radius*", "physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-sndparticle-potential-radius"), ("bpy.types.fluiddomainsettings.openvdb_cache_compress_type*", "physics/fluid/type/domain/cache.html#bpy-types-fluiddomainsettings-openvdb-cache-compress-type"), ("bpy.types.fluiddomainsettings.sndparticle_bubble_buoyancy*", "physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-sndparticle-bubble-buoyancy"), @@ -80,6 +82,7 @@ url_manual_mapping = ( ("bpy.types.fluiddomainsettings.sndparticle_boundary*", "physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-sndparticle-boundary"), ("bpy.types.fluiddomainsettings.sndparticle_life_max*", "physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-sndparticle-life-max"), ("bpy.types.fluiddomainsettings.sndparticle_life_min*", "physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-sndparticle-life-min"), + ("bpy.types.fluiddomainsettings.sys_particle_maximum*", "physics/fluid/type/domain/settings.html#bpy-types-fluiddomainsettings-sys-particle-maximum"), ("bpy.types.fluiddomainsettings.use_bubble_particles*", "physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-use-bubble-particles"), ("bpy.types.linestylegeometrymodifier_simplification*", "render/freestyle/parameter_editor/line_style/modifiers/geometry/simplification.html#bpy-types-linestylegeometrymodifier-simplification"), ("bpy.types.materialgpencilstyle.use_overlap_strokes*", "grease_pencil/materials/grease_pencil_shader.html#bpy-types-materialgpencilstyle-use-overlap-strokes"), @@ -97,6 +100,8 @@ url_manual_mapping = ( ("bpy.types.linestylegeometrymodifier_perlinnoise1d*", "render/freestyle/parameter_editor/line_style/modifiers/geometry/perlin_noise_1d.html#bpy-types-linestylegeometrymodifier-perlinnoise1d"), ("bpy.types.linestylegeometrymodifier_perlinnoise2d*", "render/freestyle/parameter_editor/line_style/modifiers/geometry/perlin_noise_2d.html#bpy-types-linestylegeometrymodifier-perlinnoise2d"), ("bpy.types.rendersettings.use_high_quality_normals*", "render/eevee/render_settings/performance.html#bpy-types-rendersettings-use-high-quality-normals"), + ("bpy.ops.view3d.edit_mesh_extrude_individual_move*", "modeling/meshes/editing/face/extrude_faces.html#bpy-ops-view3d-edit-mesh-extrude-individual-move"), + ("bpy.ops.view3d.edit_mesh_extrude_manifold_normal*", "modeling/meshes/tools/extrude_manifold.html#bpy-ops-view3d-edit-mesh-extrude-manifold-normal"), ("bpy.types.cyclesrendersettings.use_distance_cull*", "render/cycles/render_settings/simplify.html#bpy-types-cyclesrendersettings-use-distance-cull"), ("bpy.types.fluiddomainsettings.cache_frame_offset*", "physics/fluid/type/domain/cache.html#bpy-types-fluiddomainsettings-cache-frame-offset"), ("bpy.types.fluiddomainsettings.delete_in_obstacle*", "physics/fluid/type/domain/settings.html#bpy-types-fluiddomainsettings-delete-in-obstacle"), @@ -205,6 +210,7 @@ url_manual_mapping = ( ("bpy.types.spaceview3d.use_local_collections*", "editors/3dview/properties/sidebar.html#bpy-types-spaceview3d-use-local-collections"), ("bpy.ops.object.constraint_add_with_targets*", "animation/constraints/interface/adding_removing.html#bpy-ops-object-constraint-add-with-targets"), ("bpy.ops.object.vertex_group_copy_to_linked*", "modeling/meshes/properties/vertex_groups/vertex_groups.html#bpy-ops-object-vertex-group-copy-to-linked"), + ("bpy.types.curve.bevel_factor_mapping_start*", "modeling/curves/properties/geometry.html#bpy-types-curve-bevel-factor-mapping-start"), ("bpy.types.cyclesobjectsettings.dicing_rate*", "render/cycles/object_settings/adaptive_subdiv.html#bpy-types-cyclesobjectsettings-dicing-rate"), ("bpy.types.fluiddomainsettings.adapt_margin*", "physics/fluid/type/domain/gas/adaptive_domain.html#bpy-types-fluiddomainsettings-adapt-margin"), ("bpy.types.fluiddomainsettings.burning_rate*", "physics/fluid/type/domain/settings.html#bpy-types-fluiddomainsettings-burning-rate"), @@ -226,6 +232,7 @@ url_manual_mapping = ( ("bpy.ops.object.vertex_group_normalize_all*", "sculpt_paint/weight_paint/editing.html#bpy-ops-object-vertex-group-normalize-all"), ("bpy.ops.sculpt.face_set_change_visibility*", "sculpt_paint/sculpting/editing.html#bpy-ops-sculpt-face-set-change-visibility"), ("bpy.ops.sculpt.face_sets_randomize_colors*", "sculpt_paint/sculpting/editing.html#bpy-ops-sculpt-face-sets-randomize-colors"), + ("bpy.types.brush.disconnected_distance_max*", "sculpt_paint/sculpting/tools/pose.html#bpy-types-brush-disconnected-distance-max"), ("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/tool_settings/brushes/draw_brush.html#bpy-types-brushgpencilsettings-pen-jitter"), ("bpy.types.fluiddomainsettings.domain_type*", "physics/fluid/type/domain/settings.html#bpy-types-fluiddomainsettings-domain-type"), @@ -257,6 +264,7 @@ url_manual_mapping = ( ("bpy.types.brushgpencilsettings.uv_random*", "grease_pencil/modes/draw/tool_settings/brushes/draw_brush.html#bpy-types-brushgpencilsettings-uv-random"), ("bpy.types.clothsettings.internal_tension*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-internal-tension"), ("bpy.types.compositornodeplanetrackdeform*", "compositing/types/distort/plane_track_deform.html#bpy-types-compositornodeplanetrackdeform"), + ("bpy.types.curve.bevel_factor_mapping_end*", "modeling/curves/properties/geometry.html#bpy-types-curve-bevel-factor-mapping-end"), ("bpy.types.fluiddomainsettings.cache_type*", "physics/fluid/type/domain/cache.html#bpy-types-fluiddomainsettings-cache-type"), ("bpy.types.fluiddomainsettings.coba_field*", "physics/fluid/type/domain/gas/viewport_display.html#bpy-types-fluiddomainsettings-coba-field"), ("bpy.types.fluiddomainsettings.flip_ratio*", "physics/fluid/type/domain/settings.html#bpy-types-fluiddomainsettings-flip-ratio"), @@ -380,7 +388,6 @@ url_manual_mapping = ( ("bpy.types.shadernodeambientocclusion*", "render/shader_nodes/input/ao.html#bpy-types-shadernodeambientocclusion"), ("bpy.types.shadernodevolumeabsorption*", "render/shader_nodes/shader/volume_absorption.html#bpy-types-shadernodevolumeabsorption"), ("bpy.types.shadernodevolumeprincipled*", "render/shader_nodes/shader/volume_principled.html#bpy-types-shadernodevolumeprincipled"), - ("bpy.types.toolsettings.use_uv_sculpt*", "modeling/meshes/uv/uv_sculpt.html#bpy-types-toolsettings-use-uv-sculpt"), ("bpy.ops.gpencil.interpolate_reverse*", "grease_pencil/animation/interpolation.html#bpy-ops-gpencil-interpolate-reverse"), ("bpy.ops.gpencil.select_vertex_color*", "grease_pencil/selecting.html#bpy-ops-gpencil-select-vertex-color"), ("bpy.ops.gpencil.set_active_material*", "grease_pencil/modes/edit/stroke_menu.html#bpy-ops-gpencil-set-active-material"), @@ -402,6 +409,7 @@ url_manual_mapping = ( ("bpy.types.compositornodedilateerode*", "compositing/types/filter/dilate_erode.html#bpy-types-compositornodedilateerode"), ("bpy.types.compositornodeellipsemask*", "compositing/types/matte/ellipse_mask.html#bpy-types-compositornodeellipsemask"), ("bpy.types.compositornodesplitviewer*", "compositing/types/output/split_viewer.html#bpy-types-compositornodesplitviewer"), + ("bpy.types.curve.render_resolution_u*", "modeling/curves/properties/shape.html#bpy-types-curve-render-resolution-u"), ("bpy.types.dynamicpaintbrushsettings*", "physics/dynamic_paint/brush.html#bpy-types-dynamicpaintbrushsettings"), ("bpy.types.fluiddomainsettings.alpha*", "physics/fluid/type/domain/settings.html#bpy-types-fluiddomainsettings-alpha"), ("bpy.types.fluidflowsettings.density*", "physics/fluid/type/flow.html#bpy-types-fluidflowsettings-density"), @@ -446,6 +454,7 @@ url_manual_mapping = ( ("bpy.ops.wm.previews_batch_generate*", "files/blend/previews.html#bpy-ops-wm-previews-batch-generate"), ("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.compositornodebokehimage*", "compositing/types/input/bokeh_image.html#bpy-types-compositornodebokehimage"), @@ -456,6 +465,7 @@ url_manual_mapping = ( ("bpy.types.compositornodeswitchview*", "compositing/types/converter/switch_view.html#bpy-types-compositornodeswitchview"), ("bpy.types.copytransformsconstraint*", "animation/constraints/transform/copy_transforms.html#bpy-types-copytransformsconstraint"), ("bpy.types.correctivesmoothmodifier*", "modeling/modifiers/deform/corrective_smooth.html#bpy-types-correctivesmoothmodifier"), + ("bpy.types.curve.bevel_factor_start*", "modeling/curves/properties/geometry.html#bpy-types-curve-bevel-factor-start"), ("bpy.types.cyclesvisibilitysettings*", "render/cycles/object_settings/object_data.html#bpy-types-cyclesvisibilitysettings"), ("bpy.types.fluiddomainsettings.beta*", "physics/fluid/type/domain/settings.html#bpy-types-fluiddomainsettings-beta"), ("bpy.types.fluidmodifier.fluid_type*", "physics/fluid/type/index.html#bpy-types-fluidmodifier-fluid-type"), @@ -470,6 +480,7 @@ url_manual_mapping = ( ("bpy.types.shadernodebsdfrefraction*", "render/shader_nodes/shader/refraction.html#bpy-types-shadernodebsdfrefraction"), ("bpy.types.shadernodeoutputmaterial*", "render/shader_nodes/output/material.html#bpy-types-shadernodeoutputmaterial"), ("bpy.types.shadernodetexenvironment*", "render/shader_nodes/textures/environment.html#bpy-types-shadernodetexenvironment"), + ("bpy.types.spaceuveditor.uv_opacity*", "editors/uv/display_panel.html#bpy-types-spaceuveditor-uv-opacity"), ("bpy.types.subdividegpencilmodifier*", "grease_pencil/modifiers/generate/subdivide.html#bpy-types-subdividegpencilmodifier"), ("bpy.types.thicknessgpencilmodifier*", "grease_pencil/modifiers/deform/thickness.html#bpy-types-thicknessgpencilmodifier"), ("bpy.types.transformcacheconstraint*", "animation/constraints/transform/transform_cache.html#bpy-types-transformcacheconstraint"), @@ -501,6 +512,7 @@ url_manual_mapping = ( ("bpy.types.compositornodetransform*", "compositing/types/distort/transform.html#bpy-types-compositornodetransform"), ("bpy.types.compositornodetranslate*", "compositing/types/distort/translate.html#bpy-types-compositornodetranslate"), ("bpy.types.constraint.target_space*", "animation/constraints/interface/common.html#bpy-types-constraint-target-space"), + ("bpy.types.curve.use_deform_bounds*", "modeling/curves/properties/shape.html#bpy-types-curve-use-deform-bounds"), ("bpy.types.freestylemodulesettings*", "render/freestyle/python.html#bpy-types-freestylemodulesettings"), ("bpy.types.gpencillayer.blend_mode*", "grease_pencil/properties/layers.html#bpy-types-gpencillayer-blend-mode"), ("bpy.types.gpencillayer.mask_layer*", "grease_pencil/properties/layers.html#bpy-types-gpencillayer-mask-layer"), @@ -519,6 +531,7 @@ url_manual_mapping = ( ("bpy.types.shadernodevolumescatter*", "render/shader_nodes/shader/volume_scatter.html#bpy-types-shadernodevolumescatter"), ("bpy.types.simplifygpencilmodifier*", "grease_pencil/modifiers/generate/simplify.html#bpy-types-simplifygpencilmodifier"), ("bpy.types.spacegrapheditor.cursor*", "editors/graph_editor/introduction.html#bpy-types-spacegrapheditor-cursor"), + ("bpy.types.toolsettings.annotation*", "interface/annotate_tool.html#bpy-types-toolsettings-annotation"), ("bpy.types.vertexweightmixmodifier*", "modeling/modifiers/modify/weight_mix.html#bpy-types-vertexweightmixmodifier"), ("bpy.types.viewlayer.use_freestyle*", "render/freestyle/view_layer.html#bpy-types-viewlayer-use-freestyle"), ("bpy.ops.gpencil.frame_clean_fill*", "grease_pencil/modes/edit/grease_pencil_menu.html#bpy-ops-gpencil-frame-clean-fill"), @@ -542,6 +555,7 @@ url_manual_mapping = ( ("bpy.ops.uv.average_islands_scale*", "modeling/meshes/uv/editing.html#bpy-ops-uv-average-islands-scale"), ("bpy.types.brightcontrastmodifier*", "video_editing/sequencer/properties/modifiers.html#bpy-types-brightcontrastmodifier"), ("bpy.types.brush.cursor_color_add*", "sculpt_paint/brush/cursor.html#bpy-types-brush-cursor-color-add"), + ("bpy.types.brush.pose_deform_type*", "sculpt_paint/sculpting/tools/pose.html#bpy-types-brush-pose-deform-type"), ("bpy.types.brush.pose_ik_segments*", "sculpt_paint/sculpting/tools/pose.html#bpy-types-brush-pose-ik-segments"), ("bpy.types.brush.pose_origin_type*", "sculpt_paint/sculpting/tools/pose.html#bpy-types-brush-pose-origin-type"), ("bpy.types.camerasolverconstraint*", "animation/constraints/motion_tracking/camera_solver.html#bpy-types-camerasolverconstraint"), @@ -560,6 +574,8 @@ url_manual_mapping = ( ("bpy.types.constraint.owner_space*", "animation/constraints/interface/common.html#bpy-types-constraint-owner-space"), ("bpy.types.copylocationconstraint*", "animation/constraints/transform/copy_location.html#bpy-types-copylocationconstraint"), ("bpy.types.copyrotationconstraint*", "animation/constraints/transform/copy_rotation.html#bpy-types-copyrotationconstraint"), + ("bpy.types.curve.bevel_factor_end*", "modeling/curves/properties/geometry.html#bpy-types-curve-bevel-factor-end"), + ("bpy.types.curve.bevel_resolution*", "modeling/curves/properties/geometry.html#bpy-types-curve-bevel-resolution"), ("bpy.types.cyclesmaterialsettings*", "render/cycles/material_settings.html#bpy-types-cyclesmaterialsettings"), ("bpy.types.dopesheet.show_summary*", "editors/dope_sheet/introduction.html#bpy-types-dopesheet-show-summary"), ("bpy.types.imagepaint.use_occlude*", "sculpt_paint/texture_paint/tool_settings/options.html#bpy-types-imagepaint-use-occlude"), @@ -576,6 +592,7 @@ url_manual_mapping = ( ("bpy.types.shadernodeparticleinfo*", "render/shader_nodes/input/particle_info.html#bpy-types-shadernodeparticleinfo"), ("bpy.types.shadernodevectorrotate*", "render/shader_nodes/vector/vector_rotate.html#bpy-types-shadernodevectorrotate"), ("bpy.types.spaceview3d.show_gizmo*", "editors/3dview/display/gizmo.html#bpy-types-spaceview3d-show-gizmo"), + ("bpy.types.texturegpencilmodifier*", "grease_pencil/modifiers/color/texture_mapping.html#bpy-types-texturegpencilmodifier"), ("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"), ("bpy.ops.armature.autoside_names*", "animation/armatures/bones/editing/naming.html#bpy-ops-armature-autoside-names"), @@ -618,6 +635,8 @@ url_manual_mapping = ( ("bpy.types.compositornodetexture*", "compositing/types/input/texture.html#bpy-types-compositornodetexture"), ("bpy.types.compositornodetonemap*", "compositing/types/color/tone_map.html#bpy-types-compositornodetonemap"), ("bpy.types.compositornodevecblur*", "compositing/types/filter/vector_blur.html#bpy-types-compositornodevecblur"), + ("bpy.types.curve.use_fill_deform*", "modeling/curves/properties/shape.html#bpy-types-curve-use-fill-deform"), + ("bpy.types.curve.use_path_follow*", "modeling/curves/properties/path_animation.html#bpy-types-curve-use-path-follow"), ("bpy.types.dampedtrackconstraint*", "animation/constraints/tracking/damped_track.html#bpy-types-dampedtrackconstraint"), ("bpy.types.distortednoisetexture*", "render/materials/legacy_textures/types/distorted_noise.html#bpy-types-distortednoisetexture"), ("bpy.types.fluideffectorsettings*", "physics/fluid/type/effector.html#bpy-types-fluideffectorsettings"), @@ -725,6 +744,7 @@ url_manual_mapping = ( ("bpy.ops.object.select_by_type*", "scene_layout/object/selecting.html#bpy-ops-object-select-by-type"), ("bpy.ops.object.select_grouped*", "scene_layout/object/selecting.html#bpy-ops-object-select-grouped"), ("bpy.ops.object.select_pattern*", "scene_layout/object/selecting.html#bpy-ops-object-select-pattern"), + ("bpy.ops.outliner.id_operation*", "editors/outliner.html#bpy-ops-outliner-id-operation"), ("bpy.ops.paint.mask_flood_fill*", "sculpt_paint/sculpting/hide_mask.html#bpy-ops-paint-mask-flood-fill"), ("bpy.ops.pose.quaternions_flip*", "animation/armatures/posing/editing/flip_quats.html#bpy-ops-pose-quaternions-flip"), ("bpy.ops.pose.transforms_clear*", "animation/armatures/posing/editing/clear.html#bpy-ops-pose-transforms-clear"), @@ -751,6 +771,9 @@ url_manual_mapping = ( ("bpy.types.compositornodescale*", "compositing/types/distort/scale.html#bpy-types-compositornodescale"), ("bpy.types.compositornodevalue*", "compositing/types/input/value.html#bpy-types-compositornodevalue"), ("bpy.types.copyscaleconstraint*", "animation/constraints/transform/copy_scale.html#bpy-types-copyscaleconstraint"), + ("bpy.types.curve.path_duration*", "modeling/curves/properties/path_animation.html#bpy-types-curve-path-duration"), + ("bpy.types.curve.use_fill_caps*", "modeling/curves/properties/geometry.html#bpy-types-curve-use-fill-caps"), + ("bpy.types.curve.use_map_taper*", "modeling/curves/properties/geometry.html#bpy-types-curve-use-map-taper"), ("bpy.types.cyclesworldsettings*", "render/cycles/world_settings.html#bpy-types-cyclesworldsettings"), ("bpy.types.fluiddomainsettings*", "physics/fluid/type/domain/index.html#bpy-types-fluiddomainsettings"), ("bpy.types.hookgpencilmodifier*", "grease_pencil/modifiers/deform/hook.html#bpy-types-hookgpencilmodifier"), @@ -828,8 +851,11 @@ url_manual_mapping = ( ("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.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"), ("bpy.types.curve.resolution_v*", "modeling/surfaces/properties/shape.html#bpy-types-curve-resolution-v"), + ("bpy.types.curve.taper_object*", "modeling/curves/properties/geometry.html#bpy-types-curve-taper-object"), + ("bpy.types.curve.twist_smooth*", "modeling/curves/properties/shape.html#bpy-types-curve-twist-smooth"), ("bpy.types.curvepaintsettings*", "modeling/curves/tools/draw.html#bpy-types-curvepaintsettings"), ("bpy.types.fmodifiergenerator*", "editors/graph_editor/fcurves/modifiers.html#bpy-types-fmodifiergenerator"), ("bpy.types.freestylelinestyle*", "render/freestyle/parameter_editor/line_style/index.html#bpy-types-freestylelinestyle"), @@ -912,6 +938,8 @@ url_manual_mapping = ( ("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.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"), ("bpy.types.fluidflowsettings*", "physics/fluid/type/flow.html#bpy-types-fluidflowsettings"), ("bpy.types.fmodifierenvelope*", "editors/graph_editor/fcurves/modifiers.html#bpy-types-fmodifierenvelope"), @@ -957,6 +985,7 @@ url_manual_mapping = ( ("bpy.ops.mesh.colors_rotate*", "modeling/meshes/editing/face/face_data.html#bpy-ops-mesh-colors-rotate"), ("bpy.ops.mesh.edge_collapse*", "modeling/meshes/editing/mesh/delete.html#bpy-ops-mesh-edge-collapse"), ("bpy.ops.mesh.edge_face_add*", "modeling/meshes/editing/vertex/make_face_edge.html#bpy-ops-mesh-edge-face-add"), + ("bpy.ops.mesh.extrude_indiv*", "modeling/meshes/editing/face/extrude_faces.html#bpy-ops-mesh-extrude-indiv"), ("bpy.ops.mesh.knife_project*", "modeling/meshes/editing/mesh/knife_project.html#bpy-ops-mesh-knife-project"), ("bpy.ops.mesh.loopcut_slide*", "modeling/meshes/editing/edge/loopcut_slide.html#bpy-ops-mesh-loopcut-slide"), ("bpy.ops.mesh.merge_normals*", "modeling/meshes/editing/mesh/normals.html#bpy-ops-mesh-merge-normals"), @@ -979,10 +1008,14 @@ url_manual_mapping = ( ("bpy.ops.transform.tosphere*", "modeling/meshes/editing/mesh/transform/to_sphere.html#bpy-ops-transform-tosphere"), ("bpy.ops.view3d.clip_border*", "editors/3dview/navigate/regions.html#bpy-ops-view3d-clip-border"), ("bpy.ops.wm.previews_ensure*", "files/blend/previews.html#bpy-ops-wm-previews-ensure"), + ("bpy.ops.wm.search_operator*", "interface/controls/templates/operator_search.html#bpy-ops-wm-search-operator"), ("bpy.types.actionconstraint*", "animation/constraints/relationship/action.html#bpy-types-actionconstraint"), ("bpy.types.addonpreferences*", "editors/preferences/addons.html#bpy-types-addonpreferences"), ("bpy.types.armaturemodifier*", "modeling/modifiers/deform/armature.html#bpy-types-armaturemodifier"), ("bpy.types.colormixsequence*", "video_editing/sequencer/strips/effects/color_mix.html#bpy-types-colormixsequence"), + ("bpy.types.curve.dimensions*", "modeling/curves/properties/shape.html#bpy-types-curve-dimensions"), + ("bpy.types.curve.twist_mode*", "modeling/curves/properties/shape.html#bpy-types-curve-twist-mode"), + ("bpy.types.curve.use_radius*", "modeling/curves/properties/shape.html#bpy-types-curve-use-radius"), ("bpy.types.decimatemodifier*", "modeling/modifiers/generate/decimate.html#bpy-types-decimatemodifier"), ("bpy.types.displacemodifier*", "modeling/modifiers/deform/displace.html#bpy-types-displacemodifier"), ("bpy.types.displaysafeareas*", "render/cameras.html#bpy-types-displaysafeareas"), @@ -1026,10 +1059,13 @@ url_manual_mapping = ( ("bpy.ops.fluid.bake_guides*", "physics/fluid/type/domain/guides.html#bpy-ops-fluid-bake-guides"), ("bpy.ops.fluid.free_guides*", "physics/fluid/type/domain/guides.html#bpy-ops-fluid-free-guides"), ("bpy.ops.font.style_toggle*", "modeling/texts/editing.html#bpy-ops-font-style-toggle"), + ("bpy.ops.gpencil.mesh_bake*", "grease_pencil/animation/tools.html#bpy-ops-gpencil-mesh-bake"), ("bpy.ops.gpencil.reproject*", "grease_pencil/modes/edit/grease_pencil_menu.html#bpy-ops-gpencil-reproject"), ("bpy.ops.graph.easing_type*", "editors/graph_editor/fcurves/editing.html#bpy-ops-graph-easing-type"), ("bpy.ops.graph.handle_type*", "editors/graph_editor/fcurves/editing.html#bpy-ops-graph-handle-type"), + ("bpy.ops.mesh.bevel.vertex*", "modeling/meshes/editing/vertex/bevel_vertices.html#bpy-ops-mesh-bevel-vertex"), ("bpy.ops.mesh.delete_loose*", "modeling/meshes/editing/mesh/cleanup.html#bpy-ops-mesh-delete-loose"), + ("bpy.ops.mesh.face_shading*", "modeling/meshes/editing/face/shading.html#bpy-ops-mesh-face-shading"), ("bpy.ops.mesh.flip_normals*", "modeling/meshes/editing/mesh/normals.html#bpy-ops-mesh-flip-normals"), ("bpy.ops.mesh.select_loose*", "modeling/meshes/selecting/all_by_trait.html#bpy-ops-mesh-select-loose"), ("bpy.ops.mesh.vert_connect*", "modeling/meshes/editing/vertex/connect_vertex_pairs.html#bpy-ops-mesh-vert-connect"), @@ -1053,6 +1089,8 @@ url_manual_mapping = ( ("bpy.types.booleanmodifier*", "modeling/modifiers/generate/booleans.html#bpy-types-booleanmodifier"), ("bpy.types.brush.mask_tool*", "sculpt_paint/sculpting/tools/mask.html#bpy-types-brush-mask-tool"), ("bpy.types.constraint.mute*", "animation/constraints/interface/header.html#bpy-types-constraint-mute"), + ("bpy.types.curve.eval_time*", "modeling/curves/properties/path_animation.html#bpy-types-curve-eval-time"), + ("bpy.types.curve.fill_mode*", "modeling/curves/properties/shape.html#bpy-types-curve-fill-mode"), ("bpy.types.explodemodifier*", "modeling/modifiers/physics/explode.html#bpy-types-explodemodifier"), ("bpy.types.fcurvemodifiers*", "editors/graph_editor/fcurves/modifiers.html#bpy-types-fcurvemodifiers"), ("bpy.types.floorconstraint*", "animation/constraints/relationship/floor.html#bpy-types-floorconstraint"), @@ -1148,6 +1186,7 @@ url_manual_mapping = ( ("bpy.ops.fluid.free_data*", "physics/fluid/type/domain/settings.html#bpy-ops-fluid-free-data"), ("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.mesh.customdata*", "modeling/meshes/properties/custom_data.html#bpy-ops-mesh-customdata"), ("bpy.ops.mesh.edge_split*", "modeling/meshes/editing/mesh/split.html#bpy-ops-mesh-edge-split"), ("bpy.ops.mesh.fill_holes*", "modeling/meshes/editing/mesh/cleanup.html#bpy-ops-mesh-fill-holes"), @@ -1182,6 +1221,7 @@ url_manual_mapping = ( ("bpy.types.cloudstexture*", "render/materials/legacy_textures/types/clouds.html#bpy-types-cloudstexture"), ("bpy.types.colorsequence*", "video_editing/sequencer/strips/color.html#bpy-types-colorsequence"), ("bpy.types.crosssequence*", "video_editing/sequencer/strips/transitions/cross.html#bpy-types-crosssequence"), + ("bpy.types.curve.extrude*", "modeling/curves/properties/geometry.html#bpy-types-curve-extrude"), ("bpy.types.curvemodifier*", "modeling/modifiers/deform/curve.html#bpy-types-curvemodifier"), ("bpy.types.fieldsettings*", "physics/forces/force_fields/index.html#bpy-types-fieldsettings"), ("bpy.types.imagesequence*", "video_editing/sequencer/strips/movie_image.html#bpy-types-imagesequence"), @@ -1204,6 +1244,7 @@ url_manual_mapping = ( ("bpy.types.soundsequence*", "video_editing/sequencer/strips/sound.html#bpy-types-soundsequence"), ("bpy.types.spaceoutliner*", "editors/outliner.html#bpy-types-spaceoutliner"), ("bpy.types.spacetimeline*", "editors/timeline.html#bpy-types-spacetimeline"), + ("bpy.types.spaceuveditor*", "editors/uv/index.html#bpy-types-spaceuveditor"), ("bpy.types.stuccitexture*", "render/materials/legacy_textures/types/stucci.html#bpy-types-stuccitexture"), ("bpy.types.view3doverlay*", "editors/3dview/display/overlays.html#bpy-types-view3doverlay"), ("bpy.types.volumedisplay*", "modeling/volumes/properties.html#bpy-types-volumedisplay"), @@ -1244,6 +1285,7 @@ url_manual_mapping = ( ("bpy.types.brush.height*", "sculpt_paint/sculpting/tools/layer.html#bpy-types-brush-height"), ("bpy.types.castmodifier*", "modeling/modifiers/deform/cast.html#bpy-types-castmodifier"), ("bpy.types.colormanaged*", "render/color_management.html#bpy-types-colormanaged"), + ("bpy.types.curve.offset*", "modeling/curves/properties/geometry.html#bpy-types-curve-offset"), ("bpy.types.glowsequence*", "video_editing/sequencer/strips/effects/glow.html#bpy-types-glowsequence"), ("bpy.types.gpencillayer*", "grease_pencil/properties/layers.html#bpy-types-gpencillayer"), ("bpy.types.hookmodifier*", "modeling/modifiers/deform/hooks.html#bpy-types-hookmodifier"), @@ -1292,6 +1334,7 @@ url_manual_mapping = ( ("bpy.types.addsequence*", "video_editing/sequencer/strips/effects/add.html#bpy-types-addsequence"), ("bpy.types.camera.show*", "render/cameras.html#bpy-types-camera-show"), ("bpy.types.consoleline*", "editors/python_console.html#bpy-types-consoleline"), + ("bpy.types.curve.bevel*", "modeling/curves/properties/geometry.html#bpy-types-curve-bevel"), ("bpy.types.mesh.remesh*", "modeling/meshes/retopology.html#bpy-types-mesh-remesh"), ("bpy.types.meshstatvis*", "modeling/meshes/mesh_analysis.html#bpy-types-meshstatvis"), ("bpy.types.nodesetting*", "interface/controls/nodes/parts.html#bpy-types-nodesetting"), @@ -1346,6 +1389,7 @@ url_manual_mapping = ( ("bpy.ops.object.hook*", "modeling/meshes/editing/vertex/hooks.html#bpy-ops-object-hook"), ("bpy.ops.object.join*", "scene_layout/object/editing/join.html#bpy-ops-object-join"), ("bpy.ops.object.text*", "modeling/texts/index.html#bpy-ops-object-text"), + ("bpy.ops.uv.rip_move*", "modeling/meshes/uv/tools/rip.html#bpy-ops-uv-rip-move"), ("bpy.ops.view3d.snap*", "scene_layout/object/editing/snap.html#bpy-ops-view3d-snap"), ("bpy.types.*texspace*", "modeling/meshes/uv/uv_texture_spaces.html#bpy-types-texspace"), ("bpy.types.arealight*", "render/lights/light_object.html#bpy-types-arealight"), @@ -1414,6 +1458,7 @@ url_manual_mapping = ( ("bpy.ops.uv.select*", "editors/uv/selecting.html#bpy-ops-uv-select"), ("bpy.ops.uv.stitch*", "modeling/meshes/uv/editing.html#bpy-ops-uv-stitch"), ("bpy.ops.uv.unwrap*", "modeling/meshes/editing/uv.html#bpy-ops-uv-unwrap"), + ("bpy.ops.wm.search*", "interface/controls/templates/operator_search.html#bpy-ops-wm-search"), ("bpy.types.animviz*", "animation/motion_paths.html#bpy-types-animviz"), ("bpy.types.lattice*", "animation/lattice.html#bpy-types-lattice"), ("bpy.types.library*", "files/linked_libraries/index.html#bpy-types-library"), @@ -1479,6 +1524,7 @@ url_manual_mapping = ( ("bpy.ops.script*", "advanced/scripting/index.html#bpy-ops-script"), ("bpy.ops.sculpt*", "sculpt_paint/sculpting/index.html#bpy-ops-sculpt"), ("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"), ("bpy.types.area*", "interface/window_system/areas.html#bpy-types-area"), ("bpy.types.boid*", "physics/particles/emitter/physics/boids.html#bpy-types-boid"), diff --git a/release/scripts/modules/rna_prop_ui.py b/release/scripts/modules/rna_prop_ui.py index 662c1d908fc..98722ea322b 100644 --- a/release/scripts/modules/rna_prop_ui.py +++ b/release/scripts/modules/rna_prop_ui.py @@ -309,13 +309,15 @@ def draw(layout, context, context_member, property_type, use_edit=True): # Do not allow editing of overridden properties (we cannot use a poll function of the operators here # since they's have no access to the specific property...). row.enabled = not(is_lib_override and key in rna_item.id_data.override_library.reference) - if not is_rna: + if is_rna: + row.label(text="API Defined") + elif is_lib_override: + row.label(text="Library Override") + else: props = row.operator("wm.properties_edit", text="Edit") assign_props(props, val_draw, key) props = row.operator("wm.properties_remove", text="", icon='REMOVE') assign_props(props, val_draw, key) - else: - row.label(text="API Defined") del flow diff --git a/release/scripts/presets/interface_theme/blender_light.xml b/release/scripts/presets/interface_theme/blender_light.xml index 48ad0a8367e..1b48377f62c 100644 --- a/release/scripts/presets/interface_theme/blender_light.xml +++ b/release/scripts/presets/interface_theme/blender_light.xml @@ -534,13 +534,14 @@ </graph_editor> <file_browser> <ThemeFileBrowser + row_alternate="#ffffff0f" selected_file="#5680c2" > <space> <ThemeSpaceGeneric - back="#404040" + back="#999999" title="#000000" - text="#eeeeee" + text="#000000" text_hi="#ffffff" header="#adadadff" header_text="#000000" @@ -735,7 +736,6 @@ preview_stitch_unstitchable="#ff0000ff" preview_stitch_active="#e1d2c323" uv_shadow="#707070ff" - uv_others="#606060ff" frame_current="#5680c2" metadatabg="#000000" metadatatext="#ffffff" diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py index dc73431fc80..4831f5565ab 100644 --- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py +++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py @@ -1928,6 +1928,12 @@ def km_file_browser_main(params): items.extend([ ("file.execute", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'}, {"properties": [("need_active", True)]}), + # Both .execute and .select are needed here. The former only works if + # there's a file operator (i.e. not in regular editor mode) but is + # needed to load files. The latter makes selection work if there's no + # operator (i.e. in regular editor mode). + ("file.select", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK'}, + {"properties": [("open", True), ("deselect_all", not params.legacy)]}), ("file.refresh", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None), ("file.select", {"type": 'LEFTMOUSE', "value": 'PRESS'}, {"properties": [("open", False), ("deselect_all", not params.legacy)]}), @@ -3372,7 +3378,7 @@ def km_grease_pencil_stroke_paint_fill(params): ("gpencil.draw", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, {"properties": [("mode", 'DRAW'), ("wait_for_input", False), ("disable_straight", True), ("disable_stabilizer", True)]}), # If press alternative key, the brush now it's for drawing lines - ("gpencil.draw", {"type": 'LEFTMOUSE', "value": 'PRESS', "alt": True, "shift": True}, + ("gpencil.draw", {"type": 'LEFTMOUSE', "value": 'PRESS', "alt": True}, {"properties": [("mode", 'DRAW'), ("wait_for_input", False), ("disable_straight", True), ("disable_stabilizer", True), ("disable_fill", True)]}), ]) @@ -4948,6 +4954,7 @@ def km_transform_modal_map(_params): ("CONFIRM", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), ("CONFIRM", {"type": 'RET', "value": 'PRESS', "any": True}, None), ("CONFIRM", {"type": 'NUMPAD_ENTER', "value": 'PRESS', "any": True}, None), + ("CONFIRM", {"type": 'SPACE', "value": 'PRESS', "any": True}, None), ("CANCEL", {"type": 'RIGHTMOUSE', "value": 'PRESS', "any": True}, None), ("CANCEL", {"type": 'ESC', "value": 'PRESS', "any": True}, None), ("AXIS_X", {"type": 'X', "value": 'PRESS', "repeat": False}, None), @@ -4966,6 +4973,7 @@ def km_transform_modal_map(_params): ("SNAP_INV_ON", {"type": 'RIGHT_CTRL', "value": 'PRESS', "any": True}, None), ("SNAP_INV_OFF", {"type": 'RIGHT_CTRL', "value": 'RELEASE', "any": True}, None), ("ADD_SNAP", {"type": 'A', "value": 'PRESS', "repeat": False}, None), + ("ADD_SNAP", {"type": 'A', "value": 'PRESS', "ctrl": True, "repeat": False}, None), ("REMOVE_SNAP", {"type": 'A', "value": 'PRESS', "alt": True, "repeat": False}, None), ("PROPORTIONAL_SIZE_UP", {"type": 'PAGE_UP', "value": 'PRESS'}, None), ("PROPORTIONAL_SIZE_DOWN", {"type": 'PAGE_DOWN', "value": 'PRESS'}, None), @@ -4978,11 +4986,17 @@ def km_transform_modal_map(_params): ("PROPORTIONAL_SIZE", {"type": 'TRACKPADPAN', "value": 'ANY'}, None), ("EDGESLIDE_EDGE_NEXT", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "alt": True}, None), ("EDGESLIDE_PREV_NEXT", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "alt": True}, None), + ("AUTOIK_CHAIN_LEN_UP", {"type": 'PAGE_UP', "value": 'PRESS'}, None), + ("AUTOIK_CHAIN_LEN_DOWN", {"type": 'PAGE_DOWN', "value": 'PRESS'}, None), ("AUTOIK_CHAIN_LEN_UP", {"type": 'PAGE_UP', "value": 'PRESS', "shift": True}, None), ("AUTOIK_CHAIN_LEN_DOWN", {"type": 'PAGE_DOWN', "value": 'PRESS', "shift": True}, None), + ("AUTOIK_CHAIN_LEN_UP", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS'}, None), + ("AUTOIK_CHAIN_LEN_DOWN", {"type": 'WHEELUPMOUSE', "value": 'PRESS'}, None), ("AUTOIK_CHAIN_LEN_UP", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "shift": True}, None), ("AUTOIK_CHAIN_LEN_DOWN", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "shift": True}, None), ("INSERTOFS_TOGGLE_DIR", {"type": 'T', "value": 'PRESS', "repeat": False}, None), + ("AUTOCONSTRAIN", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "repeat": False}, None), + ("AUTOCONSTRAIN", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "repeat": False, "shift": True}, None), ]) return keymap @@ -6349,6 +6363,18 @@ def km_3d_view_tool_sculpt_mask_by_color(params): ]}, ) +def km_3d_view_tool_sculpt_face_set_edit(params): + return ( + "3D View Tool: Sculpt, Face Set Edit", + {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, + {"items": [ + ("sculpt.face_set_edit", {"type": params.tool_mouse, "value": 'ANY'}, + None), + ("sculpt.face_set_edit", {"type": params.tool_tweak, "value": 'ANY'}, + None) + ]}, + ) + def km_3d_view_tool_paint_weight_sample_weight(params): return ( "3D View Tool: Paint Weight, Sample Weight", @@ -6384,12 +6410,12 @@ def km_3d_view_tool_paint_gpencil_line(params): "3D View Tool: Paint Gpencil, Line", {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, {"items": [ - ("gpencil.primitive", {"type": params.tool_tweak, "value": 'ANY'}, - {"properties": [("type", 'LINE'), ("wait_for_input", False)]}), - ("gpencil.primitive", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, - {"properties": [("type", 'LINE'), ("wait_for_input", False)]}), - ("gpencil.primitive", {"type": 'LEFTMOUSE', "value": 'PRESS', "alt": True}, - {"properties": [("type", 'LINE'), ("wait_for_input", False)]}), + ("gpencil.primitive_line", {"type": params.tool_tweak, "value": 'ANY'}, + {"properties": [("wait_for_input", False)]}), + ("gpencil.primitive_line", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, + {"properties": [("wait_for_input", False)]}), + ("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), ]}, @@ -6400,10 +6426,10 @@ def km_3d_view_tool_paint_gpencil_polyline(params): "3D View Tool: Paint Gpencil, Polyline", {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, {"items": [ - ("gpencil.primitive", {"type": params.tool_tweak, "value": 'ANY'}, - {"properties": [("type", 'POLYLINE'), ("wait_for_input", False)]}), - ("gpencil.primitive", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, - {"properties": [("type", 'POLYLINE'), ("wait_for_input", False)]}), + ("gpencil.primitive_polyline", {"type": params.tool_tweak, "value": 'ANY'}, + {"properties": [("wait_for_input", False)]}), + ("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), ]}, @@ -6414,12 +6440,12 @@ def km_3d_view_tool_paint_gpencil_box(params): "3D View Tool: Paint Gpencil, Box", {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, {"items": [ - ("gpencil.primitive", {"type": params.tool_tweak, "value": 'ANY'}, - {"properties": [("type", 'BOX'), ("wait_for_input", False)]}), - ("gpencil.primitive", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, - {"properties": [("type", 'BOX'), ("wait_for_input", False)]}), - ("gpencil.primitive", {"type": 'LEFTMOUSE', "value": 'PRESS', "alt": True}, - {"properties": [("type", 'BOX'), ("wait_for_input", False)]}), + ("gpencil.primitive_box", {"type": params.tool_tweak, "value": 'ANY'}, + {"properties": [("wait_for_input", False)]}), + ("gpencil.primitive_box", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, + {"properties": [("wait_for_input", False)]}), + ("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), ]}, @@ -6431,12 +6457,12 @@ def km_3d_view_tool_paint_gpencil_circle(params): "3D View Tool: Paint Gpencil, Circle", {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, {"items": [ - ("gpencil.primitive", {"type": params.tool_tweak, "value": 'ANY'}, - {"properties": [("type", 'CIRCLE'), ("wait_for_input", False)]}), - ("gpencil.primitive", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, - {"properties": [("type", 'CIRCLE'), ("wait_for_input", False)]}), - ("gpencil.primitive", {"type": 'LEFTMOUSE', "value": 'PRESS', "alt": True}, - {"properties": [("type", 'CIRCLE'), ("wait_for_input", False)]}), + ("gpencil.primitive_circle", {"type": params.tool_tweak, "value": 'ANY'}, + {"properties": [("wait_for_input", False)]}), + ("gpencil.primitive_circle", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, + {"properties": [("wait_for_input", False)]}), + ("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), ]}, @@ -6448,12 +6474,12 @@ def km_3d_view_tool_paint_gpencil_arc(params): "3D View Tool: Paint Gpencil, Arc", {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, {"items": [ - ("gpencil.primitive", {"type": params.tool_tweak, "value": 'ANY'}, - {"properties": [("type", 'ARC'), ("wait_for_input", False)]}), - ("gpencil.primitive", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, + ("gpencil.primitive_curve", {"type": params.tool_tweak, "value": 'ANY'}, {"properties": [("type", 'ARC'), ("wait_for_input", False)]}), - ("gpencil.primitive", {"type": 'LEFTMOUSE', "value": 'PRESS', "alt": True}, + ("gpencil.primitive_curve", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, {"properties": [("type", 'ARC'), ("wait_for_input", False)]}), + ("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), ]}, @@ -6465,7 +6491,7 @@ def km_3d_view_tool_paint_gpencil_curve(params): "3D View Tool: Paint Gpencil, Curve", {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, {"items": [ - ("gpencil.primitive", {"type": params.tool_tweak, "value": 'ANY'}, + ("gpencil.primitive_curve", {"type": params.tool_tweak, "value": 'ANY'}, {"properties": [("type", 'CURVE'), ("wait_for_input", False)]}), # Lasso select ("gpencil.select_lasso", {"type": params.action_tweak, "value": 'ANY', "ctrl": True, "alt": True}, None), @@ -6892,6 +6918,7 @@ def generate_keymaps(params=None): km_3d_view_tool_sculpt_cloth_filter(params), km_3d_view_tool_sculpt_color_filter(params), km_3d_view_tool_sculpt_mask_by_color(params), + km_3d_view_tool_sculpt_face_set_edit(params), km_3d_view_tool_paint_weight_sample_weight(params), km_3d_view_tool_paint_weight_sample_vertex_group(params), km_3d_view_tool_paint_weight_gradient(params), 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 9a428acba56..5d52eed15dd 100644 --- a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py +++ b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py @@ -2473,7 +2473,7 @@ def km_grease_pencil_stroke_paint_fill(params): ("gpencil.draw", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, {"properties": [("mode", 'DRAW'), ("wait_for_input", False), ("disable_straight", True), ("disable_stabilizer", True)]}), # If press alternative key, the brush now it's for drawing lines - ("gpencil.draw", {"type": 'LEFTMOUSE', "value": 'PRESS', "alt": True, "shift": True}, + ("gpencil.draw", {"type": 'LEFTMOUSE', "value": 'PRESS', "alt": True}, {"properties": [("mode", 'DRAW'), ("wait_for_input", False), ("disable_straight", True), ("disable_stabilizer", True), ("disable_fill", True)]}), ]) @@ -3896,6 +3896,7 @@ def km_transform_modal_map(_params): ("CONFIRM", {"type": 'LEFTMOUSE', "value": 'PRESS', "any": True}, None), ("CONFIRM", {"type": 'RET', "value": 'PRESS', "any": True}, None), ("CONFIRM", {"type": 'NUMPAD_ENTER', "value": 'PRESS', "any": True}, None), + ("CONFIRM", {"type": 'SPACE', "value": 'PRESS', "any": True}, None), ("CANCEL", {"type": 'RIGHTMOUSE', "value": 'PRESS', "any": True}, None), ("CANCEL", {"type": 'ESC', "value": 'PRESS', "any": True}, None), ("AXIS_X", {"type": 'X', "value": 'PRESS'}, None), @@ -3914,6 +3915,7 @@ def km_transform_modal_map(_params): ("SNAP_INV_ON", {"type": 'RIGHT_CTRL', "value": 'PRESS', "any": True}, None), ("SNAP_INV_OFF", {"type": 'RIGHT_CTRL', "value": 'RELEASE', "any": True}, None), ("ADD_SNAP", {"type": 'A', "value": 'PRESS'}, None), + ("ADD_SNAP", {"type": 'A', "value": 'PRESS', "ctrl": True}, None), ("REMOVE_SNAP", {"type": 'A', "value": 'PRESS', "alt": True}, None), ("PROPORTIONAL_SIZE_UP", {"type": 'PAGE_UP', "value": 'PRESS'}, None), ("PROPORTIONAL_SIZE_DOWN", {"type": 'PAGE_DOWN', "value": 'PRESS'}, None), @@ -3926,11 +3928,17 @@ def km_transform_modal_map(_params): ("PROPORTIONAL_SIZE", {"type": 'TRACKPADPAN', "value": 'ANY'}, None), ("EDGESLIDE_EDGE_NEXT", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "alt": True}, None), ("EDGESLIDE_PREV_NEXT", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "alt": True}, None), + ("AUTOIK_CHAIN_LEN_UP", {"type": 'PAGE_UP', "value": 'PRESS'}, None), + ("AUTOIK_CHAIN_LEN_DOWN", {"type": 'PAGE_DOWN', "value": 'PRESS'}, None), ("AUTOIK_CHAIN_LEN_UP", {"type": 'PAGE_UP', "value": 'PRESS', "shift": True}, None), ("AUTOIK_CHAIN_LEN_DOWN", {"type": 'PAGE_DOWN', "value": 'PRESS', "shift": True}, None), + ("AUTOIK_CHAIN_LEN_UP", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS'}, None), + ("AUTOIK_CHAIN_LEN_DOWN", {"type": 'WHEELUPMOUSE', "value": 'PRESS'}, None), ("AUTOIK_CHAIN_LEN_UP", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "shift": True}, None), ("AUTOIK_CHAIN_LEN_DOWN", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "shift": True}, None), ("INSERTOFS_TOGGLE_DIR", {"type": 'T', "value": 'PRESS'}, None), + ("AUTOCONSTRAIN", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None), + ("AUTOCONSTRAIN", {"type": 'MIDDLEMOUSE', "value": 'PRESS', "shift": True}, None), ]) return keymap diff --git a/release/scripts/startup/bl_app_templates_system/2D_Animation/__init__.py b/release/scripts/startup/bl_app_templates_system/2D_Animation/__init__.py index 009cb65d150..1892bea41f7 100644 --- a/release/scripts/startup/bl_app_templates_system/2D_Animation/__init__.py +++ b/release/scripts/startup/bl_app_templates_system/2D_Animation/__init__.py @@ -55,6 +55,13 @@ def load_handler(dummy): space.shading.type = 'MATERIAL' space.shading.use_scene_world = True + # Grease pencil object + scene = bpy.data.scenes[0] + if scene: + for ob in scene.objects: + if ob.type == 'GPENCIL': + gpd = ob.data + gpd.onion_keyframe_type = 'ALL' def register(): bpy.app.handlers.load_factory_startup_post.append(load_handler) diff --git a/release/scripts/startup/bl_operators/sequencer.py b/release/scripts/startup/bl_operators/sequencer.py index a332f938afd..9b15ccf167b 100644 --- a/release/scripts/startup/bl_operators/sequencer.py +++ b/release/scripts/startup/bl_operators/sequencer.py @@ -151,7 +151,13 @@ class SequencerFadesClear(Operator): return context.scene and context.scene.sequence_editor and context.scene.sequence_editor.active_strip def execute(self, context): - fcurves = context.scene.animation_data.action.fcurves + animation_data = context.scene.animation_data + if animation_data is None: + return {'CANCELLED'} + action = animation_data.action + if action is None: + return {'CANCELLED'} + fcurves = action.fcurves fcurve_map = { curve.data_path: curve for curve in fcurves diff --git a/release/scripts/startup/bl_operators/userpref.py b/release/scripts/startup/bl_operators/userpref.py index 95820f1dc06..5f10f06f655 100644 --- a/release/scripts/startup/bl_operators/userpref.py +++ b/release/scripts/startup/bl_operators/userpref.py @@ -359,7 +359,7 @@ class PREFERENCES_OT_keyitem_restore(Operator): item_id: IntProperty( name="Item Identifier", - description="Identifier of the item to remove", + description="Identifier of the item to restore", ) @classmethod diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py index 9925cf6dbe0..6c8d94c874c 100644 --- a/release/scripts/startup/bl_operators/wm.py +++ b/release/scripts/startup/bl_operators/wm.py @@ -1276,21 +1276,19 @@ class WM_OT_properties_edit(Operator): # First remove item = eval("context.%s" % data_path) + + if (item.id_data and item.id_data.override_library and item.id_data.override_library.reference): + self.report({'ERROR'}, "Cannot edit properties from override data") + return {'CANCELLED'} + prop_type_old = type(item[prop_old]) rna_idprop_ui_prop_clear(item, prop_old) - exec_str = "del item[%r]" % prop_old - # print(exec_str) - exec(exec_str) + del item[prop_old] # Reassign - exec_str = "item[%r] = %s" % (prop, repr(value_eval)) - # print(exec_str) - exec(exec_str) - - exec_str = "item.property_overridable_library_set('[\"%s\"]', %s)" % (prop, self.is_overridable_library) - exec(exec_str) - + item[prop] = value_eval + item.property_overridable_library_set('["%s"]' % prop, self.is_overridable_library) rna_idprop_ui_prop_update(item, prop) self._last_prop[:] = [prop] @@ -1375,9 +1373,14 @@ class WM_OT_properties_edit(Operator): item = eval("context.%s" % data_path) + if (item.id_data and item.id_data.override_library and item.id_data.override_library.reference): + self.report({'ERROR'}, "Cannot edit properties from override data") + return {'CANCELLED'} + # retrieve overridable static - exec_str = "item.is_property_overridable_library('[\"%s\"]')" % (self.property) - self.is_overridable_library = bool(eval(exec_str)) + is_overridable = item.is_property_overridable_library('["%s"]' % self.property) + self.is_overridable_library = bool(is_overridable) + # default default value prop_type, is_array = rna_idprop_value_item_type(self.get_value_eval()) @@ -1498,6 +1501,10 @@ class WM_OT_properties_add(Operator): data_path = self.data_path item = eval("context.%s" % data_path) + if (item.id_data and item.id_data.override_library and item.id_data.override_library.reference): + self.report({'ERROR'}, "Cannot add properties to override data") + return {'CANCELLED'} + def unique_name(names): prop = "prop" prop_new = prop @@ -1550,6 +1557,11 @@ class WM_OT_properties_remove(Operator): ) data_path = self.data_path item = eval("context.%s" % data_path) + + if (item.id_data and item.id_data.override_library and item.id_data.override_library.reference): + self.report({'ERROR'}, "Cannot remove properties from override data") + return {'CANCELLED'} + prop = self.property rna_idprop_ui_prop_update(item, prop) del item[prop] diff --git a/release/scripts/startup/bl_ui/properties_data_camera.py b/release/scripts/startup/bl_ui/properties_data_camera.py index 3de144c5a15..80bd8347421 100644 --- a/release/scripts/startup/bl_ui/properties_data_camera.py +++ b/release/scripts/startup/bl_ui/properties_data_camera.py @@ -385,6 +385,15 @@ class DATA_PT_camera_display(CameraButtonsPanel, Panel): col.prop(cam, "show_sensor", text="Sensor") col.prop(cam, "show_name", text="Name") + col = layout.column(align=False, heading="Passepartout") + col.use_property_decorate = False + row = col.row(align=True) + sub = row.row(align=True) + sub.prop(cam, "show_passepartout", text="") + sub = sub.row(align=True) + sub.active = cam.show_passepartout + sub.prop(cam, "passepartout_alpha", text="") + row.prop_decorator(cam, "passepartout_alpha") class DATA_PT_camera_display_composition_guides(CameraButtonsPanel, Panel): bl_label = "Composition Guides" @@ -414,27 +423,6 @@ class DATA_PT_camera_display_composition_guides(CameraButtonsPanel, Panel): col.prop(cam, "show_composition_harmony_tri_b", text="Triangle B") -class DATA_PT_camera_display_passepartout(CameraButtonsPanel, Panel): - bl_label = "Passepartout" - bl_parent_id = "DATA_PT_camera_display" - bl_options = {'DEFAULT_CLOSED'} - COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'} - - def draw_header(self, context): - cam = context.camera - - self.layout.prop(cam, "show_passepartout", text="") - - def draw(self, context): - layout = self.layout - layout.use_property_split = True - - cam = context.camera - - layout.active = cam.show_passepartout - layout.prop(cam, "passepartout_alpha", text="Opacity", slider=True) - - class DATA_PT_camera_safe_areas(CameraButtonsPanel, Panel): bl_label = "Safe Areas" bl_options = {'DEFAULT_CLOSED'} @@ -534,7 +522,6 @@ classes = ( DATA_PT_camera_background_image, DATA_PT_camera_display, DATA_PT_camera_display_composition_guides, - DATA_PT_camera_display_passepartout, DATA_PT_custom_props_camera, ) diff --git a/release/scripts/startup/bl_ui/properties_data_mesh.py b/release/scripts/startup/bl_ui/properties_data_mesh.py index 77308fed014..64bc694d5ca 100644 --- a/release/scripts/startup/bl_ui/properties_data_mesh.py +++ b/release/scripts/startup/bl_ui/properties_data_mesh.py @@ -350,7 +350,7 @@ class DATA_PT_shape_keys(MeshButtonsPanel, Panel): if enable_edit or (ob.use_shape_key_edit_mode and ob.type == 'MESH'): enable_pin = True - if ob.show_only_shape_key: + if ob.show_only_shape_key is False: enable_edit_value = True row = layout.row() @@ -468,7 +468,7 @@ class DATA_PT_sculpt_vertex_colors(MeshButtonsPanel, Panel): @classmethod def poll(cls, context): - return context.preferences.experimental.use_sculpt_vertex_colors + return super().poll(context) and context.preferences.experimental.use_sculpt_vertex_colors def draw(self, context): layout = self.layout diff --git a/release/scripts/startup/bl_ui/properties_paint_common.py b/release/scripts/startup/bl_ui/properties_paint_common.py index f1004358418..a20de3e29db 100644 --- a/release/scripts/startup/bl_ui/properties_paint_common.py +++ b/release/scripts/startup/bl_ui/properties_paint_common.py @@ -313,6 +313,7 @@ class TextureMaskPanel(BrushPanel): class StrokePanel(BrushPanel): bl_label = "Stroke" bl_options = {'DEFAULT_CLOSED'} + bl_ui_units_x = 13 def draw(self, context): layout = self.layout @@ -640,6 +641,8 @@ def brush_settings(layout, context, brush, popover=False): elif sculpt_tool == 'POSE': layout.separator() + layout.prop(brush, "deform_target") + layout.separator() layout.prop(brush, "pose_deform_type") layout.prop(brush, "pose_origin_type") layout.prop(brush, "pose_offset") @@ -720,8 +723,12 @@ def brush_settings(layout, context, brush, popover=False): col.prop(brush, "smear_deform_type") elif sculpt_tool == 'BOUNDARY': + layout.prop(brush, "deform_target") + layout.separator() col = layout.column() col.prop(brush, "boundary_deform_type") + col.prop(brush, "boundary_falloff_type") + col.prop(brush, "boundary_offset") elif sculpt_tool == 'TOPOLOGY': col = layout.column() @@ -1109,6 +1116,45 @@ def brush_basic_texpaint_settings(layout, context, brush, *, compact=False): header=True ) +def brush_basic__draw_color_selector(context, layout, brush, gp_settings, props): + tool_settings = context.scene.tool_settings + settings = tool_settings.gpencil_paint + ma = gp_settings.material + + row = layout.row(align=True) + if not gp_settings.use_material_pin: + ma = context.object.active_material + icon_id = 0 + if ma: + icon_id = ma.id_data.preview.icon_id + txt_ma = ma.name + maxw = 25 + if len(txt_ma) > maxw: + txt_ma = txt_ma[:maxw - 5] + '..' + txt_ma[-3:] + else: + txt_ma = "" + + sub = row.row() + sub.ui_units_x = 8 + sub.popover( + panel="TOPBAR_PT_gpencil_materials", + text=txt_ma, + icon_value=icon_id, + ) + + row.prop(gp_settings, "use_material_pin", text="") + + if brush.gpencil_tool in {'DRAW', 'FILL'}: + row.separator(factor=1.0) + row.prop_enum(settings, "color_mode", 'MATERIAL', text="", icon='MATERIAL') + row.prop_enum(settings, "color_mode", 'VERTEXCOLOR', text="", icon='VPAINT_HLT') + sub_row = row.row(align=True) + sub_row.enabled = settings.color_mode == 'VERTEXCOLOR' + sub_row.prop_with_popover(brush, "color", text="", panel="TOPBAR_PT_gpencil_vertexcolor") + + if props: + row = layout.row(align=True) + row.prop(props, "subdivision") def brush_basic_gpencil_paint_settings(layout, context, brush, *, compact=False): tool_settings = context.tool_settings diff --git a/release/scripts/startup/bl_ui/properties_view_layer.py b/release/scripts/startup/bl_ui/properties_view_layer.py index 3645f0dc2f2..36bbf78d8ab 100644 --- a/release/scripts/startup/bl_ui/properties_view_layer.py +++ b/release/scripts/startup/bl_ui/properties_view_layer.py @@ -111,9 +111,7 @@ class VIEWLAYER_PT_eevee_layer_passes_light(ViewLayerButtonsPanel, Panel): col.prop(view_layer, "use_pass_emit", text="Emission") col.prop(view_layer, "use_pass_environment") col.prop(view_layer, "use_pass_shadow") - row = col.row() - row.prop(view_layer, "use_pass_ambient_occlusion", text="Ambient Occlusion") - row.active = scene_eevee.use_gtao + col.prop(view_layer, "use_pass_ambient_occlusion", text="Ambient Occlusion") class VIEWLAYER_PT_eevee_layer_passes_effects(ViewLayerButtonsPanel, Panel): diff --git a/release/scripts/startup/bl_ui/space_image.py b/release/scripts/startup/bl_ui/space_image.py index 75c1bb5e3f9..3aedc04af88 100644 --- a/release/scripts/startup/bl_ui/space_image.py +++ b/release/scripts/startup/bl_ui/space_image.py @@ -1137,6 +1137,7 @@ class IMAGE_PT_paint_settings_advanced(Panel, ImagePaintPanel): bl_parent_id = "IMAGE_PT_paint_settings" bl_category = "Tool" bl_label = "Advanced" + bl_ui_units_x = 12 def draw(self, context): layout = self.layout @@ -1193,6 +1194,7 @@ class IMAGE_PT_tools_brush_display(Panel, BrushButtonsPanel, DisplayPanel): bl_category = "Tool" bl_label = "Brush Tip" bl_options = {'DEFAULT_CLOSED'} + bl_ui_units_x = 15 class IMAGE_PT_tools_brush_texture(BrushButtonsPanel, Panel): @@ -1219,6 +1221,7 @@ class IMAGE_PT_tools_mask_texture(Panel, BrushButtonsPanel, TextureMaskPanel): bl_parent_id = "IMAGE_PT_paint_settings" bl_category = "Tool" bl_label = "Texture Mask" + bl_ui_units_x = 12 class IMAGE_PT_paint_stroke(BrushButtonsPanel, Panel, StrokePanel): diff --git a/release/scripts/startup/bl_ui/space_node.py b/release/scripts/startup/bl_ui/space_node.py index faf4036f9b3..93be870ce73 100644 --- a/release/scripts/startup/bl_ui/space_node.py +++ b/release/scripts/startup/bl_ui/space_node.py @@ -216,13 +216,15 @@ class NODE_MT_add(bpy.types.Menu): layout = self.layout layout.operator_context = 'INVOKE_DEFAULT' - props = layout.operator("node.add_search", text="Search...", icon='VIEWZOOM') - props.use_transform = True - layout.separator() + if nodeitems_utils.has_node_categories(context): + props = layout.operator("node.add_search", text="Search...", icon='VIEWZOOM') + props.use_transform = True + + layout.separator() - # actual node submenus are defined by draw functions from node categories - nodeitems_utils.draw_node_categories_menu(self, context) + # actual node submenus are defined by draw functions from node categories + nodeitems_utils.draw_node_categories_menu(self, context) class NODE_MT_view(Menu): diff --git a/release/scripts/startup/bl_ui/space_sequencer.py b/release/scripts/startup/bl_ui/space_sequencer.py index 9f251a9abad..1164ff82e3c 100644 --- a/release/scripts/startup/bl_ui/space_sequencer.py +++ b/release/scripts/startup/bl_ui/space_sequencer.py @@ -327,6 +327,7 @@ class SEQUENCER_MT_view(Menu): if is_preview: layout.separator() if st.display_mode == 'IMAGE': + layout.prop(st, "use_zoom_to_fit") layout.prop(ed, "show_overlay", text="Show Frame Overlay") layout.prop(st, "show_safe_areas", text="Show Safe Areas") layout.prop(st, "show_metadata", text="Show Metadata") diff --git a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py index d07241203fb..e336635a4ee 100644 --- a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py +++ b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py @@ -1260,7 +1260,9 @@ class _defs_sculpt: props = tool.operator_properties("sculpt.mesh_filter") layout.prop(props, "type", expand=False) layout.prop(props, "strength") - layout.prop(props, "deform_axis") + row = layout.row(align=True) + row.prop(props, "deform_axis") + layout.prop(props, "orientation", expand=False) layout.prop(props, "use_face_sets") if props.type == 'SURFACE_SMOOTH': layout.prop(props, "surface_smooth_shape_preservation", expand=False) @@ -1285,6 +1287,9 @@ class _defs_sculpt: props = tool.operator_properties("sculpt.cloth_filter") layout.prop(props, "type", expand=False) layout.prop(props, "strength") + row = layout.row(align=True) + row.prop(props, "force_axis") + layout.prop(props, "orientation", expand=False) layout.prop(props, "cloth_mass") layout.prop(props, "cloth_damping") layout.prop(props, "use_face_sets") @@ -1335,6 +1340,22 @@ class _defs_sculpt: draw_settings=draw_settings, ) + @ToolDef.from_fn + def face_set_edit(): + def draw_settings(_context, layout, tool): + props = tool.operator_properties("sculpt.face_set_edit") + layout.prop(props, "mode", expand=False) + layout.prop(props, "modify_hidden") + + return dict( + idname="builtin.face_set_edit", + label="Edit Face Set", + icon="ops.sculpt.face_set_edit", + widget=None, + keymap="3D View Tool: Sculpt, Face Set Edit", + draw_settings=draw_settings, + ) + class _defs_vertex_paint: @@ -1671,6 +1692,29 @@ class _defs_image_uv_sculpt: class _defs_gpencil_paint: @staticmethod + def gpencil_primitive_toolbar(context, layout, tool, props): + paint = context.tool_settings.gpencil_paint + brush = paint.brush + + if brush is None: + return False + + gp_settings = brush.gpencil_settings + + row = layout.row(align=True) + tool_settings = context.scene.tool_settings + settings = tool_settings.gpencil_paint + row.template_ID_preview(settings, "brush", rows=3, cols=8, hide_buttons=True) + + from bl_ui.properties_paint_common import ( + brush_basic_gpencil_paint_settings, + brush_basic__draw_color_selector, + ) + + brush_basic__draw_color_selector(context, layout, brush, gp_settings, props) + brush_basic_gpencil_paint_settings(layout, context, brush, compact=True) + + @staticmethod def generate_from_brushes(context): return generate_from_enum_ex( context, @@ -1697,6 +1741,10 @@ class _defs_gpencil_paint: @ToolDef.from_fn def line(): + def draw_settings(context, layout, tool): + props = tool.operator_properties("gpencil.primitive_line") + _defs_gpencil_paint.gpencil_primitive_toolbar(context, layout, tool, props) + return dict( idname="builtin.line", label="Line", @@ -1704,10 +1752,15 @@ class _defs_gpencil_paint: cursor='CROSSHAIR', widget=None, keymap=(), + draw_settings=draw_settings, ) @ToolDef.from_fn def polyline(): + def draw_settings(context, layout, tool): + props = tool.operator_properties("gpencil.primitive_polyline") + _defs_gpencil_paint.gpencil_primitive_toolbar(context, layout, tool, props) + return dict( idname="builtin.polyline", label="Polyline", @@ -1715,10 +1768,15 @@ class _defs_gpencil_paint: cursor='CROSSHAIR', widget=None, keymap=(), + draw_settings=draw_settings, ) @ToolDef.from_fn def box(): + def draw_settings(context, layout, tool): + props = tool.operator_properties("gpencil.primitive_box") + _defs_gpencil_paint.gpencil_primitive_toolbar(context, layout, tool, props) + return dict( idname="builtin.box", label="Box", @@ -1726,10 +1784,15 @@ class _defs_gpencil_paint: cursor='CROSSHAIR', widget=None, keymap=(), + draw_settings=draw_settings, ) @ToolDef.from_fn def circle(): + def draw_settings(context, layout, tool): + props = tool.operator_properties("gpencil.primitive_circle") + _defs_gpencil_paint.gpencil_primitive_toolbar(context, layout, tool, props) + return dict( idname="builtin.circle", label="Circle", @@ -1737,10 +1800,15 @@ class _defs_gpencil_paint: cursor='CROSSHAIR', widget=None, keymap=(), + draw_settings=draw_settings, ) @ToolDef.from_fn def arc(): + def draw_settings(context, layout, tool): + props = tool.operator_properties("gpencil.primitive_curve") + _defs_gpencil_paint.gpencil_primitive_toolbar(context, layout, tool, props) + return dict( idname="builtin.arc", label="Arc", @@ -1748,10 +1816,15 @@ class _defs_gpencil_paint: cursor='CROSSHAIR', widget=None, keymap=(), + draw_settings=draw_settings, ) @ToolDef.from_fn def curve(): + def draw_settings(context, layout, tool): + props = tool.operator_properties("gpencil.primitive_curve") + _defs_gpencil_paint.gpencil_primitive_toolbar(context, layout, tool, props) + return dict( idname="builtin.curve", label="Curve", @@ -1759,6 +1832,7 @@ class _defs_gpencil_paint: cursor='CROSSHAIR', widget=None, keymap=(), + draw_settings=draw_settings, ) @ToolDef.from_fn @@ -2542,6 +2616,8 @@ class VIEW3D_PT_tools_active(ToolSelectPanelHelper, Panel): else () ), None, + _defs_sculpt.face_set_edit, + None, _defs_transform.translate, _defs_transform.rotate, _defs_transform.scale, diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py index 8727df9f0fd..f015a8de295 100644 --- a/release/scripts/startup/bl_ui/space_userpref.py +++ b/release/scripts/startup/bl_ui/space_userpref.py @@ -2147,6 +2147,10 @@ class ExperimentalPanel: url_prefix = "https://developer.blender.org/" + @classmethod + def poll(cls, context): + return bpy.app.version_cycle == 'alpha' + def _draw_items(self, context, items): prefs = context.preferences experimental = prefs.experimental @@ -2207,6 +2211,12 @@ class USERPREF_PT_experimental_prototypes(ExperimentalPanel, Panel): class USERPREF_PT_experimental_debugging(ExperimentalPanel, Panel): bl_label = "Debugging" + @classmethod + def poll(cls, context): + # Unlike the other experimental panels, the debugging one is always visible + # even in beta or release. + return True + def draw(self, context): self._draw_items( context, ( diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index a9e1b933338..c49f5b3e5d1 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -385,19 +385,7 @@ class _draw_tool_settings_context_mode: if tool is None: return False - # is_paint = True - # FIXME: tools must use their own UI drawing! - if tool.idname in { - "builtin.line", - "builtin.box", - "builtin.circle", - "builtin.arc", - "builtin.curve", - "builtin.polyline", - }: - # is_paint = False - pass - elif tool.idname == "builtin.cutter": + if tool.idname == "builtin.cutter": row = layout.row(align=True) row.prop(context.tool_settings.gpencil_sculpt, "intersection_threshold") return False @@ -411,47 +399,16 @@ class _draw_tool_settings_context_mode: gp_settings = brush.gpencil_settings - def draw_color_selector(): - ma = gp_settings.material - row = layout.row(align=True) - if not gp_settings.use_material_pin: - ma = context.object.active_material - icon_id = 0 - if ma: - icon_id = ma.id_data.preview.icon_id - txt_ma = ma.name - maxw = 25 - if len(txt_ma) > maxw: - txt_ma = txt_ma[:maxw - 5] + '..' + txt_ma[-3:] - else: - txt_ma = "" - - sub = row.row() - sub.ui_units_x = 8 - sub.popover( - panel="TOPBAR_PT_gpencil_materials", - text=txt_ma, - icon_value=icon_id, - ) - - row.prop(gp_settings, "use_material_pin", text="") - - if brush.gpencil_tool in {'DRAW', 'FILL'}: - row.separator(factor=1.0) - subrow = row.row(align=True) - row.prop_enum(settings, "color_mode", 'MATERIAL', text="", icon='MATERIAL') - row.prop_enum(settings, "color_mode", 'VERTEXCOLOR', text="", icon='VPAINT_HLT') - sub_row = row.row(align=True) - sub_row.enabled = settings.color_mode == 'VERTEXCOLOR' - sub_row.prop_with_popover(brush, "color", text="", panel="TOPBAR_PT_gpencil_vertexcolor") - row = layout.row(align=True) tool_settings = context.scene.tool_settings settings = tool_settings.gpencil_paint row.template_ID_preview(settings, "brush", rows=3, cols=8, hide_buttons=True) if context.object and brush.gpencil_tool in {'FILL', 'DRAW'}: - draw_color_selector() + from bl_ui.properties_paint_common import ( + brush_basic__draw_color_selector, + ) + brush_basic__draw_color_selector(context, layout, brush, gp_settings, None) if context.object and brush.gpencil_tool == 'TINT': row.separator(factor=0.4) @@ -963,9 +920,8 @@ class ShowHideMenu: layout.operator("%s.hide" % self._operator_name, text="Hide Unselected").unselected = True -# Standard transforms which apply to all cases -# NOTE: this doesn't seem to be able to be used directly -class VIEW3D_MT_transform_base(Menu): +# Standard transforms which apply to all cases (mix-in class, not used directly). +class VIEW3D_MT_transform_base: bl_label = "Transform" bl_category = "View" @@ -992,7 +948,7 @@ class VIEW3D_MT_transform_base(Menu): # Generic transform menu - geometry types -class VIEW3D_MT_transform(VIEW3D_MT_transform_base): +class VIEW3D_MT_transform(VIEW3D_MT_transform_base, Menu): def draw(self, context): # base menu VIEW3D_MT_transform_base.draw(self, context) @@ -1012,7 +968,7 @@ class VIEW3D_MT_transform(VIEW3D_MT_transform_base): # Object-specific extensions to Transform menu -class VIEW3D_MT_transform_object(VIEW3D_MT_transform_base): +class VIEW3D_MT_transform_object(VIEW3D_MT_transform_base, Menu): def draw(self, context): layout = self.layout @@ -1044,7 +1000,7 @@ class VIEW3D_MT_transform_object(VIEW3D_MT_transform_base): # Armature EditMode extensions to Transform menu -class VIEW3D_MT_transform_armature(VIEW3D_MT_transform_base): +class VIEW3D_MT_transform_armature(VIEW3D_MT_transform_base, Menu): def draw(self, context): layout = self.layout @@ -2330,6 +2286,7 @@ class VIEW3D_MT_object(Menu): layout.separator() layout.menu("VIEW3D_MT_object_showhide") + layout.menu("VIEW3D_MT_object_cleanup") layout.separator() @@ -2769,6 +2726,20 @@ class VIEW3D_MT_object_showhide(Menu): layout.operator("object.hide_view_set", text="Hide Unselected").unselected = True +class VIEW3D_MT_object_cleanup(Menu): + bl_label = "Clean Up" + + def draw(self, _context): + layout = self.layout + + layout.operator("object.vertex_group_clean", text="Clean Vertex Group Weights").group_select_mode = 'ALL' + layout.operator("object.vertex_group_limit_total", text="Limit Total Vertex Groups").group_select_mode = 'ALL' + + layout.separator() + + layout.operator("object.material_slot_remove_unused", text="Remove Unused Material Slots") + + class VIEW3D_MT_make_single_user(Menu): bl_label = "Make Single User" @@ -5985,7 +5956,7 @@ class VIEW3D_PT_gizmo_display(Panel): layout.separator() col = layout.column() - col.active = view.show_gizmo_context + col.active = view.show_gizmo and view.show_gizmo_context col.label(text="Object Gizmos") col.prop(scene.transform_orientation_slots[1], "type", text="") col.prop(view, "show_gizmo_object_translate", text="Move") @@ -5996,6 +5967,7 @@ class VIEW3D_PT_gizmo_display(Panel): # Match order of object type visibility col = layout.column() + col.active = view.show_gizmo col.label(text="Empty") col.prop(view, "show_gizmo_empty_image", text="Image") col.prop(view, "show_gizmo_empty_force_field", text="Force Field") @@ -6154,8 +6126,12 @@ class VIEW3D_PT_overlay_motion_tracking(Panel): bl_label = "Motion Tracking" def draw_header(self, context): + layout = self.layout view = context.space_data - self.layout.prop(view, "show_reconstruction", text=self.bl_label) + overlay = view.overlay + display_all = overlay.show_overlays + layout.active = display_all + layout.prop(view, "show_reconstruction", text=self.bl_label) def draw(self, context): layout = self.layout @@ -6177,6 +6153,7 @@ class VIEW3D_PT_overlay_motion_tracking(Panel): sub.prop(view, "show_bundle_names", text="Marker Names") col = layout.column() + col.active = display_all col.label(text="Tracks:") row = col.row(align=True) row.prop(view, "tracks_display_type", text="") @@ -6523,7 +6500,7 @@ class VIEW3D_PT_overlay_vertex_paint(Panel): col = layout.column() col.active = display_all - col.prop(overlay, "vertex_paint_mode_opacity", text="Opacity") + col.prop(overlay, "vertex_paint_mode_opacity") col.prop(overlay, "show_paint_wire") @@ -6612,6 +6589,8 @@ class VIEW3D_PT_proportional_edit(Panel): layout = self.layout tool_settings = context.tool_settings col = layout.column() + col.active = (tool_settings.use_proportional_edit_objects if context.mode == 'OBJECT' + else tool_settings.use_proportional_edit) if context.mode != 'OBJECT': col.prop(tool_settings, "use_proportional_connected") @@ -7419,7 +7398,6 @@ classes = ( VIEW3D_HT_tool_header, VIEW3D_MT_editor_menus, VIEW3D_MT_transform, - VIEW3D_MT_transform_base, VIEW3D_MT_transform_object, VIEW3D_MT_transform_armature, VIEW3D_MT_mirror, @@ -7482,6 +7460,7 @@ classes = ( VIEW3D_MT_object_constraints, VIEW3D_MT_object_quick_effects, VIEW3D_MT_object_showhide, + VIEW3D_MT_object_cleanup, VIEW3D_MT_make_single_user, VIEW3D_MT_make_links, VIEW3D_MT_brush_paint_modes, diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py b/release/scripts/startup/bl_ui/space_view3d_toolbar.py index 1b8869d0bc8..dfabf5e9d81 100644 --- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py +++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py @@ -392,6 +392,7 @@ class VIEW3D_PT_tools_brush_settings_advanced(Panel, View3DPaintBrushPanel): bl_parent_id = "VIEW3D_PT_tools_brush_settings" bl_label = "Advanced" bl_options = {'DEFAULT_CLOSED'} + bl_ui_units_x = 14 def draw(self, context): layout = self.layout @@ -598,6 +599,7 @@ class VIEW3D_PT_tools_brush_display(Panel, View3DPaintBrushPanel, DisplayPanel): bl_parent_id = "VIEW3D_PT_tools_brush_settings" bl_label = "Cursor" bl_options = {'DEFAULT_CLOSED'} + bl_ui_units_x = 12 # TODO, move to space_view3d.py @@ -828,6 +830,7 @@ class VIEW3D_PT_sculpt_options(Panel, View3DPaintPanel): bl_context = ".sculpt_mode" # dot on purpose (access from topbar) bl_label = "Options" bl_options = {'DEFAULT_CLOSED'} + bl_ui_units_x = 12 @classmethod def poll(cls, context): @@ -1375,7 +1378,7 @@ class VIEW3D_PT_tools_grease_pencil_brush_advanced(View3DPanel, Panel): bl_parent_id = 'VIEW3D_PT_tools_grease_pencil_brush_settings' bl_category = "Tool" bl_options = {'DEFAULT_CLOSED'} - bl_ui_units_x = 12 + bl_ui_units_x = 11 @classmethod def poll(cls, context): @@ -1449,6 +1452,7 @@ class VIEW3D_PT_tools_grease_pencil_brush_stroke(Panel, View3DPanel): bl_label = "Stroke" bl_category = "Tool" bl_options = {'DEFAULT_CLOSED'} + bl_ui_units_x = 12 @classmethod def poll(cls, context): @@ -2125,6 +2129,7 @@ class VIEW3D_PT_tools_grease_pencil_paint_appearance(GreasePencilDisplayPanel, P bl_parent_id = 'VIEW3D_PT_tools_grease_pencil_brush_settings' bl_label = "Cursor" bl_category = "Tool" + bl_ui_units_x = 15 class VIEW3D_PT_tools_grease_pencil_sculpt_appearance(GreasePencilDisplayPanel, Panel, View3DPanel): diff --git a/release/scripts/startup/nodeitems_builtins.py b/release/scripts/startup/nodeitems_builtins.py index f62c2ead144..0cf0a99c326 100644 --- a/release/scripts/startup/nodeitems_builtins.py +++ b/release/scripts/startup/nodeitems_builtins.py @@ -478,7 +478,7 @@ texture_node_categories = [ def not_implemented_node(idname): NodeType = getattr(bpy.types, idname) name = NodeType.bl_rna.name - label = f"{name} (mockup)" + label = "%s (mockup)" % name return NodeItem(idname, label=label) simulation_node_categories = [ |