diff options
Diffstat (limited to 'release')
82 files changed, 703 insertions, 240 deletions
diff --git a/release/datafiles/colormanagement/config.ocio b/release/datafiles/colormanagement/config.ocio index bb9fd27fb84..bd342a0577e 100644 --- a/release/datafiles/colormanagement/config.ocio +++ b/release/datafiles/colormanagement/config.ocio @@ -42,7 +42,7 @@ roles: # For interop between configs, and to determine XYZ for rendering aces_interchange: Linear ACES - # Specifed by OCIO, not used in Blender + # Specified by OCIO, not used in Blender color_timing: Filmic Log compositing_log: Filmic Log default: Linear diff --git a/release/datafiles/splash.png b/release/datafiles/splash.png Binary files differindex babb3e30c6d..7189380bbd9 100644 --- a/release/datafiles/splash.png +++ b/release/datafiles/splash.png diff --git a/release/datafiles/startup.blend b/release/datafiles/startup.blend Binary files differindex 20ebf5d9986..fe142d7de7e 100644 --- a/release/datafiles/startup.blend +++ b/release/datafiles/startup.blend diff --git a/release/datafiles/userdef/userdef_default_theme.c b/release/datafiles/userdef/userdef_default_theme.c index f33ecea0eed..055a2e37c6c 100644 --- a/release/datafiles/userdef/userdef_default_theme.c +++ b/release/datafiles/userdef/userdef_default_theme.c @@ -25,8 +25,8 @@ const bTheme U_theme_default = { .outline = RGBA(0x3d3d3dff), .inner = RGBA(0x545454ff), .inner_sel = RGBA(0x4772b3ff), - .item = RGBA(0xffffff80), - .text = RGBA(0xd9d9d9ff), + .item = RGBA(0x1d1d1d80), + .text = RGBA(0xe6e6e6ff), .text_sel = RGBA(0xffffffff), .roundness = 0.2f, }, @@ -43,7 +43,7 @@ const bTheme U_theme_default = { .outline = RGBA(0x3d3d3dff), .inner = RGBA(0x282828ff), .inner_sel = RGBA(0x4772b3ff), - .item = RGBA(0xffffff80), + .item = RGBA(0xffffffb3), .text = RGBA(0xe6e6e6ff), .text_sel = RGBA(0xffffffff), .roundness = 0.2f, @@ -59,7 +59,7 @@ const bTheme U_theme_default = { }, .wcol_radio = { .outline = RGBA(0x3d3d3dff), - .inner = RGBA(0x282828ff), + .inner = RGBA(0x545454ff), .inner_sel = RGBA(0x4772b3ff), .item = RGBA(0x252525ff), .text = RGBA(0xe6e6e6ff), @@ -68,16 +68,16 @@ const bTheme U_theme_default = { }, .wcol_option = { .outline = RGBA(0x3d3d3dff), - .inner = RGBA(0x282828ff), - .inner_sel = RGBA(0x71aaffff), - .item = RGBA(0x111111ff), + .inner = RGBA(0x545454ff), + .inner_sel = RGBA(0x4772b3ff), + .item = RGBA(0xffffffff), .text = RGBA(0xe6e6e6ff), .text_sel = RGBA(0xffffffff), .roundness = 0.2f, }, .wcol_toggle = { .outline = RGBA(0x3d3d3dff), - .inner = RGBA(0x282828ff), + .inner = RGBA(0x545454ff), .inner_sel = RGBA(0x4772b3ff), .item = RGBA(0x252525ff), .text = RGBA(0xe6e6e6ff), @@ -148,11 +148,11 @@ const bTheme U_theme_default = { .roundness = 0.2f, }, .wcol_tooltip = { - .outline = RGBA(0x19191aff), - .inner = RGBA(0x181818ff), - .inner_sel = RGBA(0x181818ff), - .item = RGBA(0x181818ff), - .text = RGBA(0xccccccff), + .outline = RGBA(0x242424ff), + .inner = RGBA(0x1d1d1dff), + .inner_sel = RGBA(0x4772b3ff), + .item = RGBA(0xd9d9d9ff), + .text = RGBA(0xd9d9d9ff), .text_sel = RGBA(0xffffffff), .roundness = 0.2f, }, @@ -187,16 +187,16 @@ const bTheme U_theme_default = { .outline = RGBA(0x2d2d2dff), .inner = RGBA(0x2d2d2d00), .inner_sel = RGBA(0x484a4fff), - .item = RGBA(0xb3b3b3ff), + .item = RGBA(0x4772b3ff), .text = RGBA(0xccccccff), .text_sel = RGBA(0xffffffff), .roundness = 0.2f, }, .wcol_pie_menu = { - .outline = RGBA(0x3d3d3dff), + .outline = RGBA(0x242424ff), .inner = RGBA(0x181818ff), - .inner_sel = RGBA(0x5680c2ff), - .item = RGBA(0x4772b3ff), + .inner_sel = RGBA(0x4772b3ff), + .item = RGBA(0x545454ff), .text = RGBA(0xd9d9d9ff), .text_sel = RGBA(0xffffffff), .roundness = 0.2f, @@ -414,7 +414,7 @@ const bTheme U_theme_default = { .list = RGBA(0x1d1d1dff), .list_title = RGBA(0xffffffff), .list_text = RGBA(0xb8b8b8ff), - .list_text_hi = RGBA(0xffffffff), + .list_text_hi = RGBA(0xffaf23ff), .navigation_bar = RGBA(0x1d1d1dff), .execution_buts = RGBA(0x303030ff), .panelcolors = { @@ -497,7 +497,7 @@ const bTheme U_theme_default = { .back = RGBA(0x30303000), .title = RGBA(0xeeeeeeff), .text = RGBA(0xa6a6a6ff), - .text_hi = RGBA(0x143e66ff), + .text_hi = RGBA(0xffffffff), .header = RGBA(0x303030b3), .header_text = RGBA(0xeeeeeeff), .header_text_hi = RGBA(0xffffffff), @@ -512,7 +512,7 @@ const bTheme U_theme_default = { .list = RGBA(0x1d1d1dff), .list_title = RGBA(0xffffffff), .list_text = RGBA(0xb8b8b8ff), - .list_text_hi = RGBA(0xffffffff), + .list_text_hi = RGBA(0xffaf23ff), .navigation_bar = RGBA(0x1d1d1dff), .execution_buts = RGBA(0x303030ff), .panelcolors = { @@ -573,8 +573,8 @@ const bTheme U_theme_default = { .button_text_hi = RGBA(0xffffffff), .list = RGBA(0x1d1d1dff), .list_title = RGBA(0xffffffff), - .list_text = RGBA(0xe5e5e5ff), - .list_text_hi = RGBA(0xffffffff), + .list_text = RGBA(0xb8b8b8ff), + .list_text_hi = RGBA(0xffaf23ff), .navigation_bar = RGBA(0x1d1d1dff), .execution_buts = RGBA(0x303030ff), .panelcolors = { @@ -612,7 +612,7 @@ const bTheme U_theme_default = { .nla_sound_sel = RGBA(0x1f7a7aff), }, .space_sequencer = { - .back = RGBA(0x30303000), + .back = RGBA(0x18181800), .title = RGBA(0xeeeeeeff), .text = RGBA(0xa6a6a6ff), .text_hi = RGBA(0xffffffff), @@ -635,7 +635,7 @@ const bTheme U_theme_default = { .sub_back = RGBA(0x0000001f), }, .shade1 = RGBA(0xa0a0a000), - .grid = RGBA(0x181818ff), + .grid = RGBA(0x303030ff), .vertex_select = RGBA(0xff8500ff), .bone_pose = RGBA(0x50c8ff50), .cframe = RGBA(0x4772b3ff), @@ -647,7 +647,7 @@ const bTheme U_theme_default = { .facedot_size = 4, .movie = RGBA(0x4d6890ff), .movieclip = RGBA(0x8f4c4cff), - .mask = RGBA(0x666666ff), + .mask = RGBA(0x8f5656ff), .image = RGBA(0x8f744bff), .scene = RGBA(0x808033ff), .audio = RGBA(0x448080ff), @@ -811,8 +811,8 @@ const bTheme U_theme_default = { .button_text_hi = RGBA(0xffffffff), .list = RGBA(0x303030ff), .list_title = RGBA(0xffffffff), - .list_text = RGBA(0xccccccff), - .list_text_hi = RGBA(0xffffffff), + .list_text = RGBA(0xb8b8b8ff), + .list_text_hi = RGBA(0xffaf23ff), .navigation_bar = RGBA(0x1d1d1dff), .execution_buts = RGBA(0x303030ff), .panelcolors = { @@ -935,7 +935,7 @@ const bTheme U_theme_default = { .list = RGBA(0x303030ff), .list_title = RGBA(0xffffff00), .list_text = RGBA(0xb8b8b8ff), - .list_text_hi = RGBA(0xffffffff), + .list_text_hi = RGBA(0xffaf23ff), .navigation_bar = RGBA(0x1d1d1dff), .execution_buts = RGBA(0x303030ff), .panelcolors = { @@ -1046,8 +1046,8 @@ const bTheme U_theme_default = { .button_text_hi = RGBA(0xffffffff), .list = RGBA(0x303030ff), .list_title = RGBA(0xc3c3c3ff), - .list_text = RGBA(0xc3c3c3ff), - .list_text_hi = RGBA(0xffffffff), + .list_text = RGBA(0xb8b8b8ff), + .list_text_hi = RGBA(0xffaf23ff), .navigation_bar = RGBA(0x1d1d1dff), .execution_buts = RGBA(0x303030ff), .panelcolors = { diff --git a/release/freedesktop/snap/README.md b/release/freedesktop/snap/README.md index 742b265ada6..f6c662e9f1e 100644 --- a/release/freedesktop/snap/README.md +++ b/release/freedesktop/snap/README.md @@ -12,6 +12,6 @@ Build pipeline snap tracks and channels - Test builds for the upcoming stable release - *not used for now* <track>/beta - Nightly automated builds provided by a release branch - <track>/egde/<branch> + <track>/edge/<branch> - Nightly or on demand builds - will also make use of branch ``` diff --git a/release/lts/create_release_notes.py b/release/lts/create_release_notes.py index 2a396dca6b0..2d35a71c263 100755 --- a/release/lts/create_release_notes.py +++ b/release/lts/create_release_notes.py @@ -97,7 +97,7 @@ def extract_release_notes(version: str, task_id: int): # Process - 1. Retrieval of description of the gived `task_id`. + 1. Retrieval of description of the given `task_id`. 2. Find rows for the given `version` and convert to `ReleaseLogLine`. 3. based on the associated task or commit retrieves the title of the log line. diff --git a/release/scripts/modules/bl_i18n_utils/bl_extract_messages.py b/release/scripts/modules/bl_i18n_utils/bl_extract_messages.py index 49dbac1d502..cf904a1a88b 100644 --- a/release/scripts/modules/bl_i18n_utils/bl_extract_messages.py +++ b/release/scripts/modules/bl_i18n_utils/bl_extract_messages.py @@ -252,27 +252,50 @@ def dump_rna_messages(msgs, reports, settings, verbose=False): # Function definitions def walk_properties(cls): + # This handles properties whose name is the same as their identifier. + # Usually, it means that those are internal properties not exposed in the UI, however there are some cases + # where the UI label is actually defined and same as the identifier (color spaces e.g., `RGB` etc.). + # So we only exclude those properties in case they belong to an operator for now. + def prop_name_validate(cls, prop_name, prop_identifier): + if prop_name != prop_identifier: + return True + # Heuristic: A lot of operator's HIDDEN properties have no UI label/description. + # While this is not ideal (for API doc purposes, description should always be provided), + # for now skip those properties. + # NOTE: keep in sync with C code in ui_searchbox_region_draw_cb__operator(). + if issubclass(cls, bpy.types.OperatorProperties) and "_OT_" in cls.__name__: + return False + # Heuristic: If UI label is not capitalized, it is likely a private (undocumented) property, + # that can be skipped. + if prop_name and not prop_name[0].isupper(): + return False + return True + bl_rna = cls.bl_rna # Get our parents' properties, to not export them multiple times. bl_rna_base = bl_rna.base + bl_rna_base_props = set() if bl_rna_base: - bl_rna_base_props = set(bl_rna_base.properties.values()) - else: - bl_rna_base_props = set() + bl_rna_base_props |= set(bl_rna_base.properties.values()) + for cls_base in cls.__bases__: + bl_rna_base = getattr(cls_base, "bl_rna", None) + if not bl_rna_base: + continue + bl_rna_base_props |= set(bl_rna_base.properties.values()) props = sorted(bl_rna.properties, key=lambda p: p.identifier) for prop in props: # Only write this property if our parent hasn't got it. if prop in bl_rna_base_props: continue - if prop.identifier == "rna_type": + if prop.identifier in {"rna_type", "bl_icon", "icon"}: continue reports["rna_props"].append((cls, prop)) msgsrc = "bpy.types.{}.{}".format(bl_rna.identifier, prop.identifier) msgctxt = prop.translation_context or default_context - if prop.name and (prop.name != prop.identifier or msgctxt != default_context): + if prop.name and prop_name_validate(cls, prop.name, prop.identifier): process_msg(msgs, msgctxt, prop.name, msgsrc, reports, check_ctxt_rna, settings) if prop.description: process_msg(msgs, default_context, prop.description, msgsrc, reports, check_ctxt_rna_tip, settings) @@ -282,7 +305,7 @@ def dump_rna_messages(msgs, reports, settings, verbose=False): for item in prop.enum_items: msgsrc = "bpy.types.{}.{}:'{}'".format(bl_rna.identifier, prop.identifier, item.identifier) done_items.add(item.identifier) - if item.name and item.name != item.identifier: + if item.name and prop_name_validate(cls, item.name, item.identifier): process_msg(msgs, msgctxt, item.name, msgsrc, reports, check_ctxt_rna, settings) if item.description: process_msg(msgs, default_context, item.description, msgsrc, reports, check_ctxt_rna_tip, @@ -292,7 +315,7 @@ def dump_rna_messages(msgs, reports, settings, verbose=False): continue msgsrc = "bpy.types.{}.{}:'{}'".format(bl_rna.identifier, prop.identifier, item.identifier) done_items.add(item.identifier) - if item.name and item.name != item.identifier: + if item.name and prop_name_validate(cls, item.name, item.identifier): process_msg(msgs, msgctxt, item.name, msgsrc, reports, check_ctxt_rna, settings) if item.description: process_msg(msgs, default_context, item.description, msgsrc, reports, check_ctxt_rna_tip, @@ -854,7 +877,7 @@ def dump_messages(do_messages, do_checks, settings): addons = utils.enable_addons(support={"OFFICIAL"}) # Note this is not needed if we have been started with factory settings, but just in case... # XXX This is not working well, spent a whole day trying to understand *why* we still have references of - # those removed calsses in things like `bpy.types.OperatorProperties.__subclasses__()` + # those removed classes in things like `bpy.types.OperatorProperties.__subclasses__()` # (could not even reproduce it from regular py console in Blender with UI...). # For some reasons, cleanup does not happen properly, *and* we have no way to tell which class is valid # and which has been unregistered. So for now, just go for the dirty, easy way: do not disable add-ons. :( diff --git a/release/scripts/modules/bl_i18n_utils/settings.py b/release/scripts/modules/bl_i18n_utils/settings.py index 57aeef895b9..ac932fe38dc 100644 --- a/release/scripts/modules/bl_i18n_utils/settings.py +++ b/release/scripts/modules/bl_i18n_utils/settings.py @@ -264,7 +264,7 @@ PYGETTEXT_KEYWORDS = (() + for it in ("BMO_error_raise",)) + tuple(("{}\\((?:[^\"',]+,)\\s*" + _msg_re + r"\s*(?:\)|,)").format(it) - for it in ("modifier_setError",)) + + for it in ("BKE_modifier_set_error",)) + tuple((r"{}\(\s*" + _msg_re + r"\s*,\s*(?:" + r"\s*,\s*)?(?:".join(_ctxt_re_gen(i) for i in range(PYGETTEXT_MAX_MULTI_CTXT)) + r")?\s*\)").format(it) diff --git a/release/scripts/modules/bl_i18n_utils/utils.py b/release/scripts/modules/bl_i18n_utils/utils.py index 13fb87d386a..e13eb15dfd2 100644 --- a/release/scripts/modules/bl_i18n_utils/utils.py +++ b/release/scripts/modules/bl_i18n_utils/utils.py @@ -778,7 +778,7 @@ class I18nMessages: try: import bpy except ModuleNotFoundError: - print("Could not import bpy, find_best_messages_matches must be run from whithin Blender.") + print("Could not import bpy, find_best_messages_matches must be run from within Blender.") return # Build helper mappings. diff --git a/release/scripts/modules/bl_i18n_utils/utils_spell_check.py b/release/scripts/modules/bl_i18n_utils/utils_spell_check.py index 6baf5129dd7..62186655326 100644 --- a/release/scripts/modules/bl_i18n_utils/utils_spell_check.py +++ b/release/scripts/modules/bl_i18n_utils/utils_spell_check.py @@ -689,11 +689,13 @@ class SpellChecker: "ctrl", "cw", "ccw", "dev", + "dls", "djv", "dpi", "dvar", "dx", "eo", + "ewa", "fh", "fk", "fov", @@ -733,6 +735,7 @@ class SpellChecker: "rhs", "rv", "sdl", + "sdls", "sl", "smpte", "ssao", @@ -767,6 +770,7 @@ class SpellChecker: "svbvh", # Files types/formats + "aac", "avi", "attrac", "autocad", @@ -789,6 +793,7 @@ class SpellChecker: "ico", "jpg", "jpeg", "jpegs", "json", + "lzw", "matroska", "mdd", "mkv", @@ -798,6 +803,7 @@ class SpellChecker: "openjpeg", "osl", "oso", + "pcm", "piz", "png", "pngs", "po", diff --git a/release/scripts/modules/bpy/utils/__init__.py b/release/scripts/modules/bpy/utils/__init__.py index 3f0248970c6..b009c38edb4 100644 --- a/release/scripts/modules/bpy/utils/__init__.py +++ b/release/scripts/modules/bpy/utils/__init__.py @@ -26,6 +26,7 @@ not associated with blenders internal data. __all__ = ( "blend_paths", "escape_identifier", + "flip_name", "unescape_identifier", "keyconfig_init", "keyconfig_set", @@ -61,6 +62,7 @@ from _bpy import ( _utils_units as units, blend_paths, escape_identifier, + flip_name, unescape_identifier, register_class, resource_path, @@ -106,7 +108,7 @@ def execfile(filepath, *, mod=None): mod_orig = modules.get(mod_name, None) modules[mod_name] = mod - # No error supression, just ensure `sys.modules[mod_name]` is properly restored in the case of an error. + # No error suppression, just ensure `sys.modules[mod_name]` is properly restored in the case of an error. try: mod_spec.loader.exec_module(mod) finally: diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index 26efb6e3307..b477f624b7b 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -720,7 +720,7 @@ class Gizmo(StructRNA): # Dummy class to keep the reference in `bpy_types_dict` and avoid -# erros like: "TypeError: expected GizmoGroup subclass of class ..." +# errors like: "TypeError: expected GizmoGroup subclass of class ..." class GizmoGroup(StructRNA): __slots__ = () diff --git a/release/scripts/modules/rna_manual_reference.py b/release/scripts/modules/rna_manual_reference.py index 797eb2627b3..33ce674c672 100644 --- a/release/scripts/modules/rna_manual_reference.py +++ b/release/scripts/modules/rna_manual_reference.py @@ -60,10 +60,12 @@ url_manual_mapping = ( ("bpy.types.fluiddomainsettings.sndparticle_sampling_wavecrest*", "physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-sndparticle-sampling-wavecrest"), ("bpy.types.rigidbodyconstraint.use_override_solver_iterations*", "physics/rigid_body/constraints/introduction.html#bpy-types-rigidbodyconstraint-use-override-solver-iterations"), ("bpy.types.toolsettings.use_transform_correct_face_attributes*", "modeling/meshes/tools/tool_settings.html#bpy-types-toolsettings-use-transform-correct-face-attributes"), + ("bpy.types.cyclesrendersettings.adaptive_scrambling_distance*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-adaptive-scrambling-distance"), ("bpy.types.cyclesrendersettings.preview_adaptive_min_samples*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-preview-adaptive-min-samples"), ("bpy.types.rendersettings.use_sequencer_override_scene_strip*", "video_editing/preview/sidebar.html#bpy-types-rendersettings-use-sequencer-override-scene-strip"), ("bpy.types.toolsettings.use_transform_correct_keep_connected*", "modeling/meshes/tools/tool_settings.html#bpy-types-toolsettings-use-transform-correct-keep-connected"), ("bpy.types.cyclesrendersettings.preview_denoising_prefilter*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-preview-denoising-prefilter"), + ("bpy.types.cyclesrendersettings.preview_scrambling_distance*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-preview-scrambling-distance"), ("bpy.types.fluiddomainsettings.sndparticle_potential_radius*", "physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-sndparticle-potential-radius"), ("bpy.types.cyclesrendersettings.film_transparent_roughness*", "render/cycles/render_settings/film.html#bpy-types-cyclesrendersettings-film-transparent-roughness"), ("bpy.types.cyclesrendersettings.preview_adaptive_threshold*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-preview-adaptive-threshold"), @@ -156,9 +158,11 @@ url_manual_mapping = ( ("bpy.types.brushgpencilsettings.fill_simplify_level*", "grease_pencil/modes/draw/tools/fill.html#bpy-types-brushgpencilsettings-fill-simplify-level"), ("bpy.types.brushgpencilsettings.use_jitter_pressure*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-use-jitter-pressure"), ("bpy.types.brushgpencilsettings.use_settings_random*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-use-settings-random"), + ("bpy.types.colormanagedinputcolorspacesettings.name*", "editors/image/image_settings.html#bpy-types-colormanagedinputcolorspacesettings-name"), ("bpy.types.cyclesrendersettings.denoising_prefilter*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-denoising-prefilter"), ("bpy.types.cyclesrendersettings.preview_dicing_rate*", "render/cycles/render_settings/subdivision.html#bpy-types-cyclesrendersettings-preview-dicing-rate"), ("bpy.types.cyclesrendersettings.sample_clamp_direct*", "render/cycles/render_settings/light_paths.html#bpy-types-cyclesrendersettings-sample-clamp-direct"), + ("bpy.types.cyclesrendersettings.scrambling_distance*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-scrambling-distance"), ("bpy.types.cyclesworldsettings.volume_interpolation*", "render/cycles/world_settings.html#bpy-types-cyclesworldsettings-volume-interpolation"), ("bpy.types.fluiddomainsettings.mesh_particle_radius*", "physics/fluid/type/domain/liquid/mesh.html#bpy-types-fluiddomainsettings-mesh-particle-radius"), ("bpy.types.fluiddomainsettings.sndparticle_boundary*", "physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-sndparticle-boundary"), @@ -173,6 +177,7 @@ url_manual_mapping = ( ("bpy.types.spacespreadsheet.geometry_component_type*", "editors/spreadsheet.html#bpy-types-spacespreadsheet-geometry-component-type"), ("bpy.types.toolsettings.use_gpencil_weight_data_add*", "grease_pencil/modes/draw/introduction.html#bpy-types-toolsettings-use-gpencil-weight-data-add"), ("bpy.types.view3doverlay.texture_paint_mode_opacity*", "editors/3dview/display/overlays.html#bpy-types-view3doverlay-texture-paint-mode-opacity"), + ("bpy.ops.mesh.customdata_custom_splitnormals_clear*", "modeling/meshes/properties/custom_data.html#bpy-ops-mesh-customdata-custom-splitnormals-clear"), ("bpy.types.bakesettings.use_pass_ambient_occlusion*", "render/cycles/baking.html#bpy-types-bakesettings-use-pass-ambient-occlusion"), ("bpy.types.brush.surface_smooth_shape_preservation*", "sculpt_paint/sculpting/tools/smooth.html#bpy-types-brush-surface-smooth-shape-preservation"), ("bpy.types.brush.use_cloth_pin_simulation_boundary*", "sculpt_paint/sculpting/tools/cloth.html#bpy-types-brush-use-cloth-pin-simulation-boundary"), @@ -210,6 +215,7 @@ url_manual_mapping = ( ("bpy.types.toolsettings.use_proportional_connected*", "editors/3dview/controls/proportional_editing.html#bpy-types-toolsettings-use-proportional-connected"), ("bpy.types.toolsettings.use_proportional_projected*", "editors/3dview/controls/proportional_editing.html#bpy-types-toolsettings-use-proportional-projected"), ("bpy.types.view3doverlay.vertex_paint_mode_opacity*", "editors/3dview/display/overlays.html#bpy-types-view3doverlay-vertex-paint-mode-opacity"), + ("bpy.types.viewlayer.use_pass_cryptomatte_accurate*", "render/layers/passes.html#bpy-types-viewlayer-use-pass-cryptomatte-accurate"), ("bpy.types.viewlayer.use_pass_cryptomatte_material*", "render/layers/passes.html#bpy-types-viewlayer-use-pass-cryptomatte-material"), ("bpy.ops.gpencil.vertex_color_brightness_contrast*", "grease_pencil/modes/vertex_paint/editing.html#bpy-ops-gpencil-vertex-color-brightness-contrast"), ("bpy.ops.view3d.edit_mesh_extrude_individual_move*", "modeling/meshes/editing/face/extrude_faces.html#bpy-ops-view3d-edit-mesh-extrude-individual-move"), @@ -255,6 +261,7 @@ url_manual_mapping = ( ("bpy.types.toolsettings.use_snap_backface_culling*", "editors/3dview/controls/snapping.html#bpy-types-toolsettings-use-snap-backface-culling"), ("bpy.types.toolsettings.use_transform_data_origin*", "scene_layout/object/tools/tool_settings.html#bpy-types-toolsettings-use-transform-data-origin"), ("bpy.types.view3doverlay.sculpt_mode_mask_opacity*", "sculpt_paint/sculpting/editing/mask.html#bpy-types-view3doverlay-sculpt-mode-mask-opacity"), + ("bpy.ops.mesh.customdata_custom_splitnormals_add*", "modeling/meshes/properties/custom_data.html#bpy-ops-mesh-customdata-custom-splitnormals-add"), ("bpy.ops.outliner.collection_indirect_only_clear*", "render/layers/introduction.html#bpy-ops-outliner-collection-indirect-only-clear"), ("bpy.types.cyclesrendersettings.max_subdivisions*", "render/cycles/render_settings/subdivision.html#bpy-types-cyclesrendersettings-max-subdivisions"), ("bpy.types.cyclesrendersettings.preview_denoiser*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-preview-denoiser"), @@ -278,6 +285,7 @@ url_manual_mapping = ( ("bpy.types.freestylelineset.select_by_collection*", "render/freestyle/view_layer/line_set.html#bpy-types-freestylelineset-select-by-collection"), ("bpy.types.freestylelineset.select_by_edge_types*", "render/freestyle/view_layer/line_set.html#bpy-types-freestylelineset-select-by-edge-types"), ("bpy.types.freestylelineset.select_by_face_marks*", "render/freestyle/view_layer/line_set.html#bpy-types-freestylelineset-select-by-face-marks"), + ("bpy.types.geometrynodeinputcurvehandlepositions*", "modeling/geometry_nodes/curve/curve_handle_position.html#bpy-types-geometrynodeinputcurvehandlepositions"), ("bpy.types.linestyle*modifier_distancefromcamera*", "render/freestyle/view_layer/line_style/modifiers/color/distance_from_camera.html#bpy-types-linestyle-modifier-distancefromcamera"), ("bpy.types.linestyle*modifier_distancefromobject*", "render/freestyle/view_layer/line_style/modifiers/color/distance_from_object.html#bpy-types-linestyle-modifier-distancefromobject"), ("bpy.types.linestylegeometrymodifier_2dtransform*", "render/freestyle/view_layer/line_style/modifiers/geometry/2d_transform.html#bpy-types-linestylegeometrymodifier-2dtransform"), @@ -315,6 +323,7 @@ url_manual_mapping = ( ("bpy.types.freestylelinestyle.material_boundary*", "render/freestyle/view_layer/line_style/strokes.html#bpy-types-freestylelinestyle-material-boundary"), ("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.greasepencil.curve_edit_corner_angle*", "grease_pencil/modes/edit/curve_editing.html#bpy-types-greasepencil-curve-edit-corner-angle"), ("bpy.types.linestylegeometrymodifier_tipremover*", "render/freestyle/view_layer/line_style/modifiers/geometry/tip_remover.html#bpy-types-linestylegeometrymodifier-tipremover"), ("bpy.types.movieclipuser.use_render_undistorted*", "editors/clip/display/clip_display.html#bpy-types-movieclipuser-use-render-undistorted"), @@ -360,6 +369,8 @@ url_manual_mapping = ( ("bpy.types.freestylelineset.face_mark_negation*", "render/freestyle/view_layer/line_set.html#bpy-types-freestylelineset-face-mark-negation"), ("bpy.types.freestylelinestyle.integration_type*", "render/freestyle/view_layer/line_style/strokes.html#bpy-types-freestylelinestyle-integration-type"), ("bpy.types.freestylelinestyle.use_split_length*", "render/freestyle/view_layer/line_style/strokes.html#bpy-types-freestylelinestyle-use-split-length"), + ("bpy.types.geometrynodedistributepointsonfaces*", "modeling/geometry_nodes/point/distribute_points_on_faces.html#bpy-types-geometrynodedistributepointsonfaces"), + ("bpy.types.geometrynodesetcurvehandlepositions*", "modeling/geometry_nodes/curve/set_handle_positions.html#bpy-types-geometrynodesetcurvehandlepositions"), ("bpy.types.linestylegeometrymodifier_blueprint*", "render/freestyle/view_layer/line_style/modifiers/geometry/blueprint.html#bpy-types-linestylegeometrymodifier-blueprint"), ("bpy.types.materialgpencilstyle.alignment_mode*", "grease_pencil/materials/properties.html#bpy-types-materialgpencilstyle-alignment-mode"), ("bpy.types.particlesettings.use_modifier_stack*", "physics/particles/emitter/emission.html#bpy-types-particlesettings-use-modifier-stack"), @@ -374,6 +385,7 @@ url_manual_mapping = ( ("bpy.types.spacespreadsheetrowfilter.threshold*", "editors/spreadsheet.html#bpy-types-spacespreadsheetrowfilter-threshold"), ("bpy.types.toolsettings.use_snap_grid_absolute*", "editors/3dview/controls/snapping.html#bpy-types-toolsettings-use-snap-grid-absolute"), ("bpy.types.view3doverlay.show_face_orientation*", "editors/3dview/display/overlays.html#bpy-types-view3doverlay-show-face-orientation"), + ("bpy.ops.gpencil.bake_grease_pencil_animation*", "grease_pencil/animation/tools.html#bpy-ops-gpencil-bake-grease-pencil-animation"), ("bpy.ops.object.blenderkit_material_thumbnail*", "addons/3d_view/blenderkit.html#bpy-ops-object-blenderkit-material-thumbnail"), ("bpy.ops.object.multires_higher_levels_delete*", "modeling/modifiers/generate/multiresolution.html#bpy-ops-object-multires-higher-levels-delete"), ("bpy.ops.object.vertex_group_copy_to_selected*", "modeling/meshes/properties/vertex_groups/vertex_groups.html#bpy-ops-object-vertex-group-copy-to-selected"), @@ -408,7 +420,7 @@ url_manual_mapping = ( ("bpy.types.freestylelinestyle.use_chain_count*", "render/freestyle/view_layer/line_style/strokes.html#bpy-types-freestylelinestyle-use-chain-count"), ("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.geometrynodeattributesampletexture*", "modeling/geometry_nodes/attribute/attribute_sample_texture.html#bpy-types-geometrynodeattributesampletexture"), + ("bpy.types.functionnodeinputspecialcharacters*", "modeling/geometry_nodes/text/special_characters.html#bpy-types-functionnodeinputspecialcharacters"), ("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"), @@ -417,6 +429,7 @@ url_manual_mapping = ( ("bpy.types.rendersettings.line_thickness_mode*", "render/freestyle/render.html#bpy-types-rendersettings-line-thickness-mode"), ("bpy.types.rendersettings.motion_blur_shutter*", "render/cycles/render_settings/motion_blur.html#bpy-types-rendersettings-motion-blur-shutter"), ("bpy.types.rendersettings.use_persistent_data*", "render/cycles/render_settings/performance.html#bpy-types-rendersettings-use-persistent-data"), + ("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.spaceoutliner.show_restrict_column*", "editors/outliner/interface.html#bpy-types-spaceoutliner-show-restrict-column"), @@ -443,8 +456,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.geometrynodealignrotationtovector*", "modeling/geometry_nodes/point/align_rotation_to_vector.html#bpy-types-geometrynodealignrotationtovector"), - ("bpy.types.geometrynodeattributevectorrotate*", "modeling/geometry_nodes/attribute/attribute_vector_rotate.html#bpy-types-geometrynodeattributevectorrotate"), + ("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"), ("bpy.types.objectlineart.use_crease_override*", "scene_layout/object/properties/line_art.html#bpy-types-objectlineart-use-crease-override"), @@ -501,6 +513,7 @@ url_manual_mapping = ( ("bpy.types.freestylesettings.use_smoothness*", "render/freestyle/view_layer/freestyle.html#bpy-types-freestylesettings-use-smoothness"), ("bpy.types.geometrynodecurvequadraticbezier*", "modeling/geometry_nodes/curve_primitives/quadratic_bezier.html#bpy-types-geometrynodecurvequadraticbezier"), ("bpy.types.materialgpencilstyle.show_stroke*", "grease_pencil/materials/properties.html#bpy-types-materialgpencilstyle-show-stroke"), + ("bpy.types.mesh.use_customdata_vertex_bevel*", "modeling/meshes/properties/custom_data.html#bpy-types-mesh-use-customdata-vertex-bevel"), ("bpy.types.movietrackingcamera.focal_length*", "movie_clip/tracking/clip/sidebar/track/camera.html#bpy-types-movietrackingcamera-focal-length"), ("bpy.types.movietrackingcamera.pixel_aspect*", "movie_clip/tracking/clip/sidebar/track/camera.html#bpy-types-movietrackingcamera-pixel-aspect"), ("bpy.types.movietrackingcamera.sensor_width*", "movie_clip/tracking/clip/sidebar/track/camera.html#bpy-types-movietrackingcamera-sensor-width"), @@ -546,7 +559,7 @@ url_manual_mapping = ( ("bpy.types.freestylelinestyle.split_length*", "render/freestyle/view_layer/line_style/strokes.html#bpy-types-freestylelinestyle-split-length"), ("bpy.types.freestylelinestyle.use_chaining*", "render/freestyle/view_layer/line_style/strokes.html#bpy-types-freestylelinestyle-use-chaining"), ("bpy.types.freestylesettings.sphere_radius*", "render/freestyle/view_layer/freestyle.html#bpy-types-freestylesettings-sphere-radius"), - ("bpy.types.geometrynodeattributevectormath*", "modeling/geometry_nodes/attribute/attribute_vector_math.html#bpy-types-geometrynodeattributevectormath"), + ("bpy.types.geometrynodesetsplineresolution*", "modeling/geometry_nodes/curve/set_spline_resolution.html#bpy-types-geometrynodesetsplineresolution"), ("bpy.types.gpencillayer.annotation_opacity*", "interface/annotate_tool.html#bpy-types-gpencillayer-annotation-opacity"), ("bpy.types.gpencillayer.use_onion_skinning*", "grease_pencil/properties/layers.html#bpy-types-gpencillayer-use-onion-skinning"), ("bpy.types.gpencilsculptguide.use_snapping*", "grease_pencil/modes/draw/guides.html#bpy-types-gpencilsculptguide-use-snapping"), @@ -558,6 +571,7 @@ url_manual_mapping = ( ("bpy.types.materialgpencilstyle.fill_style*", "grease_pencil/materials/properties.html#bpy-types-materialgpencilstyle-fill-style"), ("bpy.types.materialgpencilstyle.mix_factor*", "grease_pencil/materials/properties.html#bpy-types-materialgpencilstyle-mix-factor"), ("bpy.types.materialgpencilstyle.pass_index*", "grease_pencil/materials/properties.html#bpy-types-materialgpencilstyle-pass-index"), + ("bpy.types.mesh.use_customdata_edge_crease*", "modeling/meshes/properties/custom_data.html#bpy-types-mesh-use-customdata-edge-crease"), ("bpy.types.nodesocketinterface.description*", "interface/controls/nodes/groups.html#bpy-types-nodesocketinterface-description"), ("bpy.types.rendersettings.dither_intensity*", "render/output/properties/post_processing.html#bpy-types-rendersettings-dither-intensity"), ("bpy.types.rendersettings.film_transparent*", "render/cycles/render_settings/film.html#bpy-types-rendersettings-film-transparent"), @@ -613,18 +627,20 @@ url_manual_mapping = ( ("bpy.types.freestylelinestyle.chain_count*", "render/freestyle/view_layer/line_style/strokes.html#bpy-types-freestylelinestyle-chain-count"), ("bpy.types.freestylelinestyle.use_sorting*", "render/freestyle/view_layer/line_style/strokes.html#bpy-types-freestylelinestyle-use-sorting"), ("bpy.types.freestylesettings.crease_angle*", "render/freestyle/view_layer/freestyle.html#bpy-types-freestylesettings-crease-angle"), - ("bpy.types.geometrynodeattributecolorramp*", "modeling/geometry_nodes/attribute/attribute_color_ramp.html#bpy-types-geometrynodeattributecolorramp"), - ("bpy.types.geometrynodeattributeproximity*", "modeling/geometry_nodes/attribute/attribute_proximity.html#bpy-types-geometrynodeattributeproximity"), - ("bpy.types.geometrynodeattributerandomize*", "modeling/geometry_nodes/attribute/attribute_randomize.html#bpy-types-geometrynodeattributerandomize"), + ("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.geometrynodeinputmaterialindex*", "modeling/geometry_nodes/material/material_index.html#bpy-types-geometrynodeinputmaterialindex"), ("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"), ("bpy.types.imageformatsettings.color_mode*", "render/output/properties/output.html#bpy-types-imageformatsettings-color-mode"), ("bpy.types.linestyle*modifier_alongstroke*", "render/freestyle/view_layer/line_style/modifiers/color/along_stroke.html#bpy-types-linestyle-modifier-alongstroke"), ("bpy.types.linestyle*modifier_creaseangle*", "render/freestyle/view_layer/line_style/modifiers/color/crease_angle.html#bpy-types-linestyle-modifier-creaseangle"), ("bpy.types.linestylecolormodifier_tangent*", "render/freestyle/view_layer/line_style/modifiers/color/tangent.html#bpy-types-linestylecolormodifier-tangent"), ("bpy.types.materialgpencilstyle.mix_color*", "grease_pencil/materials/properties.html#bpy-types-materialgpencilstyle-mix-color"), ("bpy.types.materialgpencilstyle.show_fill*", "grease_pencil/materials/properties.html#bpy-types-materialgpencilstyle-show-fill"), + ("bpy.types.mesh.use_customdata_edge_bevel*", "modeling/meshes/properties/custom_data.html#bpy-types-mesh-use-customdata-edge-bevel"), ("bpy.types.mesh.use_mirror_vertex_group_x*", "sculpt_paint/weight_paint/tool_settings/symmetry.html#bpy-types-mesh-use-mirror-vertex-group-x"), ("bpy.types.movietrackingcamera.division_k*", "movie_clip/tracking/clip/sidebar/track/camera.html#bpy-types-movietrackingcamera-division-k"), ("bpy.types.movietrackingobject.keyframe_a*", "movie_clip/tracking/clip/toolbar/solve.html#bpy-types-movietrackingobject-keyframe-a"), @@ -685,9 +701,11 @@ url_manual_mapping = ( ("bpy.types.freestylelinestyle.sort_order*", "render/freestyle/view_layer/line_style/strokes.html#bpy-types-freestylelinestyle-sort-order"), ("bpy.types.freestylelinestyle.split_dash*", "render/freestyle/view_layer/line_style/strokes.html#bpy-types-freestylelinestyle-split-dash"), ("bpy.types.freestylesettings.use_culling*", "render/freestyle/view_layer/freestyle.html#bpy-types-freestylesettings-use-culling"), - ("bpy.types.geometrynodeattributecurvemap*", "modeling/geometry_nodes/attribute/attribute_curve_map.html#bpy-types-geometrynodeattributecurvemap"), - ("bpy.types.geometrynodeattributemaprange*", "modeling/geometry_nodes/attribute/attribute_map_range.html#bpy-types-geometrynodeattributemaprange"), - ("bpy.types.geometrynodeattributetransfer*", "modeling/geometry_nodes/attribute/attribute_transfer.html#bpy-types-geometrynodeattributetransfer"), + ("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.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"), ("bpy.types.layercollection.hide_viewport*", "editors/outliner/interface.html#bpy-types-layercollection-hide-viewport"), ("bpy.types.layercollection.indirect_only*", "editors/outliner/interface.html#bpy-types-layercollection-indirect-only"), ("bpy.types.material.use_sss_translucency*", "render/eevee/materials/settings.html#bpy-types-material-use-sss-translucency"), @@ -740,9 +758,12 @@ url_manual_mapping = ( ("bpy.types.freestylelinestyle.angle_min*", "render/freestyle/view_layer/line_style/strokes.html#bpy-types-freestylelinestyle-angle-min"), ("bpy.types.freestylelinestyle.split_gap*", "render/freestyle/view_layer/line_style/strokes.html#bpy-types-freestylelinestyle-split-gap"), ("bpy.types.freestylelinestyle.use_nodes*", "render/freestyle/view_layer/line_style/texture.html#bpy-types-freestylelinestyle-use-nodes"), - ("bpy.types.geometrynodeattributecompare*", "modeling/geometry_nodes/attribute/attribute_compare.html#bpy-types-geometrynodeattributecompare"), - ("bpy.types.geometrynodeattributeconvert*", "modeling/geometry_nodes/attribute/attribute_convert.html#bpy-types-geometrynodeattributeconvert"), - ("bpy.types.geometrynodeselectbymaterial*", "modeling/geometry_nodes/material/select_by_material.html#bpy-types-geometrynodeselectbymaterial"), + ("bpy.types.geometrynodecaptureattribute*", "modeling/geometry_nodes/attribute/capture_attribute.html#bpy-types-geometrynodecaptureattribute"), + ("bpy.types.geometrynodeinstanceonpoints*", "modeling/geometry_nodes/instances/instance_on_points.html#bpy-types-geometrynodeinstanceonpoints"), + ("bpy.types.geometrynodepointstovertices*", "modeling/geometry_nodes/point/points_to_vertices.html#bpy-types-geometrynodepointstovertices"), + ("bpy.types.geometrynoderealizeinstances*", "modeling/geometry_nodes/instances/realize_instances.html#bpy-types-geometrynoderealizeinstances"), + ("bpy.types.geometrynodeseparategeometry*", "modeling/geometry_nodes/geometry/separate_geometry.html#bpy-types-geometrynodeseparategeometry"), + ("bpy.types.geometrynodesetmaterialindex*", "modeling/geometry_nodes/material/set_material_index.html#bpy-types-geometrynodesetmaterialindex"), ("bpy.types.material.preview_render_type*", "render/materials/preview.html#bpy-types-material-preview-render-type"), ("bpy.types.materialgpencilstyle.pattern*", "grease_pencil/materials/properties.html#bpy-types-materialgpencilstyle-pattern"), ("bpy.types.materialgpencilstyle.texture*", "grease_pencil/materials/properties.html#bpy-types-materialgpencilstyle-texture"), @@ -804,9 +825,11 @@ 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.geometrynodeattributeremove*", "modeling/geometry_nodes/attribute/attribute_remove.html#bpy-types-geometrynodeattributeremove"), - ("bpy.types.geometrynodematerialreplace*", "modeling/geometry_nodes/material/replace.html#bpy-types-geometrynodematerialreplace"), - ("bpy.types.geometrynodepointdistribute*", "modeling/geometry_nodes/point/point_distribute.html#bpy-types-geometrynodepointdistribute"), + ("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.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.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"), @@ -871,14 +894,17 @@ url_manual_mapping = ( ("bpy.types.fileselectparams.directory*", "editors/file_browser.html#bpy-types-fileselectparams-directory"), ("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.geometrynodeattributeclamp*", "modeling/geometry_nodes/attribute/attribute_clamp.html#bpy-types-geometrynodeattributeclamp"), ("bpy.types.geometrynodecollectioninfo*", "modeling/geometry_nodes/input/collection_info.html#bpy-types-geometrynodecollectioninfo"), - ("bpy.types.geometrynodecurveendpoints*", "modeling/geometry_nodes/curve/curve_endpoints.html#bpy-types-geometrynodecurveendpoints"), - ("bpy.types.geometrynodecurvesubdivide*", "modeling/geometry_nodes/curve/curve_subdivide.html#bpy-types-geometrynodecurvesubdivide"), + ("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.geometrynodematerialassign*", "modeling/geometry_nodes/material/assign.html#bpy-types-geometrynodematerialassign"), - ("bpy.types.geometrynodepointstovolume*", "modeling/geometry_nodes/volume/points_to_volume.html#bpy-types-geometrynodepointstovolume"), - ("bpy.types.geometrynodepointtranslate*", "modeling/geometry_nodes/point/point_translate.html#bpy-types-geometrynodepointtranslate"), + ("bpy.types.geometrynodeinputcurvetilt*", "modeling/geometry_nodes/curve/curve_tilt.html#bpy-types-geometrynodeinputcurvetilt"), + ("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"), + ("bpy.types.geometrynodesetpointradius*", "modeling/geometry_nodes/point/set_point_radius.html#bpy-types-geometrynodesetpointradius"), + ("bpy.types.geometrynodesetshadesmooth*", "modeling/geometry_nodes/mesh/set_shade_smooth.html#bpy-types-geometrynodesetshadesmooth"), + ("bpy.types.geometrynodestringtocurves*", "modeling/geometry_nodes/text/string_to_curves.html#bpy-types-geometrynodestringtocurves"), + ("bpy.types.geometrynodesubdividecurve*", "modeling/geometry_nodes/curve/subdivide_curve.html#bpy-types-geometrynodesubdividecurve"), ("bpy.types.greasepencil.use_multiedit*", "grease_pencil/multiframe.html#bpy-types-greasepencil-use-multiedit"), ("bpy.types.keyframe.handle_right_type*", "editors/graph_editor/fcurves/properties.html#bpy-types-keyframe-handle-right-type"), ("bpy.types.materialgpencilstyle.color*", "grease_pencil/materials/properties.html#bpy-types-materialgpencilstyle-color"), @@ -947,15 +973,16 @@ 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.geometrynodeattributefill*", "modeling/geometry_nodes/attribute/attribute_fill.html#bpy-types-geometrynodeattributefill"), - ("bpy.types.geometrynodeattributemath*", "modeling/geometry_nodes/attribute/attribute_math.html#bpy-types-geometrynodeattributemath"), + ("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"), + ("bpy.types.geometrynodeisshadesmooth*", "modeling/geometry_nodes/mesh/is_shade_smooth.html#bpy-types-geometrynodeisshadesmooth"), ("bpy.types.geometrynodemeshicosphere*", "modeling/geometry_nodes/mesh_primitives/icosphere.html#bpy-types-geometrynodemeshicosphere"), - ("bpy.types.geometrynodemeshsubdivide*", "modeling/geometry_nodes/mesh/subdivide.html#bpy-types-geometrynodemeshsubdivide"), - ("bpy.types.geometrynodepointinstance*", "modeling/geometry_nodes/point/point_instance.html#bpy-types-geometrynodepointinstance"), - ("bpy.types.geometrynodepointseparate*", "modeling/geometry_nodes/point/point_separate.html#bpy-types-geometrynodepointseparate"), + ("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.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"), ("bpy.types.light.use_custom_distance*", "render/eevee/lighting.html#bpy-types-light-use-custom-distance"), ("bpy.types.materialgpencilstyle.flip*", "grease_pencil/materials/properties.html#bpy-types-materialgpencilstyle-flip"), @@ -988,7 +1015,8 @@ url_manual_mapping = ( ("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"), ("bpy.ops.clip.lock_selection_toggle*", "editors/clip/introduction.html#bpy-ops-clip-lock-selection-toggle"), - ("bpy.ops.mesh.customdata_mask_clear*", "sculpt_paint/sculpting/editing/mask.html#bpy-ops-mesh-customdata-mask-clear"), + ("bpy.ops.mesh.customdata_mask_clear*", "modeling/meshes/properties/custom_data.html#bpy-ops-mesh-customdata-mask-clear"), + ("bpy.ops.mesh.customdata_skin_clear*", "modeling/meshes/properties/custom_data.html#bpy-ops-mesh-customdata-skin-clear"), ("bpy.ops.mesh.extrude_vertices_move*", "modeling/meshes/editing/vertex/extrude_vertices.html#bpy-ops-mesh-extrude-vertices-move"), ("bpy.ops.mesh.mod_weighted_strength*", "modeling/meshes/editing/mesh/normals.html#bpy-ops-mesh-mod-weighted-strength"), ("bpy.ops.mesh.quads_convert_to_tris*", "modeling/meshes/editing/face/triangulate_faces.html#bpy-ops-mesh-quads-convert-to-tris"), @@ -1035,14 +1063,18 @@ 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.functionnodefloatcompare*", "modeling/geometry_nodes/utilities/float_compare.html#bpy-types-functionnodefloatcompare"), - ("bpy.types.geometrynodeattributemix*", "modeling/geometry_nodes/attribute/attribute_mix.html#bpy-types-geometrynodeattributemix"), - ("bpy.types.geometrynodecurvereverse*", "modeling/geometry_nodes/curve/curve_reverse.html#bpy-types-geometrynodecurvereverse"), + ("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"), + ("bpy.types.geometrynodemeshtopoints*", "modeling/geometry_nodes/mesh/mesh_to_points.html#bpy-types-geometrynodemeshtopoints"), ("bpy.types.geometrynodemeshuvsphere*", "modeling/geometry_nodes/mesh_primitives/uv_sphere.html#bpy-types-geometrynodemeshuvsphere"), + ("bpy.types.geometrynodereversecurve*", "modeling/geometry_nodes/curve/reverse_curve.html#bpy-types-geometrynodereversecurve"), + ("bpy.types.geometrynodesetcurvetilt*", "modeling/geometry_nodes/curve/set_curve_tilt.html#bpy-types-geometrynodesetcurvetilt"), + ("bpy.types.geometrynodesplinelength*", "modeling/geometry_nodes/curve/spline_length.html#bpy-types-geometrynodesplinelength"), + ("bpy.types.geometrynodestringlength*", "modeling/geometry_nodes/text/string_length.html#bpy-types-geometrynodestringlength"), ("bpy.types.geometrynodevolumetomesh*", "modeling/geometry_nodes/volume/volume_to_mesh.html#bpy-types-geometrynodevolumetomesh"), ("bpy.types.image.use_half_precision*", "editors/image/image_settings.html#bpy-types-image-use-half-precision"), + ("bpy.types.image.use_view_as_render*", "editors/image/image_settings.html#bpy-types-image-use-view-as-render"), ("bpy.types.imagepaint.interpolation*", "sculpt_paint/texture_paint/tool_settings/texture_slots.html#bpy-types-imagepaint-interpolation"), ("bpy.types.linestyle*modifier_noise*", "render/freestyle/view_layer/line_style/modifiers/color/noise.html#bpy-types-linestyle-modifier-noise"), ("bpy.types.maintainvolumeconstraint*", "animation/constraints/transform/maintain_volume.html#bpy-types-maintainvolumeconstraint"), @@ -1125,13 +1157,22 @@ url_manual_mapping = ( ("bpy.types.functionnodebooleanmath*", "modeling/geometry_nodes/utilities/boolean_math.html#bpy-types-functionnodebooleanmath"), ("bpy.types.functionnodeinputstring*", "modeling/geometry_nodes/input/string.html#bpy-types-functionnodeinputstring"), ("bpy.types.functionnodeinputvector*", "modeling/geometry_nodes/input/vector.html#bpy-types-functionnodeinputvector"), - ("bpy.types.functionnoderandomfloat*", "modeling/geometry_nodes/input/random_float.html#bpy-types-functionnoderandomfloat"), - ("bpy.types.geometrynodecurvecircle*", "modeling/geometry_nodes/curve_primitives/circle.html#bpy-types-geometrynodecurvecircle"), + ("bpy.types.geometrynodecurvecircle*", "modeling/geometry_nodes/curve_primitives/curve_circle.html#bpy-types-geometrynodecurvecircle"), ("bpy.types.geometrynodecurvelength*", "modeling/geometry_nodes/curve/curve_length.html#bpy-types-geometrynodecurvelength"), - ("bpy.types.geometrynodecurvespiral*", "modeling/geometry_nodes/curve_primitives/spiral.html#bpy-types-geometrynodecurvespiral"), + ("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.geometrynodemeshtocurve*", "modeling/geometry_nodes/curve/mesh_to_curve.html#bpy-types-geometrynodemeshtocurve"), - ("bpy.types.geometrynodepointrotate*", "modeling/geometry_nodes/point/point_rotate.html#bpy-types-geometrynodepointrotate"), + ("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"), + ("bpy.types.geometrynodejoinstrings*", "modeling/geometry_nodes/text/join_strings.html#bpy-types-geometrynodejoinstrings"), + ("bpy.types.geometrynodemeshboolean*", "modeling/geometry_nodes/mesh/mesh_boolean.html#bpy-types-geometrynodemeshboolean"), + ("bpy.types.geometrynodemeshtocurve*", "modeling/geometry_nodes/mesh/mesh_to_curve.html#bpy-types-geometrynodemeshtocurve"), + ("bpy.types.geometrynoderandomvalue*", "modeling/geometry_nodes/utilities/random_value.html#bpy-types-geometrynoderandomvalue"), + ("bpy.types.geometrynoderotateeuler*", "modeling/geometry_nodes/utilities/rotate_euler.html#bpy-types-geometrynoderotateeuler"), + ("bpy.types.geometrynodesamplecurve*", "modeling/geometry_nodes/curve/sample_curve.html#bpy-types-geometrynodesamplecurve"), + ("bpy.types.geometrynodesetmaterial*", "modeling/geometry_nodes/material/set_material.html#bpy-types-geometrynodesetmaterial"), + ("bpy.types.geometrynodesetposition*", "modeling/geometry_nodes/geometry/set_position.html#bpy-types-geometrynodesetposition"), + ("bpy.types.geometrynodeslicestring*", "modeling/geometry_nodes/text/slice_string.html#bpy-types-geometrynodeslicestring"), ("bpy.types.geometrynodetriangulate*", "modeling/geometry_nodes/mesh/triangulate.html#bpy-types-geometrynodetriangulate"), ("bpy.types.gpencillayer.blend_mode*", "grease_pencil/properties/layers.html#bpy-types-gpencillayer-blend-mode"), ("bpy.types.gpencillayer.use_lights*", "grease_pencil/properties/layers.html#bpy-types-gpencillayer-use-lights"), @@ -1172,6 +1213,7 @@ url_manual_mapping = ( ("bpy.ops.gpencil.vertex_color_set*", "grease_pencil/modes/vertex_paint/editing.html#bpy-ops-gpencil-vertex-color-set"), ("bpy.ops.graph.extrapolation_type*", "editors/graph_editor/channels.html#bpy-ops-graph-extrapolation-type"), ("bpy.ops.graph.interpolation_type*", "editors/graph_editor/fcurves/editing.html#bpy-ops-graph-interpolation-type"), + ("bpy.ops.mesh.customdata_skin_add*", "modeling/meshes/properties/custom_data.html#bpy-ops-mesh-customdata-skin-add"), ("bpy.ops.mesh.dissolve_degenerate*", "modeling/meshes/editing/mesh/cleanup.html#bpy-ops-mesh-dissolve-degenerate"), ("bpy.ops.mesh.face_split_by_edges*", "modeling/meshes/editing/face/weld_edges_faces.html#bpy-ops-mesh-face-split-by-edges"), ("bpy.ops.mesh.mark_freestyle_face*", "modeling/meshes/editing/face/face_data.html#bpy-ops-mesh-mark-freestyle-face"), @@ -1234,11 +1276,12 @@ 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.geometrynodefloattoint*", "modeling/geometry_nodes/utilities/float_to_int.html#bpy-types-geometrynodefloattoint"), + ("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"), ("bpy.types.geometrynodeisviewport*", "modeling/geometry_nodes/input/is_viewport.html#bpy-types-geometrynodeisviewport"), - ("bpy.types.geometrynodemeshcircle*", "modeling/geometry_nodes/mesh_primitives/circle.html#bpy-types-geometrynodemeshcircle"), + ("bpy.types.geometrynodemeshcircle*", "modeling/geometry_nodes/mesh_primitives/mesh_circle.html#bpy-types-geometrynodemeshcircle"), ("bpy.types.geometrynodeobjectinfo*", "modeling/geometry_nodes/input/object_info.html#bpy-types-geometrynodeobjectinfo"), - ("bpy.types.geometrynodepointscale*", "modeling/geometry_nodes/point/point_scale.html#bpy-types-geometrynodepointscale"), ("bpy.types.imagepaint.use_occlude*", "sculpt_paint/texture_paint/tool_settings/options.html#bpy-types-imagepaint-use-occlude"), ("bpy.types.imagesequence.use_flip*", "video_editing/sequencer/sidebar/strip.html#bpy-types-imagesequence-use-flip"), ("bpy.types.keyframe.interpolation*", "editors/graph_editor/fcurves/properties.html#bpy-types-keyframe-interpolation"), @@ -1347,11 +1390,12 @@ url_manual_mapping = ( ("bpy.types.fcurve.auto_smoothing*", "editors/graph_editor/fcurves/properties.html#bpy-types-fcurve-auto-smoothing"), ("bpy.types.fluideffectorsettings*", "physics/fluid/type/effector.html#bpy-types-fluideffectorsettings"), ("bpy.types.followtrackconstraint*", "animation/constraints/motion_tracking/follow_track.html#bpy-types-followtrackconstraint"), - ("bpy.types.geometrynodecurveline*", "modeling/geometry_nodes/curve_primitives/line.html#bpy-types-geometrynodecurveline"), + ("bpy.types.geometrynodecurveline*", "modeling/geometry_nodes/curve_primitives/curve_line.html#bpy-types-geometrynodecurveline"), ("bpy.types.geometrynodecurvestar*", "modeling/geometry_nodes/curve_primitives/star.html#bpy-types-geometrynodecurvestar"), - ("bpy.types.geometrynodecurvetrim*", "modeling/geometry_nodes/curve/curve_trim.html#bpy-types-geometrynodecurvetrim"), - ("bpy.types.geometrynodeedgesplit*", "modeling/geometry_nodes/mesh/edge_split.html#bpy-types-geometrynodeedgesplit"), + ("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.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"), ("bpy.types.keyframe.handle_right*", "editors/graph_editor/fcurves/properties.html#bpy-types-keyframe-handle-right"), ("bpy.types.light.cutoff_distance*", "render/eevee/lighting.html#bpy-types-light-cutoff-distance"), @@ -1405,6 +1449,7 @@ url_manual_mapping = ( ("bpy.ops.outliner.orphans_purge*", "editors/outliner/interface.html#bpy-ops-outliner-orphans-purge"), ("bpy.ops.paint.mask_box_gesture*", "sculpt_paint/sculpting/editing/mask.html#bpy-ops-paint-mask-box-gesture"), ("bpy.ops.screen.region_quadview*", "editors/3dview/navigate/views.html#bpy-ops-screen-region-quadview"), + ("bpy.ops.screen.screenshot_area*", "interface/window_system/topbar.html#bpy-ops-screen-screenshot-area"), ("bpy.ops.sequencer.offset_clear*", "video_editing/sequencer/editing.html#bpy-ops-sequencer-offset-clear"), ("bpy.ops.spreadsheet.toggle_pin*", "editors/spreadsheet.html#bpy-ops-spreadsheet-toggle-pin"), ("bpy.ops.uv.follow_active_quads*", "modeling/meshes/editing/uv.html#bpy-ops-uv-follow-active-quads"), @@ -1412,6 +1457,7 @@ url_manual_mapping = ( ("bpy.types.bone.envelope_weight*", "animation/armatures/bones/properties/deform.html#bpy-types-bone-envelope-weight"), ("bpy.types.brush.use_persistent*", "sculpt_paint/sculpting/tools/layer.html#bpy-types-brush-use-persistent"), ("bpy.types.buildgpencilmodifier*", "grease_pencil/modifiers/generate/build.html#bpy-types-buildgpencilmodifier"), + ("bpy.types.camera.sensor_height*", "render/cameras.html#bpy-types-camera-sensor-height"), ("bpy.types.colorbalancemodifier*", "video_editing/sequencer/sidebar/modifiers.html#bpy-types-colorbalancemodifier"), ("bpy.types.colorgpencilmodifier*", "grease_pencil/modifiers/color/hue_saturation.html#bpy-types-colorgpencilmodifier"), ("bpy.types.compositornodefilter*", "compositing/types/filter/filter_node.html#bpy-types-compositornodefilter"), @@ -1433,10 +1479,11 @@ url_manual_mapping = ( ("bpy.types.followpathconstraint*", "animation/constraints/relationship/follow_path.html#bpy-types-followpathconstraint"), ("bpy.types.gaussianblursequence*", "video_editing/sequencer/strips/effects/blur.html#bpy-types-gaussianblursequence"), ("bpy.types.geometrynodeboundbox*", "modeling/geometry_nodes/geometry/bounding_box.html#bpy-types-geometrynodeboundbox"), + ("bpy.types.geometrynodematerial*", "-1"), ("bpy.types.geometrynodemeshcone*", "modeling/geometry_nodes/mesh_primitives/cone.html#bpy-types-geometrynodemeshcone"), ("bpy.types.geometrynodemeshcube*", "modeling/geometry_nodes/mesh_primitives/cube.html#bpy-types-geometrynodemeshcube"), ("bpy.types.geometrynodemeshgrid*", "modeling/geometry_nodes/mesh_primitives/grid.html#bpy-types-geometrynodemeshgrid"), - ("bpy.types.geometrynodemeshline*", "modeling/geometry_nodes/mesh_primitives/line.html#bpy-types-geometrynodemeshline"), + ("bpy.types.geometrynodemeshline*", "modeling/geometry_nodes/mesh_primitives/mesh_line.html#bpy-types-geometrynodemeshline"), ("bpy.types.gpencillayer.opacity*", "grease_pencil/properties/layers.html#bpy-types-gpencillayer-opacity"), ("bpy.types.image.display_aspect*", "editors/image/sidebar.html#bpy-types-image-display-aspect"), ("bpy.types.keyframe.handle_left*", "editors/graph_editor/fcurves/properties.html#bpy-types-keyframe-handle-left"), @@ -1457,6 +1504,7 @@ url_manual_mapping = ( ("bpy.types.shadernodebsdfglossy*", "render/shader_nodes/shader/glossy.html#bpy-types-shadernodebsdfglossy"), ("bpy.types.shadernodebsdfvelvet*", "render/shader_nodes/shader/velvet.html#bpy-types-shadernodebsdfvelvet"), ("bpy.types.shadernodecameradata*", "render/shader_nodes/input/camera_data.html#bpy-types-shadernodecameradata"), + ("bpy.types.shadernodefloatcurve*", "render/shader_nodes/converter/float_curve.html#bpy-types-shadernodefloatcurve"), ("bpy.types.shadernodeobjectinfo*", "render/shader_nodes/input/object_info.html#bpy-types-shadernodeobjectinfo"), ("bpy.types.shadernodetexchecker*", "render/shader_nodes/textures/checker.html#bpy-types-shadernodetexchecker"), ("bpy.types.shadernodetexvoronoi*", "render/shader_nodes/textures/voronoi.html#bpy-types-shadernodetexvoronoi"), @@ -1532,6 +1580,7 @@ url_manual_mapping = ( ("bpy.types.brush.smooth_stroke*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brush-smooth-stroke"), ("bpy.types.brush.tip_roundness*", "sculpt_paint/sculpting/tools/clay_strips.html#bpy-types-brush-tip-roundness"), ("bpy.types.camera.display_size*", "render/cameras.html#bpy-types-camera-display-size"), + ("bpy.types.camera.sensor_width*", "render/cameras.html#bpy-types-camera-sensor-width"), ("bpy.types.compositornodedblur*", "compositing/types/filter/directional_blur.html#bpy-types-compositornodedblur"), ("bpy.types.compositornodegamma*", "compositing/types/color/gamma.html#bpy-types-compositornodegamma"), ("bpy.types.compositornodeglare*", "compositing/types/filter/glare.html#bpy-types-compositornodeglare"), @@ -1546,8 +1595,11 @@ url_manual_mapping = ( ("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.geometrynodeboolean*", "modeling/geometry_nodes/mesh/boolean.html#bpy-types-geometrynodeboolean"), + ("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"), ("bpy.types.geometrynoderaycast*", "modeling/geometry_nodes/geometry/raycast.html#bpy-types-geometrynoderaycast"), + ("bpy.types.geonodeimagetexture*", "modeling/geometry_nodes/texture/image.html#bpy-types-geonodeimagetexture"), ("bpy.types.hookgpencilmodifier*", "grease_pencil/modifiers/deform/hook.html#bpy-types-hookgpencilmodifier"), ("bpy.types.imageformatsettings*", "files/media/image_formats.html#bpy-types-imageformatsettings"), ("bpy.types.kinematicconstraint*", "animation/constraints/tracking/ik_solver.html#bpy-types-kinematicconstraint"), @@ -1618,7 +1670,7 @@ url_manual_mapping = ( ("bpy.ops.object.select_linked*", "scene_layout/object/selecting.html#bpy-ops-object-select-linked"), ("bpy.ops.object.select_mirror*", "scene_layout/object/selecting.html#bpy-ops-object-select-mirror"), ("bpy.ops.object.select_random*", "scene_layout/object/selecting.html#bpy-ops-object-select-random"), - ("bpy.ops.object.transfer_mode*", "sculpt_paint/sculpting/editing/sculpt.html#bpy-ops-object-transfer-mode"), + ("bpy.ops.object.transfer_mode*", "editors/3dview/modes.html#bpy-ops-object-transfer-mode"), ("bpy.ops.outliner.show_active*", "editors/outliner/editing.html#bpy-ops-outliner-show-active"), ("bpy.ops.paint.add_simple_uvs*", "sculpt_paint/texture_paint/tool_settings/texture_slots.html#bpy-ops-paint-add-simple-uvs"), ("bpy.ops.pose.rigify_generate*", "addons/rigging/rigify/basics.html#bpy-ops-pose-rigify-generate"), @@ -1664,6 +1716,7 @@ url_manual_mapping = ( ("bpy.types.geometrynodeviewer*", "modeling/geometry_nodes/output/viewer.html#bpy-types-geometrynodeviewer"), ("bpy.types.gpencilsculptguide*", "grease_pencil/modes/draw/guides.html#bpy-types-gpencilsculptguide"), ("bpy.types.huecorrectmodifier*", "video_editing/sequencer/sidebar/modifiers.html#bpy-types-huecorrectmodifier"), + ("bpy.types.image.is_multiview*", "editors/image/image_settings.html#bpy-types-image-is-multiview"), ("bpy.types.imagepaint.stencil*", "sculpt_paint/texture_paint/tool_settings/mask.html#bpy-types-imagepaint-stencil"), ("bpy.types.meshdeformmodifier*", "modeling/modifiers/deform/mesh_deform.html#bpy-types-meshdeformmodifier"), ("bpy.types.movietrackingtrack*", "movie_clip/tracking/clip/sidebar/track/index.html#bpy-types-movietrackingtrack"), @@ -1763,6 +1816,7 @@ url_manual_mapping = ( ("bpy.types.armatureeditbones*", "animation/armatures/bones/editing/index.html#bpy-types-armatureeditbones"), ("bpy.types.brush.pose_offset*", "sculpt_paint/sculpting/tools/pose.html#bpy-types-brush-pose-offset"), ("bpy.types.brush.rake_factor*", "sculpt_paint/sculpting/tools/snake_hook.html#bpy-types-brush-rake-factor"), + ("bpy.types.camera.sensor_fit*", "render/cameras.html#bpy-types-camera-sensor-fit"), ("bpy.types.cameradofsettings*", "render/cameras.html#bpy-types-cameradofsettings"), ("bpy.types.childofconstraint*", "animation/constraints/relationship/child_of.html#bpy-types-childofconstraint"), ("bpy.types.clamptoconstraint*", "animation/constraints/tracking/clamp_to.html#bpy-types-clamptoconstraint"), @@ -1778,6 +1832,7 @@ url_manual_mapping = ( ("bpy.types.fmodifierenvelope*", "editors/graph_editor/fcurves/modifiers.html#bpy-types-fmodifierenvelope"), ("bpy.types.freestylesettings*", "render/freestyle/view_layer/freestyle.html#bpy-types-freestylesettings"), ("bpy.types.geometrynodegroup*", "modeling/geometry_nodes/group.html#bpy-types-geometrynodegroup"), + ("bpy.types.geometrynodesetid*", "modeling/geometry_nodes/geometry/set_id.html#bpy-types-geometrynodesetid"), ("bpy.types.gpencillayer.hide*", "grease_pencil/properties/layers.html#bpy-types-gpencillayer-hide"), ("bpy.types.gpencillayer.lock*", "grease_pencil/properties/layers.html#bpy-types-gpencillayer-lock"), ("bpy.types.imagepaint.dither*", "sculpt_paint/texture_paint/tool_settings/options.html#bpy-types-imagepaint-dither"), @@ -1860,6 +1915,7 @@ 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.properties_edit*", "files/data_blocks.html#bpy-ops-wm-properties-edit"), ("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"), @@ -1883,8 +1939,8 @@ url_manual_mapping = ( ("bpy.types.fileselectparams*", "editors/file_browser.html#bpy-types-fileselectparams"), ("bpy.types.fmodifierstepped*", "editors/graph_editor/fcurves/modifiers.html#bpy-types-fmodifierstepped"), ("bpy.types.freestylelineset*", "render/freestyle/view_layer/line_set.html#bpy-types-freestylelineset"), + ("bpy.types.image.alpha_mode*", "editors/image/image_settings.html#bpy-types-image-alpha-mode"), ("bpy.types.mask.frame_start*", "movie_clip/masking/sidebar.html#bpy-types-mask-frame-start"), - ("bpy.types.mesh.*customdata*", "modeling/meshes/properties/custom_data.html#bpy-types-mesh-customdata"), ("bpy.types.multicamsequence*", "video_editing/sequencer/strips/effects/multicam.html#bpy-types-multicamsequence"), ("bpy.types.multiplysequence*", "video_editing/sequencer/strips/effects/multiply.html#bpy-types-multiplysequence"), ("bpy.types.multiresmodifier*", "modeling/modifiers/generate/multiresolution.html#bpy-types-multiresmodifier"), @@ -1903,7 +1959,7 @@ url_manual_mapping = ( ("bpy.types.shaderfxcolorize*", "grease_pencil/visual_effects/colorize.html#bpy-types-shaderfxcolorize"), ("bpy.types.shaderfxpixelate*", "grease_pencil/visual_effects/pixelate.html#bpy-types-shaderfxpixelate"), ("bpy.types.shadernodeinvert*", "render/shader_nodes/color/invert.html#bpy-types-shadernodeinvert"), - ("bpy.types.shadernodemixrgb*", "render/shader_nodes/color/mix.html#bpy-types-shadernodemixrgb"), + ("bpy.types.shadernodemixrgb*", "modeling/geometry_nodes/color/mix_rgb.html#bpy-types-shadernodemixrgb"), ("bpy.types.shadernodenormal*", "render/shader_nodes/vector/normal.html#bpy-types-shadernodenormal"), ("bpy.types.shadernodescript*", "render/shader_nodes/osl.html#bpy-types-shadernodescript"), ("bpy.types.shadernodetexies*", "render/shader_nodes/textures/ies.html#bpy-types-shadernodetexies"), @@ -1962,6 +2018,7 @@ url_manual_mapping = ( ("bpy.ops.preferences.addon*", "editors/preferences/addons.html#bpy-ops-preferences-addon"), ("bpy.ops.scene.light_cache*", "render/eevee/render_settings/indirect_lighting.html#bpy-ops-scene-light-cache"), ("bpy.ops.screen.area_dupli*", "interface/window_system/areas.html#bpy-ops-screen-area-dupli"), + ("bpy.ops.screen.screenshot*", "interface/window_system/topbar.html#bpy-ops-screen-screenshot"), ("bpy.ops.sculpt.dirty_mask*", "sculpt_paint/sculpting/editing/mask.html#bpy-ops-sculpt-dirty-mask"), ("bpy.ops.sculpt.symmetrize*", "sculpt_paint/sculpting/tool_settings/symmetry.html#bpy-ops-sculpt-symmetrize"), ("bpy.ops.uv.remove_doubles*", "modeling/meshes/uv/editing.html#bpy-ops-uv-remove-doubles"), @@ -2055,6 +2112,7 @@ url_manual_mapping = ( ("bpy.types.curvesmodifier*", "video_editing/sequencer/sidebar/modifiers.html#bpy-types-curvesmodifier"), ("bpy.types.ffmpegsettings*", "render/output/properties/output.html#bpy-types-ffmpegsettings"), ("bpy.types.fmodifiernoise*", "editors/graph_editor/fcurves/modifiers.html#bpy-types-fmodifiernoise"), + ("bpy.types.image.filepath*", "editors/image/image_settings.html#bpy-types-image-filepath"), ("bpy.types.keyframe.co_ui*", "editors/graph_editor/fcurves/properties.html#bpy-types-keyframe-co-ui"), ("bpy.types.mask.frame_end*", "movie_clip/masking/sidebar.html#bpy-types-mask-frame-end"), ("bpy.types.material.paint*", "sculpt_paint/texture_paint/index.html#bpy-types-material-paint"), @@ -2100,7 +2158,6 @@ url_manual_mapping = ( ("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"), - ("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"), ("bpy.ops.mesh.mark_sharp*", "modeling/meshes/editing/edge/edge_data.html#bpy-ops-mesh-mark-sharp"), @@ -2136,7 +2193,6 @@ url_manual_mapping = ( ("bpy.types.arraymodifier*", "modeling/modifiers/generate/array.html#bpy-types-arraymodifier"), ("bpy.types.bevelmodifier*", "modeling/modifiers/generate/bevel.html#bpy-types-bevelmodifier"), ("bpy.types.buildmodifier*", "modeling/modifiers/generate/build.html#bpy-types-buildmodifier"), - ("bpy.types.camera.sensor*", "render/cameras.html#bpy-types-camera-sensor"), ("bpy.types.clothmodifier*", "physics/cloth/index.html#bpy-types-clothmodifier"), ("bpy.types.clothsettings*", "physics/cloth/settings/index.html#bpy-types-clothsettings"), ("bpy.types.cloudstexture*", "render/materials/legacy_textures/types/clouds.html#bpy-types-cloudstexture"), @@ -2228,6 +2284,7 @@ url_manual_mapping = ( ("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"), + ("bpy.types.image.source*", "editors/image/image_settings.html#bpy-types-image-source"), ("bpy.types.imagetexture*", "render/materials/legacy_textures/types/image_movie.html#bpy-types-imagetexture"), ("bpy.types.latticepoint*", "animation/lattice.html#bpy-types-latticepoint"), ("bpy.types.magictexture*", "render/materials/legacy_textures/types/magic.html#bpy-types-magictexture"), diff --git a/release/scripts/presets/interface_theme/Blender_Light.xml b/release/scripts/presets/interface_theme/Blender_Light.xml index e3ac77b008d..9a315763c8b 100644 --- a/release/scripts/presets/interface_theme/Blender_Light.xml +++ b/release/scripts/presets/interface_theme/Blender_Light.xml @@ -1056,17 +1056,17 @@ <ThemeInfo info_selected="#6080ff" info_selected_text="#000000" - info_error="#FF0038ff" + info_error="#ff0038ff" info_error_text="#000000" - info_warning="#FFE900ff" + info_warning="#ffe900ff" info_warning_text="#000000" - info_info="#0068B3ff" + info_info="#0068b3ff" info_info_text="#000000" - info_debug="#B30095ff" + info_debug="#b30095ff" info_debug_text="#000000" - info_property="#44B300ff" + info_property="#44b300ff" info_property_text="#000000" - info_operator="#44B300ff" + info_operator="#44b300ff" info_operator_text="#000000" > <space> @@ -1352,6 +1352,15 @@ </panelcolors> </ThemeSpaceGeneric> </space> + <space_list> + <ThemeSpaceListGeneric + list="#adadad" + list_title="#c3c3c3" + list_text="#c3c3c3" + list_text_hi="#00ffff" + > + </ThemeSpaceListGeneric> + </space_list> </ThemeSpreadsheet> </spreadsheet> <bone_color_sets> @@ -1530,6 +1539,44 @@ > </ThemeCollectionColor> </collection_color> + <strip_color> + <ThemeStripColor + color="#e2605b" + > + </ThemeStripColor> + <ThemeStripColor + color="#f1a355" + > + </ThemeStripColor> + <ThemeStripColor + color="#f1dc55" + > + </ThemeStripColor> + <ThemeStripColor + color="#7bcc7b" + > + </ThemeStripColor> + <ThemeStripColor + color="#5db6ea" + > + </ThemeStripColor> + <ThemeStripColor + color="#8d59da" + > + </ThemeStripColor> + <ThemeStripColor + color="#c673b8" + > + </ThemeStripColor> + <ThemeStripColor + color="#7a5441" + > + </ThemeStripColor> + <ThemeStripColor + color="#5f5f5f" + > + </ThemeStripColor> + </strip_color> </Theme> <ThemeStyle> <panel_title> diff --git a/release/scripts/presets/keyconfig/Blender.py b/release/scripts/presets/keyconfig/Blender.py index 35c920b3f40..1ac7626f926 100644 --- a/release/scripts/presets/keyconfig/Blender.py +++ b/release/scripts/presets/keyconfig/Blender.py @@ -202,7 +202,7 @@ class Prefs(bpy.types.KeyConfigPreferences): update=update_fn, ) - # Developer note, this is an experemental option. + # Developer note, this is an experimental option. use_pie_click_drag: BoolProperty( name="Pie Menu on Drag", description=( diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py index d6032a3ecce..dbc93cb6caa 100644 --- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py +++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py @@ -1097,6 +1097,7 @@ def km_outliner(params): # 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.show_hierarchy", {"type": 'HOME', "value": 'PRESS'}, None), @@ -1748,6 +1749,7 @@ def km_graph_editor(params): ("graph.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None), ("graph.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None), ("graph.view_frame", {"type": 'NUMPAD_0', "value": 'PRESS'}, None), + op_menu_pie("GRAPH_MT_view_pie", {"type": 'ACCENT_GRAVE', "value": 'PRESS'}), ("graph.fmodifier_add", {"type": 'M', "value": 'PRESS', "shift": True, "ctrl": True}, {"properties": [("only_active", False)]}), ("anim.channels_editable_toggle", {"type": 'TAB', "value": 'PRESS'}, None), @@ -1815,6 +1817,7 @@ def km_image_generic(params): ("image.cycle_render_slot", {"type": 'J', "value": 'PRESS', "repeat": True}, None), ("image.cycle_render_slot", {"type": 'J', "value": 'PRESS', "alt": True, "repeat": True}, {"properties": [("reverse", True)]}), + op_menu_pie("IMAGE_MT_view_pie", {"type": 'ACCENT_GRAVE', "value": 'PRESS'}), ]) if not params.legacy: @@ -2027,6 +2030,7 @@ def km_node_editor(params): ("node.view_all", {"type": 'HOME', "value": 'PRESS'}, None), ("node.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None), ("node.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None), + op_menu_pie("NODE_MT_view_pie", {"type": 'ACCENT_GRAVE', "value": 'PRESS'}), ("node.delete", {"type": 'X', "value": 'PRESS'}, None), ("node.delete", {"type": 'DEL', "value": 'PRESS'}, None), ("node.delete_reconnect", {"type": 'X', "value": 'PRESS', "ctrl": True}, None), @@ -2389,6 +2393,7 @@ def km_dopesheet(params): ("action.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None), ("action.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None), ("action.view_frame", {"type": 'NUMPAD_0', "value": 'PRESS'}, None), + op_menu_pie("DOPESHEET_MT_view_pie", {"type": 'ACCENT_GRAVE', "value": 'PRESS'}), ("anim.channels_editable_toggle", {"type": 'TAB', "value": 'PRESS'}, None), ("anim.channels_select_filter", {"type": 'F', "value": 'PRESS', "ctrl": True}, None), ("transform.transform", {"type": 'G', "value": 'PRESS'}, @@ -2503,6 +2508,7 @@ def km_nla_editor(params): ("nla.view_all", {"type": 'NDOF_BUTTON_FIT', "value": 'PRESS'}, None), ("nla.view_selected", {"type": 'NUMPAD_PERIOD', "value": 'PRESS'}, None), ("nla.view_frame", {"type": 'NUMPAD_0', "value": 'PRESS'}, None), + op_menu_pie("NLA_MT_view_pie", {"type": 'ACCENT_GRAVE', "value": 'PRESS'}), ("nla.actionclip_add", {"type": 'A', "value": 'PRESS', "shift": True}, None), ("nla.transition_add", {"type": 'T', "value": 'PRESS', "shift": True}, None), ("nla.soundclip_add", {"type": 'K', "value": 'PRESS', "shift": True}, None), @@ -2835,6 +2841,7 @@ def km_sequencer(params): ("sequencer.select_grouped", {"type": 'G', "value": 'PRESS', "shift": True}, None), op_menu("SEQUENCER_MT_add", {"type": 'A', "value": 'PRESS', "shift": True}), op_menu("SEQUENCER_MT_change", {"type": 'C', "value": 'PRESS'}), + op_menu_pie("SEQUENCER_MT_view_pie", {"type": 'ACCENT_GRAVE', "value": 'PRESS'}), ("sequencer.slip", {"type": 'S', "value": 'PRESS'}, None), ("wm.context_set_int", {"type": 'O', "value": 'PRESS'}, {"properties": [("data_path", 'scene.sequence_editor.overlay_frame'), ("value", 0)]}), @@ -2892,6 +2899,7 @@ def km_sequencerpreview(params): {"properties": [("ratio", 0.25)]}), ("sequencer.view_zoom_ratio", {"type": 'NUMPAD_8', "value": 'PRESS'}, {"properties": [("ratio", 0.125)]}), + op_menu_pie("SEQUENCER_MT_preview_view_pie", {"type": 'ACCENT_GRAVE', "value": 'PRESS'}), # Edit. ("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None), @@ -3042,6 +3050,7 @@ def km_clip(_params): op_menu_pie("CLIP_MT_solving_pie", {"type": 'S', "value": 'PRESS', "shift": True}), op_menu_pie("CLIP_MT_marker_pie", {"type": 'E', "value": 'PRESS', "shift": True}), op_menu_pie("CLIP_MT_reconstruction_pie", {"type": 'W', "value": 'PRESS', "shift": True}), + op_menu_pie("CLIP_MT_view_pie", {"type": 'ACCENT_GRAVE', "value": 'PRESS'}), ]) return keymap diff --git a/release/scripts/presets/tracking_camera/1_inch.py b/release/scripts/presets/tracking_camera/1_inch.py index 97e87b8c5a7..5ca4f04b6d7 100644 --- a/release/scripts/presets/tracking_camera/1_inch.py +++ b/release/scripts/presets/tracking_camera/1_inch.py @@ -1,4 +1,6 @@ import bpy -bpy.context.camera.sensor_width = 13.2 -bpy.context.camera.sensor_height = 8.80 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +camera = bpy.context.edit_movieclip.tracking.camera + +camera.sensor_width = 13.2 +camera.units = 'MILLIMETERS' +camera.pixel_aspect = 1 diff --git a/release/scripts/presets/tracking_camera/1_slash_1.8_inch.py b/release/scripts/presets/tracking_camera/1_slash_1.8_inch.py index 8b0dc3cea1d..6b6d7fe5a1c 100644 --- a/release/scripts/presets/tracking_camera/1_slash_1.8_inch.py +++ b/release/scripts/presets/tracking_camera/1_slash_1.8_inch.py @@ -1,4 +1,6 @@ import bpy -bpy.context.camera.sensor_width = 7.18 -bpy.context.camera.sensor_height = 5.32 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +camera = bpy.context.edit_movieclip.tracking.camera + +camera.sensor_width = 7.18 +camera.units = 'MILLIMETERS' +camera.pixel_aspect = 1 diff --git a/release/scripts/presets/tracking_camera/1_slash_2.3_inch.py b/release/scripts/presets/tracking_camera/1_slash_2.3_inch.py index bd6808da082..dacb1508f8e 100644 --- a/release/scripts/presets/tracking_camera/1_slash_2.3_inch.py +++ b/release/scripts/presets/tracking_camera/1_slash_2.3_inch.py @@ -1,4 +1,6 @@ import bpy -bpy.context.camera.sensor_width = 6.17 -bpy.context.camera.sensor_height = 4.55 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +camera = bpy.context.edit_movieclip.tracking.camera + +camera.sensor_width = 6.17 +camera.units = 'MILLIMETERS' +camera.pixel_aspect = 1 diff --git a/release/scripts/presets/tracking_camera/1_slash_2.5_inch.py b/release/scripts/presets/tracking_camera/1_slash_2.5_inch.py index 90f60e7d7f0..e2f4ad9a662 100644 --- a/release/scripts/presets/tracking_camera/1_slash_2.5_inch.py +++ b/release/scripts/presets/tracking_camera/1_slash_2.5_inch.py @@ -1,4 +1,6 @@ import bpy -bpy.context.camera.sensor_width = 5.76 -bpy.context.camera.sensor_height = 4.29 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +camera = bpy.context.edit_movieclip.tracking.camera + +camera.sensor_width = 5.76 +camera.units = 'MILLIMETERS' +camera.pixel_aspect = 1 diff --git a/release/scripts/presets/tracking_camera/1_slash_2.7_inch.py b/release/scripts/presets/tracking_camera/1_slash_2.7_inch.py index 4a9591803d0..75db17cfe54 100644 --- a/release/scripts/presets/tracking_camera/1_slash_2.7_inch.py +++ b/release/scripts/presets/tracking_camera/1_slash_2.7_inch.py @@ -1,4 +1,6 @@ import bpy -bpy.context.camera.sensor_width = 5.37 -bpy.context.camera.sensor_height = 4.04 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +camera = bpy.context.edit_movieclip.tracking.camera + +camera.sensor_width = 5.37 +camera.units = 'MILLIMETERS' +camera.pixel_aspect = 1 diff --git a/release/scripts/presets/tracking_camera/1_slash_3.2_inch.py b/release/scripts/presets/tracking_camera/1_slash_3.2_inch.py index 5f31b9ec49c..f80c4a85402 100644 --- a/release/scripts/presets/tracking_camera/1_slash_3.2_inch.py +++ b/release/scripts/presets/tracking_camera/1_slash_3.2_inch.py @@ -1,4 +1,6 @@ import bpy -bpy.context.camera.sensor_width = 4.54 -bpy.context.camera.sensor_height = 3.42 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +camera = bpy.context.edit_movieclip.tracking.camera + +camera.sensor_width = 4.54 +camera.units = 'MILLIMETERS' +camera.pixel_aspect = 1 diff --git a/release/scripts/presets/tracking_camera/2_slash_3_inch.py b/release/scripts/presets/tracking_camera/2_slash_3_inch.py index eb463a31af7..23dc18468cd 100644 --- a/release/scripts/presets/tracking_camera/2_slash_3_inch.py +++ b/release/scripts/presets/tracking_camera/2_slash_3_inch.py @@ -1,4 +1,6 @@ import bpy -bpy.context.camera.sensor_width = 8.8 -bpy.context.camera.sensor_height = 6.6 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +camera = bpy.context.edit_movieclip.tracking.camera + +camera.sensor_width = 8.8 +camera.units = 'MILLIMETERS' +camera.pixel_aspect = 1 diff --git a/release/scripts/presets/tracking_camera/APS-C.py b/release/scripts/presets/tracking_camera/APS-C.py index 4031e8bae71..4cc21ab5672 100644 --- a/release/scripts/presets/tracking_camera/APS-C.py +++ b/release/scripts/presets/tracking_camera/APS-C.py @@ -1,4 +1,6 @@ import bpy -bpy.context.camera.sensor_width = 23.6 -bpy.context.camera.sensor_height = 15.6 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +camera = bpy.context.edit_movieclip.tracking.camera + +camera.sensor_width = 23.6 +camera.units = 'MILLIMETERS' +camera.pixel_aspect = 1 diff --git a/release/scripts/presets/tracking_camera/APS-C_(Canon).py b/release/scripts/presets/tracking_camera/APS-C_(Canon).py index 484929a54e7..285f290d899 100644 --- a/release/scripts/presets/tracking_camera/APS-C_(Canon).py +++ b/release/scripts/presets/tracking_camera/APS-C_(Canon).py @@ -1,4 +1,6 @@ import bpy -bpy.context.camera.sensor_width = 22.30 -bpy.context.camera.sensor_height = 14.90 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +camera = bpy.context.edit_movieclip.tracking.camera + +camera.sensor_width = 22.30 +camera.units = 'MILLIMETERS' +camera.pixel_aspect = 1 diff --git a/release/scripts/presets/tracking_camera/APS-H_(Canon).py b/release/scripts/presets/tracking_camera/APS-H_(Canon).py index d3b61d1aa46..f41691e0579 100644 --- a/release/scripts/presets/tracking_camera/APS-H_(Canon).py +++ b/release/scripts/presets/tracking_camera/APS-H_(Canon).py @@ -1,4 +1,6 @@ import bpy -bpy.context.camera.sensor_width = 27.90 -bpy.context.camera.sensor_height = 18.60 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +camera = bpy.context.edit_movieclip.tracking.camera + +camera.sensor_width = 27.90 +camera.units = 'MILLIMETERS' +camera.pixel_aspect = 1 diff --git a/release/scripts/presets/tracking_camera/Analog_16mm.py b/release/scripts/presets/tracking_camera/Analog_16mm.py index a290839c8e0..08761d05c31 100644 --- a/release/scripts/presets/tracking_camera/Analog_16mm.py +++ b/release/scripts/presets/tracking_camera/Analog_16mm.py @@ -1,4 +1,6 @@ import bpy -bpy.context.camera.sensor_width = 10.26 -bpy.context.camera.sensor_height = 7.49 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +camera = bpy.context.edit_movieclip.tracking.camera + +camera.sensor_width = 10.26 +camera.units = 'MILLIMETERS' +camera.pixel_aspect = 1 diff --git a/release/scripts/presets/tracking_camera/Analog_35mm.py b/release/scripts/presets/tracking_camera/Analog_35mm.py index fe3338dd292..c4939319e10 100644 --- a/release/scripts/presets/tracking_camera/Analog_35mm.py +++ b/release/scripts/presets/tracking_camera/Analog_35mm.py @@ -1,4 +1,6 @@ import bpy -bpy.context.camera.sensor_width = 22 -bpy.context.camera.sensor_height = 16 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +camera = bpy.context.edit_movieclip.tracking.camera + +camera.sensor_width = 22 +camera.units = 'MILLIMETERS' +camera.pixel_aspect = 1 diff --git a/release/scripts/presets/tracking_camera/Analog_65mm.py b/release/scripts/presets/tracking_camera/Analog_65mm.py index d6eb9c32283..333aa4775ad 100644 --- a/release/scripts/presets/tracking_camera/Analog_65mm.py +++ b/release/scripts/presets/tracking_camera/Analog_65mm.py @@ -1,4 +1,6 @@ import bpy -bpy.context.camera.sensor_width = 52.45 -bpy.context.camera.sensor_height = 23.01 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +camera = bpy.context.edit_movieclip.tracking.camera + +camera.sensor_width = 52.45 +camera.units = 'MILLIMETERS' +camera.pixel_aspect = 1 diff --git a/release/scripts/presets/tracking_camera/Analog_IMAX.py b/release/scripts/presets/tracking_camera/Analog_IMAX.py index b71b910dee0..27bbbe1bc3d 100644 --- a/release/scripts/presets/tracking_camera/Analog_IMAX.py +++ b/release/scripts/presets/tracking_camera/Analog_IMAX.py @@ -1,4 +1,6 @@ import bpy -bpy.context.camera.sensor_width = 71.41 -bpy.context.camera.sensor_height = 52.63 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +camera = bpy.context.edit_movieclip.tracking.camera + +camera.sensor_width = 71.41 +camera.units = 'MILLIMETERS' +camera.pixel_aspect = 1 diff --git a/release/scripts/presets/tracking_camera/Analog_Super_16.py b/release/scripts/presets/tracking_camera/Analog_Super_16.py index f76238c69d3..e453b31cdd7 100644 --- a/release/scripts/presets/tracking_camera/Analog_Super_16.py +++ b/release/scripts/presets/tracking_camera/Analog_Super_16.py @@ -1,4 +1,6 @@ import bpy -bpy.context.camera.sensor_width = 12.35 -bpy.context.camera.sensor_height = 7.42 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +camera = bpy.context.edit_movieclip.tracking.camera + +camera.sensor_width = 12.35 +camera.units = 'MILLIMETERS' +camera.pixel_aspect = 1 diff --git a/release/scripts/presets/tracking_camera/Analog_Super_35.py b/release/scripts/presets/tracking_camera/Analog_Super_35.py index b22ff545c68..63e9d93be54 100644 --- a/release/scripts/presets/tracking_camera/Analog_Super_35.py +++ b/release/scripts/presets/tracking_camera/Analog_Super_35.py @@ -1,4 +1,6 @@ import bpy -bpy.context.camera.sensor_width = 24.89 -bpy.context.camera.sensor_height = 18.66 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +camera = bpy.context.edit_movieclip.tracking.camera + +camera.sensor_width = 24.89 +camera.units = 'MILLIMETERS' +camera.pixel_aspect = 1 diff --git a/release/scripts/presets/tracking_camera/Arri_Alexa_65.py b/release/scripts/presets/tracking_camera/Arri_Alexa_65.py index 24d03e022ae..3801701a5ff 100644 --- a/release/scripts/presets/tracking_camera/Arri_Alexa_65.py +++ b/release/scripts/presets/tracking_camera/Arri_Alexa_65.py @@ -1,4 +1,6 @@ import bpy -bpy.context.camera.sensor_width = 54.12 -bpy.context.camera.sensor_height = 25.58 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +camera = bpy.context.edit_movieclip.tracking.camera + +camera.sensor_width = 54.12 +camera.units = 'MILLIMETERS' +camera.pixel_aspect = 1 diff --git a/release/scripts/presets/tracking_camera/Arri_Alexa_LF.py b/release/scripts/presets/tracking_camera/Arri_Alexa_LF.py index 430fdc996a6..fa0a52b51a4 100644 --- a/release/scripts/presets/tracking_camera/Arri_Alexa_LF.py +++ b/release/scripts/presets/tracking_camera/Arri_Alexa_LF.py @@ -1,4 +1,6 @@ import bpy -bpy.context.camera.sensor_width = 36.70 -bpy.context.camera.sensor_height = 25.54 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +camera = bpy.context.edit_movieclip.tracking.camera + +camera.sensor_width = 36.70 +camera.units = 'MILLIMETERS' +camera.pixel_aspect = 1 diff --git a/release/scripts/presets/tracking_camera/Arri_Alexa_Mini_&_SXT.py b/release/scripts/presets/tracking_camera/Arri_Alexa_Mini_&_SXT.py index 90998bc0da0..223471beaa1 100644 --- a/release/scripts/presets/tracking_camera/Arri_Alexa_Mini_&_SXT.py +++ b/release/scripts/presets/tracking_camera/Arri_Alexa_Mini_&_SXT.py @@ -1,4 +1,6 @@ import bpy -bpy.context.camera.sensor_width = 29.90 -bpy.context.camera.sensor_height = 15.77 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +camera = bpy.context.edit_movieclip.tracking.camera + +camera.sensor_width = 29.90 +camera.units = 'MILLIMETERS' +camera.pixel_aspect = 1 diff --git a/release/scripts/presets/tracking_camera/Blackmagic_Pocket_&_Studio.py b/release/scripts/presets/tracking_camera/Blackmagic_Pocket_&_Studio.py index bb2b172919e..d658531de32 100644 --- a/release/scripts/presets/tracking_camera/Blackmagic_Pocket_&_Studio.py +++ b/release/scripts/presets/tracking_camera/Blackmagic_Pocket_&_Studio.py @@ -1,4 +1,6 @@ import bpy -bpy.context.camera.sensor_width = 12.48 -bpy.context.camera.sensor_height = 7.02 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +camera = bpy.context.edit_movieclip.tracking.camera + +camera.sensor_width = 12.48 +camera.units = 'MILLIMETERS' +camera.pixel_aspect = 1 diff --git a/release/scripts/presets/tracking_camera/Blackmagic_Pocket_4K.py b/release/scripts/presets/tracking_camera/Blackmagic_Pocket_4K.py index 4b735283c8b..11103c8df89 100644 --- a/release/scripts/presets/tracking_camera/Blackmagic_Pocket_4K.py +++ b/release/scripts/presets/tracking_camera/Blackmagic_Pocket_4K.py @@ -1,4 +1,6 @@ import bpy -bpy.context.camera.sensor_width = 18.96 -bpy.context.camera.sensor_height = 10.00 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +camera = bpy.context.edit_movieclip.tracking.camera + +camera.sensor_width = 18.96 +camera.units = 'MILLIMETERS' +camera.pixel_aspect = 1 diff --git a/release/scripts/presets/tracking_camera/Blackmagic_Pocket_6k.py b/release/scripts/presets/tracking_camera/Blackmagic_Pocket_6k.py index 1a882f05786..942a9deca85 100644 --- a/release/scripts/presets/tracking_camera/Blackmagic_Pocket_6k.py +++ b/release/scripts/presets/tracking_camera/Blackmagic_Pocket_6k.py @@ -1,4 +1,6 @@ import bpy -bpy.context.camera.sensor_width = 23.10 -bpy.context.camera.sensor_height = 12.99 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +camera = bpy.context.edit_movieclip.tracking.camera + +camera.sensor_width = 23.10 +camera.units = 'MILLIMETERS' +camera.pixel_aspect = 1 diff --git a/release/scripts/presets/tracking_camera/Blackmagic_URSA_4.6K.py b/release/scripts/presets/tracking_camera/Blackmagic_URSA_4.6K.py index 767d16984d8..7d08928e5fb 100644 --- a/release/scripts/presets/tracking_camera/Blackmagic_URSA_4.6K.py +++ b/release/scripts/presets/tracking_camera/Blackmagic_URSA_4.6K.py @@ -1,4 +1,6 @@ import bpy -bpy.context.camera.sensor_width = 25.34 -bpy.context.camera.sensor_height = 14.25 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +camera = bpy.context.edit_movieclip.tracking.camera + +camera.sensor_width = 25.34 +camera.units = 'MILLIMETERS' +camera.pixel_aspect = 1 diff --git a/release/scripts/presets/tracking_camera/Foveon_(Sigma).py b/release/scripts/presets/tracking_camera/Foveon_(Sigma).py index 6b35f29acaf..1184438bcd8 100644 --- a/release/scripts/presets/tracking_camera/Foveon_(Sigma).py +++ b/release/scripts/presets/tracking_camera/Foveon_(Sigma).py @@ -1,4 +1,6 @@ import bpy -bpy.context.camera.sensor_width = 20.70 -bpy.context.camera.sensor_height = 13.80 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +camera = bpy.context.edit_movieclip.tracking.camera + +camera.sensor_width = 20.70 +camera.units = 'MILLIMETERS' +camera.pixel_aspect = 1 diff --git a/release/scripts/presets/tracking_camera/Fullframe.py b/release/scripts/presets/tracking_camera/Fullframe.py index c8017331b28..68df71b384e 100644 --- a/release/scripts/presets/tracking_camera/Fullframe.py +++ b/release/scripts/presets/tracking_camera/Fullframe.py @@ -1,4 +1,6 @@ import bpy -bpy.context.camera.sensor_width = 36 -bpy.context.camera.sensor_height = 24 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +camera = bpy.context.edit_movieclip.tracking.camera + +camera.sensor_width = 36 +camera.units = 'MILLIMETERS' +camera.pixel_aspect = 1 diff --git a/release/scripts/presets/tracking_camera/MFT.py b/release/scripts/presets/tracking_camera/MFT.py index 7441f1aea76..eabd22a795c 100644 --- a/release/scripts/presets/tracking_camera/MFT.py +++ b/release/scripts/presets/tracking_camera/MFT.py @@ -1,4 +1,6 @@ import bpy -bpy.context.camera.sensor_width = 17.3 -bpy.context.camera.sensor_height = 13.0 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +camera = bpy.context.edit_movieclip.tracking.camera + +camera.sensor_width = 17.3 +camera.units = 'MILLIMETERS' +camera.pixel_aspect = 1 diff --git a/release/scripts/presets/tracking_camera/Medium-format_(Hasselblad).py b/release/scripts/presets/tracking_camera/Medium-format_(Hasselblad).py index d03a4f22db7..65152877de9 100644 --- a/release/scripts/presets/tracking_camera/Medium-format_(Hasselblad).py +++ b/release/scripts/presets/tracking_camera/Medium-format_(Hasselblad).py @@ -1,4 +1,6 @@ import bpy -bpy.context.camera.sensor_width = 44 -bpy.context.camera.sensor_height = 33 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +camera = bpy.context.edit_movieclip.tracking.camera + +camera.sensor_width = 44 +camera.units = 'MILLIMETERS' +camera.pixel_aspect = 1 diff --git a/release/scripts/presets/tracking_camera/RED_Dragon_5K.py b/release/scripts/presets/tracking_camera/RED_Dragon_5K.py index e8b990d4d00..57366c7e7ad 100644 --- a/release/scripts/presets/tracking_camera/RED_Dragon_5K.py +++ b/release/scripts/presets/tracking_camera/RED_Dragon_5K.py @@ -1,4 +1,6 @@ import bpy -bpy.context.camera.sensor_width = 25.60 -bpy.context.camera.sensor_height = 13.5 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +camera = bpy.context.edit_movieclip.tracking.camera + +camera.sensor_width = 25.60 +camera.units = 'MILLIMETERS' +camera.pixel_aspect = 1 diff --git a/release/scripts/presets/tracking_camera/RED_Dragon_6K.py b/release/scripts/presets/tracking_camera/RED_Dragon_6K.py index 982e2ab8e00..2336ebc6b20 100644 --- a/release/scripts/presets/tracking_camera/RED_Dragon_6K.py +++ b/release/scripts/presets/tracking_camera/RED_Dragon_6K.py @@ -1,4 +1,6 @@ import bpy -bpy.context.camera.sensor_width = 30.70 -bpy.context.camera.sensor_height = 15.80 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +camera = bpy.context.edit_movieclip.tracking.camera + +camera.sensor_width = 30.70 +camera.units = 'MILLIMETERS' +camera.pixel_aspect = 1 diff --git a/release/scripts/presets/tracking_camera/RED_Helium_8K.py b/release/scripts/presets/tracking_camera/RED_Helium_8K.py index 90998bc0da0..223471beaa1 100644 --- a/release/scripts/presets/tracking_camera/RED_Helium_8K.py +++ b/release/scripts/presets/tracking_camera/RED_Helium_8K.py @@ -1,4 +1,6 @@ import bpy -bpy.context.camera.sensor_width = 29.90 -bpy.context.camera.sensor_height = 15.77 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +camera = bpy.context.edit_movieclip.tracking.camera + +camera.sensor_width = 29.90 +camera.units = 'MILLIMETERS' +camera.pixel_aspect = 1 diff --git a/release/scripts/presets/tracking_camera/RED_Monstro_8K.py b/release/scripts/presets/tracking_camera/RED_Monstro_8K.py index 1c8bc11dfaa..7a221ed55c1 100644 --- a/release/scripts/presets/tracking_camera/RED_Monstro_8K.py +++ b/release/scripts/presets/tracking_camera/RED_Monstro_8K.py @@ -1,4 +1,6 @@ import bpy -bpy.context.camera.sensor_width = 40.96 -bpy.context.camera.sensor_height = 21.60 -bpy.context.camera.sensor_fit = 'HORIZONTAL' +camera = bpy.context.edit_movieclip.tracking.camera + +camera.sensor_width = 40.96 +camera.units = 'MILLIMETERS' +camera.pixel_aspect = 1 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 f8b504b2e34..c8328f5ee42 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 @@ -54,26 +54,11 @@ def update_factory_startup_grease_pencils(): gpd.onion_keyframe_type = 'ALL' -def update_factory_startup_theme(): - # To prevent saving over the current theme Preferences, - # store the current state of use_preferences_save to use later. - preferences = bpy.context.preferences - save_preferences_state = preferences.use_preferences_save - - # Turn use_preferences_save off and set header background alpha. - preferences.use_preferences_save = False - preferences.themes['Default'].view_3d.space.header[3] = 0.8 - - # Restore the original use_preferences_save status. - preferences.use_preferences_save = save_preferences_state - - @persistent def load_handler(_): update_factory_startup_screens() update_factory_startup_scenes() update_factory_startup_grease_pencils() - update_factory_startup_theme() def register(): diff --git a/release/scripts/startup/bl_operators/assets.py b/release/scripts/startup/bl_operators/assets.py index a8ee44037d6..58f02201905 100644 --- a/release/scripts/startup/bl_operators/assets.py +++ b/release/scripts/startup/bl_operators/assets.py @@ -148,6 +148,8 @@ class ASSET_OT_open_containing_blend_file(Operator): bpy.ops.file.refresh() if bpy.ops.asset.list_refresh.poll(): bpy.ops.asset.list_refresh() + if bpy.ops.file.asset_library_refresh.poll(): + bpy.ops.file.asset_library_refresh() self.cancel(context) return {'FINISHED'} diff --git a/release/scripts/startup/bl_operators/file.py b/release/scripts/startup/bl_operators/file.py index 672a4170325..4c53279427a 100644 --- a/release/scripts/startup/bl_operators/file.py +++ b/release/scripts/startup/bl_operators/file.py @@ -43,22 +43,30 @@ class WM_OT_previews_batch_generate(Operator): files: CollectionProperty( type=OperatorFileListElement, options={'HIDDEN', 'SKIP_SAVE'}, + name="", + description="Collection of file paths with common `directory` root", ) directory: StringProperty( maxlen=1024, subtype='FILE_PATH', options={'HIDDEN', 'SKIP_SAVE'}, + name="", + description="Root path of all files listed in `files` collection", ) # Show only images/videos, and directories! filter_blender: BoolProperty( default=True, options={'HIDDEN', 'SKIP_SAVE'}, + name="", + description="Show Blender files in the File Browser", ) filter_folder: BoolProperty( default=True, options={'HIDDEN', 'SKIP_SAVE'}, + name="", + description="Show folders in the File Browser", ) # ----------- diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py index 28bb0a58c02..d9ea991f976 100644 --- a/release/scripts/startup/bl_operators/wm.py +++ b/release/scripts/startup/bl_operators/wm.py @@ -1030,7 +1030,7 @@ class WM_OT_url_open_preset(Operator): "Report a bug in an add-on"), _url_from_bug_addon), (('RELEASE_NOTES', "Release Notes", - "Read about whats new in this version of Blender"), + "Read about what's new in this version of Blender"), _url_from_release_notes), (('MANUAL', "Manual", "The reference manual for this version of Blender"), @@ -1430,7 +1430,7 @@ class WM_OT_properties_edit(Operator): type_items = rna_custom_property_type_items subtype_items = rna_vector_subtype_items - # Helper method to avoid repetative code to retrieve a single value from sequences and non-sequences. + # Helper method to avoid repetitive code to retrieve a single value from sequences and non-sequences. @staticmethod def _convert_new_value_single(old_value, new_type): if hasattr(old_value, "__len__") and len(old_value) > 0: diff --git a/release/scripts/startup/bl_ui/properties_data_armature.py b/release/scripts/startup/bl_ui/properties_data_armature.py index 87572fcd438..22f3d1a9c50 100644 --- a/release/scripts/startup/bl_ui/properties_data_armature.py +++ b/release/scripts/startup/bl_ui/properties_data_armature.py @@ -220,6 +220,7 @@ class DATA_PT_pose_library(ArmatureButtonsPanel, Panel): ).pose_index = poselib.pose_markers.active_index col.operator("poselib.action_sanitize", icon='HELP', text="") # XXX: put in menu? + col.operator("poselib.convert_old_poselib", icon='ASSET_MANAGER', text="") if pose_marker_active is not None: col.operator("poselib.pose_move", icon='TRIA_UP', text="").direction = 'UP' diff --git a/release/scripts/startup/bl_ui/properties_data_gpencil.py b/release/scripts/startup/bl_ui/properties_data_gpencil.py index 793c4a52350..34e83573bc9 100644 --- a/release/scripts/startup/bl_ui/properties_data_gpencil.py +++ b/release/scripts/startup/bl_ui/properties_data_gpencil.py @@ -110,7 +110,8 @@ class GPENCIL_MT_layer_context_menu(Menu): layout.separator() - layout.operator("gpencil.layer_merge", icon='SORT_ASC', text="Merge Down") + layout.operator("gpencil.layer_merge", icon='SORT_ASC', text="Merge Down").mode = 'ACTIVE' + layout.operator("gpencil.layer_merge", text="Merge All").mode = 'ALL' layout.separator() layout.operator("gpencil.layer_duplicate_object", text="Copy Layer to Selected").only_active = True diff --git a/release/scripts/startup/bl_ui/properties_freestyle.py b/release/scripts/startup/bl_ui/properties_freestyle.py index 4519390f953..802812020b7 100644 --- a/release/scripts/startup/bl_ui/properties_freestyle.py +++ b/release/scripts/startup/bl_ui/properties_freestyle.py @@ -526,7 +526,7 @@ class VIEWLAYER_PT_freestyle_linestyle_strokes(ViewLayerFreestyleLineStyle, Pane row = layout.row(align=True) row.alignment = 'LEFT' row.label(text=lineset.name, icon='LINE_DATA') - row.label(text="", icon='SMALL_TRI_RIGHT_VEC') + row.label(text="", icon='RIGHTARROW') row.label(text=linestyle.name) col = layout.column(align=True) @@ -830,7 +830,7 @@ class VIEWLAYER_PT_freestyle_linestyle_color(ViewLayerFreestyleLineStyle, Panel) row = layout.row(align=True) row.alignment = 'LEFT' row.label(text=lineset.name, icon='LINE_DATA') - row.label(text="", icon='SMALL_TRI_RIGHT_VEC') + row.label(text="", icon='RIGHTARROW') row.label(text=linestyle.name) col = layout.column() @@ -922,7 +922,7 @@ class VIEWLAYER_PT_freestyle_linestyle_alpha(ViewLayerFreestyleLineStyle, Panel) row = layout.row(align=True) row.alignment = 'LEFT' row.label(text=lineset.name, icon='LINE_DATA') - row.label(text="", icon='SMALL_TRI_RIGHT_VEC') + row.label(text="", icon='RIGHTARROW') row.label(text=linestyle.name) col = layout.column() @@ -1036,7 +1036,7 @@ class VIEWLAYER_PT_freestyle_linestyle_thickness(ViewLayerFreestyleLineStyle, Pa row = layout.row(align=True) row.alignment = 'LEFT' row.label(text=lineset.name, icon='LINE_DATA') - row.label(text="", icon='SMALL_TRI_RIGHT_VEC') + row.label(text="", icon='RIGHTARROW') row.label(text=linestyle.name) col = layout.column() @@ -1182,7 +1182,7 @@ class VIEWLAYER_PT_freestyle_linestyle_geometry(ViewLayerFreestyleLineStyle, Pan row = layout.row(align=True) row.alignment = 'LEFT' row.label(text=lineset.name, icon='LINE_DATA') - row.label(text="", icon='SMALL_TRI_RIGHT_VEC') + row.label(text="", icon='RIGHTARROW') row.label(text=linestyle.name) col = layout.column() @@ -1215,7 +1215,7 @@ class VIEWLAYER_PT_freestyle_linestyle_texture(ViewLayerFreestyleLineStyle, Pane row = layout.row(align=True) row.alignment = 'LEFT' row.label(text=lineset.name, icon='LINE_DATA') - row.label(text="", icon='SMALL_TRI_RIGHT_VEC') + row.label(text="", icon='RIGHTARROW') row.label(text=linestyle.name) layout.prop(linestyle, "use_nodes") diff --git a/release/scripts/startup/bl_ui/properties_paint_common.py b/release/scripts/startup/bl_ui/properties_paint_common.py index 14aacf3a47a..49effabc5cf 100644 --- a/release/scripts/startup/bl_ui/properties_paint_common.py +++ b/release/scripts/startup/bl_ui/properties_paint_common.py @@ -496,7 +496,7 @@ class DisplayPanel(BrushPanel): icon='HIDE_OFF' if brush.use_cursor_overlay else 'HIDE_ON', ) - if mode in ['PAINT_2D', 'PAINT_TEXTURE', 'PAINT_VERTEX', 'SCULPT']: + if mode in {'PAINT_2D', 'PAINT_TEXTURE', 'PAINT_VERTEX', 'SCULPT'}: row = col.row(align=True) row.prop(brush, "texture_overlay_alpha", text="Texture Opacity") row.prop(brush, "use_primary_overlay_override", toggle=True, text="", icon='BRUSH_DATA') @@ -506,7 +506,7 @@ class DisplayPanel(BrushPanel): icon='HIDE_OFF' if brush.use_primary_overlay else 'HIDE_ON', ) - if mode in ['PAINT_TEXTURE', 'PAINT_2D']: + if mode in {'PAINT_TEXTURE', 'PAINT_2D'}: row = col.row(align=True) row.prop(brush, "mask_overlay_alpha", text="Mask Texture Opacity") row.prop(brush, "use_secondary_overlay_override", toggle=True, text="", icon='BRUSH_DATA') diff --git a/release/scripts/startup/bl_ui/properties_physics_rigidbody.py b/release/scripts/startup/bl_ui/properties_physics_rigidbody.py index 26fe215b17d..9afe8415cf4 100644 --- a/release/scripts/startup/bl_ui/properties_physics_rigidbody.py +++ b/release/scripts/startup/bl_ui/properties_physics_rigidbody.py @@ -261,7 +261,7 @@ class PHYSICS_PT_rigid_body_dynamics(PHYSICS_PT_rigidbody_panel, Panel): # col = layout.column(align=True) # col.label(text="Activation:") - # XXX: settings such as activate on collison/etc. + # XXX: settings such as activate on collision/etc. col = flow.column() col.prop(rbo, "linear_damping", text="Damping Translation") diff --git a/release/scripts/startup/bl_ui/properties_view_layer.py b/release/scripts/startup/bl_ui/properties_view_layer.py index 6b130d7353d..3ced6a31db5 100644 --- a/release/scripts/startup/bl_ui/properties_view_layer.py +++ b/release/scripts/startup/bl_ui/properties_view_layer.py @@ -193,6 +193,10 @@ class ViewLayerCryptomattePanel(ViewLayerButtonsPanel, Panel): view_layer.use_pass_cryptomatte_asset)) col.prop(view_layer, "pass_cryptomatte_depth", text="Levels") + if context.engine == 'BLENDER_EEVEE': + col.prop(view_layer, "use_pass_cryptomatte_accurate", + text="Accurate Mode") + class VIEWLAYER_PT_layer_passes_cryptomatte(ViewLayerCryptomattePanel, Panel): bl_parent_id = "VIEWLAYER_PT_layer_passes" diff --git a/release/scripts/startup/bl_ui/space_clip.py b/release/scripts/startup/bl_ui/space_clip.py index c18d77987ad..86e9ef3d664 100644 --- a/release/scripts/startup/bl_ui/space_clip.py +++ b/release/scripts/startup/bl_ui/space_clip.py @@ -1858,6 +1858,43 @@ class CLIP_MT_reconstruction_pie(Menu): pie.operator("clip.apply_solution_scale", icon='ARROW_LEFTRIGHT') +class CLIP_MT_view_pie(Menu): + bl_label = "View" + + @classmethod + def poll(cls, context): + space = context.space_data + + # View operators are not yet implemented in Dopesheet mode. + return space.view != 'DOPESHEET' + + def draw(self, context): + layout = self.layout + sc = context.space_data + + pie = layout.menu_pie() + + if sc.view == 'CLIP': + pie.operator("clip.view_all") + pie.operator("clip.view_selected", icon='ZOOM_SELECTED') + + if sc.mode == 'MASK': + pie.operator("clip.view_center_cursor") + pie.separator() + else: + # Add spaces so items stay in the same position through all modes. + pie.separator() + pie.separator() + + pie.operator("clip.view_all", text="Frame All Fit").fit_view = True + + if sc.view == 'GRAPH': + pie.operator_context = 'INVOKE_REGION_PREVIEW' + pie.operator("clip.graph_view_all") + pie.separator() + pie.operator("clip.graph_center_current_frame") + + classes = ( CLIP_UL_tracking_objects, CLIP_HT_header, @@ -1925,6 +1962,7 @@ classes = ( CLIP_MT_tracking_pie, CLIP_MT_reconstruction_pie, CLIP_MT_solving_pie, + CLIP_MT_view_pie, ) if __name__ == "__main__": # only for live edit. diff --git a/release/scripts/startup/bl_ui/space_dopesheet.py b/release/scripts/startup/bl_ui/space_dopesheet.py index 781c430a752..9b8f1cfeb0d 100644 --- a/release/scripts/startup/bl_ui/space_dopesheet.py +++ b/release/scripts/startup/bl_ui/space_dopesheet.py @@ -379,6 +379,18 @@ class DOPESHEET_MT_view(Menu): layout.menu("INFO_MT_area") +class DOPESHEET_MT_view_pie(Menu): + bl_label = "View" + + def draw(self, context): + layout = self.layout + + pie = layout.menu_pie() + pie.operator("action.view_all") + pie.operator("action.view_selected", icon='ZOOM_SELECTED') + pie.operator("action.view_frame") + + class DOPESHEET_MT_select(Menu): bl_label = "Select" @@ -778,6 +790,7 @@ classes = ( DOPESHEET_MT_context_menu, DOPESHEET_MT_channel_context_menu, DOPESHEET_MT_snap_pie, + DOPESHEET_MT_view_pie, DOPESHEET_PT_filters, DOPESHEET_PT_gpencil_mode, DOPESHEET_PT_gpencil_layer_masks, diff --git a/release/scripts/startup/bl_ui/space_filebrowser.py b/release/scripts/startup/bl_ui/space_filebrowser.py index 05f505c518d..f601c795660 100644 --- a/release/scripts/startup/bl_ui/space_filebrowser.py +++ b/release/scripts/startup/bl_ui/space_filebrowser.py @@ -707,7 +707,8 @@ class ASSETBROWSER_PT_metadata(asset_utils.AssetBrowserPanel, Panel): asset_library_ref = context.asset_library_ref asset_lib_path = bpy.types.AssetHandle.get_full_library_path(asset_file_handle, asset_library_ref) - show_developer_ui = context.preferences.view.show_developer_ui + prefs = context.preferences + show_asset_debug_info = prefs.view.show_developer_ui and prefs.experimental.show_asset_debug_info layout.use_property_split = True layout.use_property_decorate = False # No animation. @@ -716,7 +717,7 @@ class ASSETBROWSER_PT_metadata(asset_utils.AssetBrowserPanel, Panel): # If the active file is an ID, use its name directly so renaming is possible from right here. layout.prop(asset_file_handle.local_id, "name") - if show_developer_ui: + if show_asset_debug_info: col = layout.column(align=True) col.label(text="Asset Catalog:") col.prop(asset_file_handle.local_id.asset_data, "catalog_id", text="UUID") @@ -724,7 +725,7 @@ class ASSETBROWSER_PT_metadata(asset_utils.AssetBrowserPanel, Panel): else: layout.prop(asset_file_handle, "name") - if show_developer_ui: + if show_asset_debug_info: col = layout.column(align=True) col.enabled = False col.label(text="Asset Catalog:") diff --git a/release/scripts/startup/bl_ui/space_graph.py b/release/scripts/startup/bl_ui/space_graph.py index 612b7ba2b09..1562870d64f 100644 --- a/release/scripts/startup/bl_ui/space_graph.py +++ b/release/scripts/startup/bl_ui/space_graph.py @@ -338,6 +338,18 @@ class GRAPH_MT_key_snap(Menu): layout.operator("graph.snap_cursor_value", text="Cursor Value to Selection") +class GRAPH_MT_view_pie(Menu): + bl_label = "View" + + def draw(self, context): + layout = self.layout + + pie = layout.menu_pie() + pie.operator("graph.view_all") + pie.operator("graph.view_selected", icon='ZOOM_SELECTED') + pie.operator("graph.view_frame") + + class GRAPH_MT_delete(Menu): bl_label = "Delete" @@ -468,6 +480,7 @@ classes = ( GRAPH_MT_channel_context_menu, GRAPH_MT_pivot_pie, GRAPH_MT_snap_pie, + GRAPH_MT_view_pie, GRAPH_PT_filters, ) diff --git a/release/scripts/startup/bl_ui/space_image.py b/release/scripts/startup/bl_ui/space_image.py index 6a769b1aecc..8e82b07716c 100644 --- a/release/scripts/startup/bl_ui/space_image.py +++ b/release/scripts/startup/bl_ui/space_image.py @@ -591,6 +591,31 @@ class IMAGE_MT_uvs_snap_pie(Menu): ).target = 'ADJACENT_UNSELECTED' +class IMAGE_MT_view_pie(Menu): + bl_label = "View" + + def draw(self, context): + layout = self.layout + + sima = context.space_data + show_uvedit = sima.show_uvedit + show_maskedit = sima.show_maskedit + + pie = layout.menu_pie() + pie.operator("image.view_all") + + if show_uvedit or show_maskedit: + pie.operator("image.view_selected", text="Frame Selected", icon='ZOOM_SELECTED') + pie.operator("image.view_center_cursor", text="Center View to Cursor") + else: + # Add spaces so items stay in the same position through all modes. + pie.separator() + pie.separator() + + pie.operator("image.view_zoom_ratio", text="Zoom 1:1").ratio = 1 + pie.operator("image.view_all", text="Frame All Fit").fit_view = True + + class IMAGE_HT_tool_header(Header): bl_space_type = 'IMAGE_EDITOR' bl_region_type = 'TOOL_HEADER' @@ -1633,6 +1658,7 @@ classes = ( IMAGE_MT_mask_context_menu, IMAGE_MT_pivot_pie, IMAGE_MT_uvs_snap_pie, + IMAGE_MT_view_pie, IMAGE_HT_tool_header, IMAGE_HT_header, IMAGE_MT_editor_menus, diff --git a/release/scripts/startup/bl_ui/space_nla.py b/release/scripts/startup/bl_ui/space_nla.py index d472352084c..9507d8296a9 100644 --- a/release/scripts/startup/bl_ui/space_nla.py +++ b/release/scripts/startup/bl_ui/space_nla.py @@ -247,6 +247,18 @@ class NLA_MT_snap_pie(Menu): pie.operator("nla.snap", text="Selection to Nearest Marker").type = 'NEAREST_MARKER' +class NLA_MT_view_pie(Menu): + bl_label = "View" + + def draw(self, context): + layout = self.layout + + pie = layout.menu_pie() + pie.operator("nla.view_all") + pie.operator("nla.view_selected", icon='ZOOM_SELECTED') + pie.operator("nla.view_frame") + + class NLA_MT_context_menu(Menu): bl_label = "NLA Context Menu" @@ -300,6 +312,7 @@ classes = ( NLA_MT_add, NLA_MT_edit_transform, NLA_MT_snap_pie, + NLA_MT_view_pie, NLA_MT_context_menu, NLA_MT_channel_context_menu, NLA_PT_filters, diff --git a/release/scripts/startup/bl_ui/space_node.py b/release/scripts/startup/bl_ui/space_node.py index 2fda13184da..2b3f0cfbf7c 100644 --- a/release/scripts/startup/bl_ui/space_node.py +++ b/release/scripts/startup/bl_ui/space_node.py @@ -367,6 +367,17 @@ class NODE_MT_node(Menu): layout.operator("node.read_viewlayers") +class NODE_MT_view_pie(Menu): + bl_label = "View" + + def draw(self, context): + layout = self.layout + + pie = layout.menu_pie() + pie.operator("node.view_all") + pie.operator("node.view_selected", icon='ZOOM_SELECTED') + + class NODE_PT_active_tool(ToolActivePanelHelper, Panel): bl_space_type = 'NODE_EDITOR' bl_region_type = 'UI' @@ -877,6 +888,7 @@ classes = ( NODE_MT_node, NODE_MT_node_color_context_menu, NODE_MT_context_menu, + NODE_MT_view_pie, NODE_PT_material_slots, NODE_PT_node_color_presets, NODE_PT_active_node_generic, diff --git a/release/scripts/startup/bl_ui/space_outliner.py b/release/scripts/startup/bl_ui/space_outliner.py index 07fa2220915..d85538a37e0 100644 --- a/release/scripts/startup/bl_ui/space_outliner.py +++ b/release/scripts/startup/bl_ui/space_outliner.py @@ -142,6 +142,17 @@ class OUTLINER_MT_context_menu_view(Menu): layout.operator("outliner.show_one_level", text="Hide One Level").open = False +class OUTLINER_MT_view_pie(Menu): + bl_label = "View" + + def draw(self, context): + layout = self.layout + + pie = layout.menu_pie() + pie.operator("outliner.show_hierarchy") + pie.operator("outliner.show_active", icon='ZOOM_SELECTED') + + class OUTLINER_MT_edit_datablocks(Menu): bl_label = "Edit" @@ -471,6 +482,7 @@ classes = ( OUTLINER_MT_asset, OUTLINER_MT_context_menu, OUTLINER_MT_context_menu_view, + OUTLINER_MT_view_pie, OUTLINER_PT_filter, ) diff --git a/release/scripts/startup/bl_ui/space_sequencer.py b/release/scripts/startup/bl_ui/space_sequencer.py index 6a4babfff8a..401ff9b64c2 100644 --- a/release/scripts/startup/bl_ui/space_sequencer.py +++ b/release/scripts/startup/bl_ui/space_sequencer.py @@ -254,7 +254,7 @@ class SEQUENCER_MT_editor_menus(Menu): class SEQUENCER_PT_gizmo_display(Panel): bl_space_type = 'SEQUENCE_EDITOR' bl_region_type = 'HEADER' - bl_label = "Gizmo" + bl_label = "Gizmos" bl_ui_units_x = 8 def draw(self, context): @@ -1173,6 +1173,31 @@ class SEQUENCER_MT_pivot_pie(Menu): pie.prop_enum(sequencer_tool_settings, "pivot_point", value='MEDIAN') +class SEQUENCER_MT_view_pie(Menu): + bl_label = "View" + + def draw(self, context): + layout = self.layout + + pie = layout.menu_pie() + pie.operator("sequencer.view_all") + pie.operator("sequencer.view_selected", text="Frame Selected", icon='ZOOM_SELECTED') + + +class SEQUENCER_MT_preview_view_pie(Menu): + bl_label = "View" + + def draw(self, context): + layout = self.layout + + pie = layout.menu_pie() + pie.operator_context = 'INVOKE_REGION_PREVIEW' + pie.operator("sequencer.view_all_preview") + pie.operator("sequencer.view_selected", text="Frame Selected", icon='ZOOM_SELECTED') + pie.separator() + pie.operator("sequencer.view_zoom_ratio", text="Zoom 1:1").ratio = 1 + + class SequencerButtonsPanel: bl_space_type = 'SEQUENCE_EDITOR' bl_region_type = 'UI' @@ -2615,6 +2640,8 @@ classes = ( SEQUENCER_MT_context_menu, SEQUENCER_MT_preview_context_menu, SEQUENCER_MT_pivot_pie, + SEQUENCER_MT_view_pie, + SEQUENCER_MT_preview_view_pie, SEQUENCER_PT_color_tag_picker, diff --git a/release/scripts/startup/bl_ui/space_toolsystem_common.py b/release/scripts/startup/bl_ui/space_toolsystem_common.py index 4305476cb0f..c4dabb5b5bc 100644 --- a/release/scripts/startup/bl_ui/space_toolsystem_common.py +++ b/release/scripts/startup/bl_ui/space_toolsystem_common.py @@ -64,7 +64,7 @@ from collections import namedtuple ToolDef = namedtuple( "ToolDef", ( - # Unique tool name (withing space & mode context). + # Unique tool name (within space & mode context). "idname", # The name to display in the interface. "label", @@ -106,7 +106,7 @@ ToolDef = namedtuple( # Keep this functionality since it's likely useful for add-on key-maps. # # Warning: currently 'from_dict' this is a list of one item, - # so internally we can swap the key-map function for the key-map it's self. + # so internally we can swap the key-map function for the key-map itself. # This isn't very nice and may change, tool definitions shouldn't care about this. "keymap", # Optional data-block associated with this tool. @@ -202,13 +202,41 @@ class ToolSelectPanelHelper: - keymap_prefix: The text prefix for each key-map for this spaces tools. - tools_all(): - Returns (context_mode, tools) tuple pair for all tools defined. + Generator (context_mode, tools) tuple pairs for all tools defined. - tools_from_context(context, mode=None): - Returns tools available in this context. + A generator for all tools available in the current context. - Each tool is a 'ToolDef' or None for a separator in the toolbar, use ``None``. + Tool Sequence Structure + ======================= + + Sequences of tools as returned by tools_all() and tools_from_context() are comprised of: + + - A `ToolDef` instance (representing a tool that can be activated). + - None (a visual separator in the tool list). + - A tuple of `ToolDef` or None values + (representing a group of tools that can be selected between using a click-drag action). + Note that only a single level of nesting is supported (groups cannot contain sub-groups). + - A callable which takes a single context argument and returns a tuple of values described above. + When the context is None, all potential tools must be returned. """ + @classmethod + def tools_all(cls): + """ + Return all tools for this toolbar, this must include all available tools ignoring the current context. + The value is must be a sequence of (mode, tool_list) pairs, where mode may be object-mode edit-mode etc. + The mode may be None for tool-bars that don't make use of sub-modes. + """ + raise Exception("Sub-class %r must implement this method!" % cls) + + @classmethod + def tools_from_context(cls, context, mode=None): + """ + Return all tools for the current context, + this result is used at run-time and may filter out tools to display. + """ + raise Exception("Sub-class %r must implement this method!" % cls) + @staticmethod def _tool_class_from_space_type(space_type): return next( diff --git a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py index 1a448046f7a..2253dfa5f5d 100644 --- a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py +++ b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py @@ -2583,7 +2583,8 @@ class IMAGE_PT_tools_active(ToolSelectPanelHelper, Panel): def tools_all(cls): yield from cls._tools.items() - # for reuse + # Private tool lists for convenient reuse in `_tools`. + _tools_transform = ( _defs_image_uv_transform.translate, _defs_image_uv_transform.rotate, @@ -2609,6 +2610,9 @@ class IMAGE_PT_tools_active(ToolSelectPanelHelper, Panel): ), ) + # Private tools dictionary, store data to implement `tools_all` & `tools_from_context`. + # The keys match image spaces modes: 'context.space_data.mode'. + # The values represent the tools, see `ToolSelectPanelHelper` for details. _tools = { None: [ # for all modes @@ -2674,6 +2678,8 @@ class NODE_PT_tools_active(ToolSelectPanelHelper, Panel): def tools_all(cls): yield from cls._tools.items() + # Private tool lists for convenient reuse in `_tools`. + _tools_select = ( ( _defs_node_select.select, @@ -2692,6 +2698,9 @@ class NODE_PT_tools_active(ToolSelectPanelHelper, Panel): ), ) + # Private tools dictionary, store data to implement `tools_all` & `tools_from_context`. + # The keys is always `None` since nodes don't use use modes to access different tools. + # The values represent the tools, see `ToolSelectPanelHelper` for details. _tools = { None: [ *_tools_select, @@ -2730,7 +2739,8 @@ class VIEW3D_PT_tools_active(ToolSelectPanelHelper, Panel): def tools_all(cls): yield from cls._tools.items() - # for reuse + # Private tool lists for convenient reuse in `_tools`. + _tools_transform = ( _defs_transform.translate, _defs_transform.rotate, @@ -2786,6 +2796,9 @@ class VIEW3D_PT_tools_active(ToolSelectPanelHelper, Panel): _defs_view3d_generic.ruler, ) + # Private tools dictionary, store data to implement `tools_all` & `tools_from_context`. + # The keys match object-modes from: 'context.mode'. + # The values represent the tools, see `ToolSelectPanelHelper` for details. _tools = { None: [ # Don't use this! because of paint modes. @@ -2988,7 +3001,11 @@ class VIEW3D_PT_tools_active(ToolSelectPanelHelper, Panel): ), None, lambda context: ( - (_defs_view3d_generic.cursor,) + ( + _defs_view3d_generic.cursor, + None, + *VIEW3D_PT_tools_active._tools_transform, + ) if context is None or context.pose_object else () ), @@ -3095,6 +3112,8 @@ class SEQUENCER_PT_tools_active(ToolSelectPanelHelper, Panel): def tools_all(cls): yield from cls._tools.items() + # Private tool lists for convenient reuse in `_tools`. + _tools_select = ( ( _defs_sequencer_select.select, @@ -3110,6 +3129,9 @@ class SEQUENCER_PT_tools_active(ToolSelectPanelHelper, Panel): ), ) + # Private tools dictionary, store data to implement `tools_all` & `tools_from_context`. + # The keys match sequence editors view type: 'context.space_data.view_type'. + # The values represent the tools, see `ToolSelectPanelHelper` for details. _tools = { None: [ ], diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py index abd235f1c44..5032256e4d1 100644 --- a/release/scripts/startup/bl_ui/space_userpref.py +++ b/release/scripts/startup/bl_ui/space_userpref.py @@ -477,6 +477,16 @@ class USERPREF_PT_edit_weight_paint(EditingPanel, CenterAlignMixIn, Panel): col.active = view.use_weight_color_range col.template_color_ramp(view, "weight_color_range", expand=True) +class USERPREF_PT_edit_text_editor(EditingPanel, CenterAlignMixIn, Panel): + bl_label = "Text Editor" + bl_options = {'DEFAULT_CLOSED'} + + def draw_centered(self, context, layout): + prefs = context.preferences + edit = prefs.edit + + layout.prop(edit, "use_text_edit_auto_close") + class USERPREF_PT_edit_misc(EditingPanel, CenterAlignMixIn, Panel): bl_label = "Miscellaneous" @@ -2316,6 +2326,7 @@ class USERPREF_PT_experimental_debugging(ExperimentalPanel, Panel): ({"property": "proxy_to_override_auto_conversion"}, "T91671"), ({"property": "use_cycles_debug"}, None), ({"property": "use_geometry_nodes_legacy"}, "T91274"), + ({"property": "show_asset_debug_info"}, None), ), ) @@ -2357,6 +2368,7 @@ classes = ( USERPREF_PT_edit_annotations, USERPREF_PT_edit_weight_paint, USERPREF_PT_edit_gpencil, + USERPREF_PT_edit_text_editor, USERPREF_PT_edit_misc, USERPREF_PT_animation_timeline, diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index 0172fa0655f..3fd19dd70cf 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -5990,7 +5990,7 @@ class VIEW3D_PT_shading_render_pass(Panel): class VIEW3D_PT_gizmo_display(Panel): bl_space_type = 'VIEW_3D' bl_region_type = 'HEADER' - bl_label = "Gizmo" + bl_label = "Gizmos" bl_ui_units_x = 8 def draw(self, context): diff --git a/release/scripts/templates_py/gizmo_custom_geometry.py b/release/scripts/templates_py/gizmo_custom_geometry.py index 701b1ac48ba..699f856b2a7 100644 --- a/release/scripts/templates_py/gizmo_custom_geometry.py +++ b/release/scripts/templates_py/gizmo_custom_geometry.py @@ -63,7 +63,7 @@ custom_shape_verts = ( class MyCustomShapeWidget(Gizmo): - bl_idname = "VIEW3D_GT_auto_facemap" + bl_idname = "VIEW3D_GT_custom_shape_widget" bl_target_properties = ( {"id": "offset", "type": 'FLOAT', "array_length": 1}, ) diff --git a/release/scripts/templates_py/operator_file_export.py b/release/scripts/templates_py/operator_file_export.py index 45910772dc7..b4d0dc8b698 100644 --- a/release/scripts/templates_py/operator_file_export.py +++ b/release/scripts/templates_py/operator_file_export.py @@ -57,7 +57,7 @@ class ExportSomeData(Operator, ExportHelper): def menu_func_export(self, context): self.layout.operator(ExportSomeData.bl_idname, text="Text Export Operator") - +# Register and add to the "file selector" menu (required to use F3 search "Text Export Operator" for quick access) def register(): bpy.utils.register_class(ExportSomeData) bpy.types.TOPBAR_MT_file_export.append(menu_func_export) diff --git a/release/scripts/templates_py/operator_file_import.py b/release/scripts/templates_py/operator_file_import.py index 5438a7a6f9d..83496fbe17b 100644 --- a/release/scripts/templates_py/operator_file_import.py +++ b/release/scripts/templates_py/operator_file_import.py @@ -60,7 +60,7 @@ class ImportSomeData(Operator, ImportHelper): def menu_func_import(self, context): self.layout.operator(ImportSomeData.bl_idname, text="Text Import Operator") - +# Register and add to the "file selector" menu (required to use F3 search "Text Import Operator" for quick access) def register(): bpy.utils.register_class(ImportSomeData) bpy.types.TOPBAR_MT_file_import.append(menu_func_import) diff --git a/release/scripts/templates_py/operator_mesh_add.py b/release/scripts/templates_py/operator_mesh_add.py index 3fc7636459b..5a6bed92c93 100644 --- a/release/scripts/templates_py/operator_mesh_add.py +++ b/release/scripts/templates_py/operator_mesh_add.py @@ -97,7 +97,7 @@ class AddBox(bpy.types.Operator, AddObjectHelper): def menu_func(self, context): self.layout.operator(AddBox.bl_idname, icon='MESH_CUBE') - +# Register and add to the "add mesh" menu (required to use F3 search "Add Box" for quick access) def register(): bpy.utils.register_class(AddBox) bpy.types.VIEW3D_MT_mesh_add.append(menu_func) diff --git a/release/scripts/templates_py/operator_mesh_uv.py b/release/scripts/templates_py/operator_mesh_uv.py index bf893480f2f..2d4f5b17ba8 100644 --- a/release/scripts/templates_py/operator_mesh_uv.py +++ b/release/scripts/templates_py/operator_mesh_uv.py @@ -33,13 +33,18 @@ class UvOperator(bpy.types.Operator): main(context) return {'FINISHED'} +def menu_func(self, context): + self.layout.operator(UvOperator.bl_idname, text = "Simple UV Operator") +# Register and add to the "UV" menu (required to also use F3 search "Simple UV Operator" for quick access) def register(): bpy.utils.register_class(UvOperator) + bpy.types.IMAGE_MT_uvs.append(menu_func) def unregister(): bpy.utils.unregister_class(UvOperator) + bpy.types.IMAGE_MT_uvs.remove(menu_func) if __name__ == "__main__": diff --git a/release/scripts/templates_py/operator_modal.py b/release/scripts/templates_py/operator_modal.py index c242e3b67b9..41b01e22f78 100644 --- a/release/scripts/templates_py/operator_modal.py +++ b/release/scripts/templates_py/operator_modal.py @@ -35,13 +35,18 @@ class ModalOperator(bpy.types.Operator): self.report({'WARNING'}, "No active object, could not finish") return {'CANCELLED'} +def menu_func(self, context): + self.layout.operator(ModalOperator.bl_idname, text=ModalOperator.bl_label) +# Register and add to the "view" menu (required to also use F3 search "Simple Modal Operator" for quick access) def register(): bpy.utils.register_class(ModalOperator) + bpy.types.VIEW3D_MT_object.append(menu_func) def unregister(): bpy.utils.unregister_class(ModalOperator) + bpy.types.VIEW3D_MT_object.remove(menu_func) if __name__ == "__main__": diff --git a/release/scripts/templates_py/operator_modal_draw.py b/release/scripts/templates_py/operator_modal_draw.py index 16c6f6dbe22..a3f46586cf5 100644 --- a/release/scripts/templates_py/operator_modal_draw.py +++ b/release/scripts/templates_py/operator_modal_draw.py @@ -30,7 +30,7 @@ def draw_callback_px(self, context): class ModalDrawOperator(bpy.types.Operator): """Draw a line with the mouse""" - bl_idname = "view3d.modal_operator" + bl_idname = "view3d.modal_draw_operator" bl_label = "Simple Modal View3D Operator" def modal(self, context, event): @@ -65,13 +65,18 @@ class ModalDrawOperator(bpy.types.Operator): self.report({'WARNING'}, "View3D not found, cannot run operator") return {'CANCELLED'} +def menu_func(self, context): + self.layout.operator(ModalDrawOperator.bl_idname, text = "Modal Draw Operator") +# Register and add to the "view" menu (required to also use F3 search "Modal Draw Operator" for quick access) def register(): bpy.utils.register_class(ModalDrawOperator) + bpy.types.VIEW3D_MT_view.append(menu_func) def unregister(): bpy.utils.unregister_class(ModalDrawOperator) + bpy.types.VIEW3D_MT_view.remove(menu_func) if __name__ == "__main__": diff --git a/release/scripts/templates_py/operator_modal_timer.py b/release/scripts/templates_py/operator_modal_timer.py index 808f1a1299c..11530f18829 100644 --- a/release/scripts/templates_py/operator_modal_timer.py +++ b/release/scripts/templates_py/operator_modal_timer.py @@ -31,13 +31,17 @@ class ModalTimerOperator(bpy.types.Operator): wm = context.window_manager wm.event_timer_remove(self._timer) +def menu_func(self, context): + self.layout.operator(ModalTimerOperator.bl_idname, text=ModalTimerOperator.bl_label) def register(): bpy.utils.register_class(ModalTimerOperator) + bpy.types.VIEW3D_MT_view.append(menu_func) - +# Register and add to the "view" menu (required to also use F3 search "Modal Timer Operator" for quick access) def unregister(): bpy.utils.unregister_class(ModalTimerOperator) + bpy.types.VIEW3D_MT_view.remove(menu_func) if __name__ == "__main__": diff --git a/release/scripts/templates_py/operator_modal_view3d.py b/release/scripts/templates_py/operator_modal_view3d.py index 93c5ae84e2c..5fd47731d0b 100644 --- a/release/scripts/templates_py/operator_modal_view3d.py +++ b/release/scripts/templates_py/operator_modal_view3d.py @@ -57,13 +57,18 @@ class ViewOperator(bpy.types.Operator): self.report({'WARNING'}, "Active space must be a View3d") return {'CANCELLED'} +def menu_func(self, context): + self.layout.operator(ViewOperator.bl_idname, text = "Simple View Modal Operator") +# Register and add to the "view" menu (required to also use F3 search "Simple View Modal Operator" for quick access) def register(): bpy.utils.register_class(ViewOperator) + bpy.types.VIEW3D_MT_view.append(menu_func) def unregister(): bpy.utils.unregister_class(ViewOperator) + bpy.types.VIEW3D_MT_view.remove(menu_func) if __name__ == "__main__": diff --git a/release/scripts/templates_py/operator_modal_view3d_raycast.py b/release/scripts/templates_py/operator_modal_view3d_raycast.py index 9130f47843a..022acc25e14 100644 --- a/release/scripts/templates_py/operator_modal_view3d_raycast.py +++ b/release/scripts/templates_py/operator_modal_view3d_raycast.py @@ -95,13 +95,18 @@ class ViewOperatorRayCast(bpy.types.Operator): self.report({'WARNING'}, "Active space must be a View3d") return {'CANCELLED'} +def menu_func(self, context): + self.layout.operator(ViewOperatorRayCast.bl_idname, text="Raycast View Modal Operator") +# Register and add to the "view" menu (required to also use F3 search "Raycast View Modal Operator" for quick access) def register(): bpy.utils.register_class(ViewOperatorRayCast) + bpy.types.VIEW3D_MT_view.append(menu_func) def unregister(): bpy.utils.unregister_class(ViewOperatorRayCast) + bpy.types.VIEW3D_MT_view.remove(menu_func) if __name__ == "__main__": diff --git a/release/scripts/templates_py/operator_node.py b/release/scripts/templates_py/operator_node.py index 764e50d1697..b5ca491a0fe 100644 --- a/release/scripts/templates_py/operator_node.py +++ b/release/scripts/templates_py/operator_node.py @@ -46,13 +46,18 @@ class NodeOperator(bpy.types.Operator): main(self, context) return {'FINISHED'} +def menu_func(self, context): + self.layout.operator(NodeOperator.bl_idname, text=NodeOperator.bl_label) +# Register and add to the "Node" menu (required to also use F3 search "Simple Node Operator" for quick access) def register(): bpy.utils.register_class(NodeOperator) + bpy.types.NODE_MT_node.append(menu_func) def unregister(): bpy.utils.unregister_class(NodeOperator) + bpy.types.NODE_MT_node.remove(menu_func) if __name__ == "__main__": diff --git a/release/scripts/templates_py/operator_simple.py b/release/scripts/templates_py/operator_simple.py index 715daa3a8b4..9edb07996c0 100644 --- a/release/scripts/templates_py/operator_simple.py +++ b/release/scripts/templates_py/operator_simple.py @@ -19,13 +19,18 @@ class SimpleOperator(bpy.types.Operator): main(context) return {'FINISHED'} +def menu_func(self, context): + self.layout.operator(SimpleOperator.bl_idname, text=SimpleOperator.bl_label) +# Register and add to the "object" menu (required to also use F3 search "Simple Object Operator" for quick access) def register(): bpy.utils.register_class(SimpleOperator) + bpy.types.VIEW3D_MT_object.append(menu_func) def unregister(): bpy.utils.unregister_class(SimpleOperator) + bpy.types.VIEW3D_MT_object.remove(menu_func) if __name__ == "__main__": |