diff options
author | Hans Goudey <h.goudey@me.com> | 2022-10-07 07:26:44 +0300 |
---|---|---|
committer | Hans Goudey <h.goudey@me.com> | 2022-10-07 07:26:44 +0300 |
commit | 2c803124d371bbbd564dd4c5051258f53b799d36 (patch) | |
tree | 2fc642f1aa96ed9464483a7a7c57cf82f7531578 /release | |
parent | 846d8ef8568c035cd7d4e1a8168a4ba391de9119 (diff) | |
parent | cafd204af6d9969654bdee5ae14fef220640487c (diff) |
Merge branch 'master' into refactor-mesh-position-generic
Diffstat (limited to 'release')
17 files changed, 99 insertions, 19 deletions
diff --git a/release/datafiles/blender_icons.svg b/release/datafiles/blender_icons.svg index 41707261ac6..9dc7b184b12 100644 --- a/release/datafiles/blender_icons.svg +++ b/release/datafiles/blender_icons.svg @@ -18997,6 +18997,36 @@ id="path4817-4" inkscape:connector-curvature="0" /> </g> + <g + id="g24638"> + <path + style="color:#000000;fill:none;stroke-linecap:round;-inkscape-stroke:none;opacity:1;stroke:#ffffff;stroke-opacity:1;stroke-linejoin:round" + d="m 374.12695,305.31445 c -1.10721,0 -1.93616,0.24199 -2.97851,0.63086 -1.04236,0.38888 -2.18224,0.95849 -3.30078,1.77735 -2.2371,1.63771 -4.46485,4.54533 -4.46485,8.40625 a 3.0581999,3.0581999 0 0 0 3.0586,3.05859 3.0581999,3.0581999 0 0 0 3.05859,-3.05859 c 0,-1.63187 0.77567,-2.603 1.96094,-3.47071 0.59263,-0.43385 1.26841,-0.77311 1.82422,-0.98047 0.5558,-0.20735 1.10962,-0.24804 0.84179,-0.24804 a 3.0581999,3.0581999 0 0 0 3.05664,-3.0586 3.0581999,3.0581999 0 0 0 -3.05664,-3.05664 z" + id="path6454-6" /> + <path + style="display:inline;opacity:0.5;fill:none;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1;enable-background:new" + d="m 366.4419,316.12916 c 0,-5.49278 6.00534,-7.75723 7.68412,-7.75723" + id="path15424" + sodipodi:nodetypes="cc" /> + </g> + <g + id="g24643"> + <path + style="opacity:0.5;fill:#ffffff;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" + d="m 343.45275,317.52104 4.51631,-3.99333" + id="path4694" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" + d="m 342.44508,318.83525 c 14.125,0.14581 -0.42233,-12.9179 13.5429,-12.85486" + id="path6454" + sodipodi:nodetypes="cc" /> + <path + style="opacity:0.5;fill:#ffffff;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1" + d="m 350.84964,311.18794 4.21454,-3.72502" + id="path19640" + sodipodi:nodetypes="cc" /> + </g> </g> <g inkscape:groupmode="layer" diff --git a/release/datafiles/blender_icons16/icon16_mod_envelope.dat b/release/datafiles/blender_icons16/icon16_mod_envelope.dat Binary files differnew file mode 100644 index 00000000000..7a4a1c2e569 --- /dev/null +++ b/release/datafiles/blender_icons16/icon16_mod_envelope.dat diff --git a/release/datafiles/blender_icons16/icon16_mod_outline.dat b/release/datafiles/blender_icons16/icon16_mod_outline.dat Binary files differnew file mode 100644 index 00000000000..fa15aabec55 --- /dev/null +++ b/release/datafiles/blender_icons16/icon16_mod_outline.dat diff --git a/release/datafiles/blender_icons32/icon32_mod_envelope.dat b/release/datafiles/blender_icons32/icon32_mod_envelope.dat Binary files differnew file mode 100644 index 00000000000..b0799fc33f2 --- /dev/null +++ b/release/datafiles/blender_icons32/icon32_mod_envelope.dat diff --git a/release/datafiles/blender_icons32/icon32_mod_outline.dat b/release/datafiles/blender_icons32/icon32_mod_outline.dat Binary files differnew file mode 100644 index 00000000000..19d31834fcb --- /dev/null +++ b/release/datafiles/blender_icons32/icon32_mod_outline.dat diff --git a/release/scripts/addons b/release/scripts/addons -Subproject 726d08c9036b939f46b59bceb72a61e3102600c +Subproject eb09be71a96c4fe910fdc43373be5ec08b419d2 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 21ca38bff20..18a41d86322 100644 --- a/release/scripts/modules/bl_i18n_utils/bl_extract_messages.py +++ b/release/scripts/modules/bl_i18n_utils/bl_extract_messages.py @@ -978,17 +978,30 @@ def dump_messages(do_messages, do_checks, settings): # Get strings from addons' bl_info. import addon_utils for module in addon_utils.modules(): - if module.bl_info['support'] != 'OFFICIAL': + # Only process official add-ons, i.e. those marked as 'OFFICIAL' and + # existing in the system add-ons directory (not user-installed ones). + if (module.bl_info['support'] != 'OFFICIAL' + or not bpy.path.is_subdir(module.__file__, bpy.utils.system_resource('SCRIPTS'))): continue dump_addon_bl_info(msgs, reports, module, settings) # Get strings from addons' categories. + system_categories = set() + for module in addon_utils.modules(): + if bpy.path.is_subdir(module.__file__, bpy.utils.system_resource('SCRIPTS')): + system_categories.add(module.bl_info['category']) for uid, label, tip in bpy.types.WindowManager.addon_filter.keywords['items']( bpy.context.window_manager, bpy.context, ): - process_msg(msgs, settings.DEFAULT_CONTEXT, label, "Add-ons' categories", reports, None, settings) - if tip: + if label in system_categories: + # Only process add-on if it a system one (i.e shipped with Blender). Also, + # we do want to translate official categories, even if they have no official add-ons, + # hence the different test than below. + process_msg(msgs, settings.DEFAULT_CONTEXT, label, "Add-ons' categories", reports, None, settings) + elif tip: + # Only special categories get a tip (All and User). + process_msg(msgs, settings.DEFAULT_CONTEXT, label, "Add-ons' categories", reports, None, settings) process_msg(msgs, settings.DEFAULT_CONTEXT, tip, "Add-ons' categories", reports, None, settings) # Get strings specific to translations' menu. diff --git a/release/scripts/modules/bl_i18n_utils/settings.py b/release/scripts/modules/bl_i18n_utils/settings.py index a8a3ed9f4b7..95de2abc709 100644 --- a/release/scripts/modules/bl_i18n_utils/settings.py +++ b/release/scripts/modules/bl_i18n_utils/settings.py @@ -260,9 +260,9 @@ PYGETTEXT_KEYWORDS = (() + # NOTE: regex is a bit more complex than it would need too. Since the actual # identifier (`B_UNIT_DEF_`) is at the end, if it's simpler/too general it # becomes extremely slow to process some (unrelated) source files. - ((r"\{(?:(?:\s*\"[^\"',]+\"\s*,)|(?:\s*NULL\s*,)){4}\s*" + + ((r"\{(?:(?:\s*\"[^\",]+\"\s*,)|(?:\s*\"\\\"\",)|(?:\s*NULL\s*,)){4}\s*" + _msg_re + r"\s*,(?:(?:\s*\"[^\"',]+\"\s*,)|(?:\s*NULL\s*,))(?:[^,]+,){2}" - + "\s*B_UNIT_DEF_[_A-Z]+\s*\}"),) + + + "(?:\|?\s*B_UNIT_DEF_[_A-Z]+\s*)+\}"),) + 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/bpy_extras/object_utils.py b/release/scripts/modules/bpy_extras/object_utils.py index ab678ba27c8..5275a83e062 100644 --- a/release/scripts/modules/bpy_extras/object_utils.py +++ b/release/scripts/modules/bpy_extras/object_utils.py @@ -142,8 +142,17 @@ def object_data_add(context, obdata, operator=None, name=None): bpy.ops.object.mode_set(mode='EDIT') else: layer.objects.active = obj_new - if obdata and context.preferences.edit.use_enter_edit_mode: - bpy.ops.object.mode_set(mode='EDIT') + if context.preferences.edit.use_enter_edit_mode: + if obdata and obdata.library is None: + obtype = obj_new.type + mode = None + if obtype in {'ARMATURE', 'CURVE', 'CURVES', 'FONT', 'LATTICE', 'MESH', 'META', 'SURFACE'}: + mode = 'EDIT' + elif obtype == 'GPENCIL': + mode = 'EDIT_GPENCIL' + + if mode is not None: + bpy.ops.object.mode_set(mode=mode) return obj_new diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py index 75d0717184e..5ab9cdb542a 100644 --- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py +++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py @@ -5069,8 +5069,8 @@ def km_sculpt(params): {"properties": [("mode", 'TOGGLE')]}), ("sculpt.face_set_change_visibility", {"type": 'H', "value": 'PRESS', "shift": True}, {"properties": [("mode", 'HIDE_ACTIVE')]}), - ("sculpt.face_set_change_visibility", {"type": 'H', "value": 'PRESS', "alt": True}, - {"properties": [("mode", 'SHOW_ALL')]}), + ("sculpt.reveal_all", {"type": 'H', "value": 'PRESS', "alt": True}, + {"properties": []}), ("sculpt.face_set_edit", {"type": 'W', "value": 'PRESS', "ctrl": True}, {"properties": [("mode", 'GROW')]}), diff --git a/release/scripts/startup/bl_operators/assets.py b/release/scripts/startup/bl_operators/assets.py index 088f4189ca5..d8182e25641 100644 --- a/release/scripts/startup/bl_operators/assets.py +++ b/release/scripts/startup/bl_operators/assets.py @@ -4,6 +4,9 @@ from __future__ import annotations import bpy from bpy.types import Operator +from bpy.app.translations import pgettext_data as data_ + + from bpy_extras.asset_utils import ( SpaceAssetInfo, ) @@ -33,7 +36,7 @@ class ASSET_OT_tag_add(AssetBrowserMetadataOperator, Operator): def execute(self, context): active_asset = SpaceAssetInfo.get_active_asset(context) - active_asset.tags.new("Tag") + active_asset.tags.new(data_("Tag")) return {'FINISHED'} diff --git a/release/scripts/startup/bl_ui/node_add_menu_geometry.py b/release/scripts/startup/bl_ui/node_add_menu_geometry.py index 3544c9a4925..e1b57ec4f43 100644 --- a/release/scripts/startup/bl_ui/node_add_menu_geometry.py +++ b/release/scripts/startup/bl_ui/node_add_menu_geometry.py @@ -62,6 +62,7 @@ class NODE_MT_geometry_node_GEO_CURVE(Menu): node_add_menu.add_node_type(layout, "GeometryNodeSplineParameter") node_add_menu.add_node_type(layout, "GeometryNodeInputSplineResolution") layout.separator() + node_add_menu.add_node_type(layout, "GeometryNodeSetCurveNormal") node_add_menu.add_node_type(layout, "GeometryNodeSetCurveRadius") node_add_menu.add_node_type(layout, "GeometryNodeSetCurveTilt") node_add_menu.add_node_type(layout, "GeometryNodeSetCurveHandlePositions") @@ -93,7 +94,7 @@ class NODE_MT_geometry_node_curve_topology(Menu): def draw(self, _context): layout = self.layout - node_add_menu.add_node_type(layout, "GeometryNodeInputControlPointNeighbors") + node_add_menu.add_node_type(layout, "GeometryNodeOffsetPointInCurve") node_add_menu.add_node_type(layout, "GeometryNodeCurveOfPoint") node_add_menu.add_node_type(layout, "GeometryNodePointsOfCurve") @@ -198,6 +199,7 @@ class NODE_MT_geometry_node_GEO_MESH(Menu): node_add_menu.add_node_type(layout, "GeometryNodeMeshToPoints") node_add_menu.add_node_type(layout, "GeometryNodeMeshToVolume") node_add_menu.add_node_type(layout, "GeometryNodeSampleNearestSurface") + node_add_menu.add_node_type(layout, "GeometryNodeSampleUVSurface") node_add_menu.add_node_type(layout, "GeometryNodeScaleElements") node_add_menu.add_node_type(layout, "GeometryNodeSplitEdges") node_add_menu.add_node_type(layout, "GeometryNodeSubdivideMesh") @@ -232,6 +234,7 @@ class NODE_MT_category_PRIMITIVES_MESH(Menu): node_add_menu.add_node_type(layout, "GeometryNodeMeshIcoSphere") node_add_menu.add_node_type(layout, "GeometryNodeMeshCircle") node_add_menu.add_node_type(layout, "GeometryNodeMeshLine") + node_add_menu.add_node_type(layout, "GeometryNodeMeshUVSphere") class NODE_MT_geometry_node_mesh_topology(Menu): diff --git a/release/scripts/startup/bl_ui/properties_output.py b/release/scripts/startup/bl_ui/properties_output.py index bc7e8bb4347..ca0e698500e 100644 --- a/release/scripts/startup/bl_ui/properties_output.py +++ b/release/scripts/startup/bl_ui/properties_output.py @@ -3,7 +3,10 @@ import bpy from bpy.types import Menu, Panel, UIList from bl_ui.utils import PresetPanel -from bpy.app.translations import pgettext_tip as tip_ +from bpy.app.translations import ( + contexts as i18n_contexts, + pgettext_tip as tip_, +) class RENDER_PT_format_presets(PresetPanel, Panel): diff --git a/release/scripts/startup/bl_ui/properties_particle.py b/release/scripts/startup/bl_ui/properties_particle.py index 080c8ca5726..c42275fcd54 100644 --- a/release/scripts/startup/bl_ui/properties_particle.py +++ b/release/scripts/startup/bl_ui/properties_particle.py @@ -1679,7 +1679,7 @@ class PARTICLE_PT_children_roughness(ParticleButtonsPanel, Panel): if part.use_roughness_curve: sub = col.column() sub.template_curve_mapping(part, "roughness_curve") - sub.prop(part, "roughness_1", text=iface_("Roughness", i18n_contexts.id_particlesettings)) + sub.prop(part, "roughness_1", text="Roughness", text_ctxt=i18n_contexts.id_particlesettings) sub.prop(part, "roughness_1_size", text="Size") else: sub = col.column(align=True) diff --git a/release/scripts/startup/bl_ui/space_topbar.py b/release/scripts/startup/bl_ui/space_topbar.py index da089ea23b0..3320e1e24a7 100644 --- a/release/scripts/startup/bl_ui/space_topbar.py +++ b/release/scripts/startup/bl_ui/space_topbar.py @@ -2,7 +2,10 @@ import bpy from bpy.types import Header, Menu, Panel -from bpy.app.translations import pgettext_iface as iface_ +from bpy.app.translations import ( + pgettext_iface as iface_, + contexts as i18n_contexts, +) class TOPBAR_HT_upper_bar(Header): @@ -269,7 +272,7 @@ class TOPBAR_MT_file(Menu): layout = self.layout layout.operator_context = 'INVOKE_AREA' - layout.menu("TOPBAR_MT_file_new", text="New", icon='FILE_NEW') + layout.menu("TOPBAR_MT_file_new", text="New", text_ctxt=i18n_contexts.id_windowmanager, icon='FILE_NEW') layout.operator("wm.open_mainfile", text="Open...", icon='FILE_FOLDER') layout.menu("TOPBAR_MT_file_open_recent") layout.operator("wm.revert_mainfile") @@ -408,9 +411,16 @@ class TOPBAR_MT_file_defaults(Menu): app_template, has_ext=False)) layout.operator("wm.save_homefile") - props = layout.operator("wm.read_factory_settings") if app_template: + display_name = bpy.path.display_name(iface_(app_template)) + props = layout.operator("wm.read_factory_settings", text="Load Factory Blender Settings") + props.app_template = app_template + props = layout.operator("wm.read_factory_settings", text="Load Factory %s Settings" % display_name) props.app_template = app_template + props.use_factory_startup_app_template_only = True + del display_name + else: + layout.operator("wm.read_factory_settings") # Include technical operators here which would otherwise have no way for users to access. @@ -724,7 +734,7 @@ class TOPBAR_MT_file_context_menu(Menu): layout = self.layout layout.operator_context = 'INVOKE_AREA' - layout.menu("TOPBAR_MT_file_new", text="New", icon='FILE_NEW') + layout.menu("TOPBAR_MT_file_new", text="New", text_ctxt=i18n_contexts.id_windowmanager, icon='FILE_NEW') layout.operator("wm.open_mainfile", text="Open...", icon='FILE_FOLDER') layout.separator() diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py index 441babefd60..a9736feb057 100644 --- a/release/scripts/startup/bl_ui/space_userpref.py +++ b/release/scripts/startup/bl_ui/space_userpref.py @@ -109,7 +109,16 @@ class USERPREF_MT_save_load(Menu): sub_revert.operator("wm.read_userpref", text="Revert to Saved Preferences") layout.operator_context = 'INVOKE_AREA' - layout.operator("wm.read_factory_userpref", text="Load Factory Preferences") + + app_template = prefs.app_template + if app_template: + display_name = bpy.path.display_name(iface_(app_template)) + layout.operator("wm.read_factory_userpref", text="Load Factory Blender Preferences") + props = layout.operator("wm.read_factory_userpref", text="Load Factory %s Preferences" % display_name) + props.use_factory_startup_app_template_only = True + del display_name + else: + layout.operator("wm.read_factory_userpref", text="Load Factory Preferences") class USERPREF_PT_save_preferences(Panel): diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py b/release/scripts/startup/bl_ui/space_view3d_toolbar.py index c1f2bef95e8..3357676bf2f 100644 --- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py +++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py @@ -278,7 +278,7 @@ class TEXTURE_UL_texpaintslots(UIList): # mat = data if self.layout_type in {'DEFAULT', 'COMPACT'}: - layout.prop(item, "name", text="", emboss=False, icon_value=item.icon_value) + layout.label(text=item.name, icon_value=item.icon_value) elif self.layout_type == 'GRID': layout.alignment = 'CENTER' layout.label(text="") |