Merge branch 'blender-v3.3-release'

Conflicts:
	release/scripts/startup/bl_ui/space_userpref.py
This commit is contained in:
Bastien Montagne 2022-08-22 15:44:44 +02:00
commit 500e4d540a
20 changed files with 98 additions and 52 deletions

View File

@ -1656,6 +1656,7 @@ class PARTICLE_PT_children_clumping_noise(ParticleButtonsPanel, Panel):
class PARTICLE_PT_children_roughness(ParticleButtonsPanel, Panel):
bl_label = "Roughness"
bl_translation_context = i18n_contexts.id_particlesettings
bl_parent_id = "PARTICLE_PT_children"
bl_options = {'DEFAULT_CLOSED'}
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'}
@ -1678,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="Roughness")
sub.prop(part, "roughness_1", text=iface_("Roughness", i18n_contexts.id_particlesettings))
sub.prop(part, "roughness_1_size", text="Size")
else:
sub = col.column(align=True)

View File

@ -29,8 +29,10 @@ from bl_ui.space_toolsystem_common import (
ToolActivePanelHelper,
)
from bpy.app.translations import pgettext_iface as iface_
from bpy.app.translations import (
contexts as i18n_contexts,
pgettext_iface as iface_,
)
class ImagePaintPanel:
bl_space_type = 'IMAGE_EDITOR'
@ -187,7 +189,8 @@ class IMAGE_MT_image(Menu):
ima = sima.image
show_render = sima.show_render
layout.operator("image.new", text="New")
layout.operator("image.new", text="New",
text_ctxt=i18n_contexts.id_image)
layout.operator("image.open", text="Open...", icon='FILE_FOLDER')
layout.operator("image.read_viewlayers")

View File

@ -2,6 +2,10 @@
import bpy
from bpy.types import Header, Menu, Panel
from bpy.app.translations import (
contexts as i18n_contexts,
pgettext_iface as iface_,
)
class OUTLINER_HT_header(Header):
bl_space_type = 'OUTLINER'
@ -211,7 +215,8 @@ class OUTLINER_MT_collection(Menu):
space = context.space_data
layout.operator("outliner.collection_new", text="New").nested = True
layout.operator("outliner.collection_new", text="New",
text_ctxt=i18n_contexts.id_collection).nested = True
layout.operator("outliner.collection_duplicate", text="Duplicate Collection")
layout.operator("outliner.collection_duplicate_linked", text="Duplicate Linked")
layout.operator("outliner.id_copy", text="Copy", icon='COPYDOWN')

View File

@ -1,7 +1,10 @@
# SPDX-License-Identifier: GPL-2.0-or-later
import bpy
from bpy.types import Header, Menu, Panel
from bpy.app.translations import pgettext_iface as iface_
from bpy.app.translations import (
contexts as i18n_contexts,
pgettext_iface as iface_,
)
class TEXT_HT_header(Header):
@ -167,8 +170,10 @@ class TEXT_PT_find(Panel):
row = layout.row(align=True)
if not st.text:
row.active = False
row.prop(st, "use_match_case", text="Case", toggle=True)
row.prop(st, "use_find_wrap", text="Wrap", toggle=True)
row.prop(st, "use_match_case", text="Case",
text_ctxt=i18n_contexts.id_text, toggle=True)
row.prop(st, "use_find_wrap", text="Wrap",
text_ctxt=i18n_contexts.id_text, toggle=True)
row.prop(st, "use_find_all", text="All", toggle=True)
@ -234,7 +239,8 @@ class TEXT_MT_text(Menu):
st = context.space_data
text = st.text
layout.operator("text.new", text="New", icon='FILE_NEW')
layout.operator("text.new", text="New",
text_ctxt=i18n_contexts.id_text, icon='FILE_NEW')
layout.operator("text.open", text="Open...", icon='FILE_FOLDER')
if text:

View File

@ -1,6 +1,7 @@
# SPDX-License-Identifier: GPL-2.0-or-later
import bpy
from bpy.types import Menu, Panel
from bpy.app.translations import contexts as i18n_contexts
# Header buttons for timeline header (play, etc.)
@ -87,6 +88,7 @@ class TIME_MT_editor_menus(Menu):
sub.popover(
panel="TIME_PT_keyframing_settings",
text="Keying",
text_ctxt=i18n_contexts.id_windowmanager,
)
# Add a separator to keep the popover button from aligning with the menu button.

View File

@ -8,6 +8,7 @@ from bpy.types import (
from bpy.app.translations import (
contexts as i18n_contexts,
pgettext_iface as iface_,
pgettext_tip as tip_,
)
@ -2092,7 +2093,10 @@ class StudioLightPanelMixin:
for studio_light in lights:
self.draw_studio_light(flow, studio_light)
else:
layout.label(text=iface_("No custom %s configured") % self.bl_label)
layout.label(text=self.get_error_message())
def get_error_message(self):
return tip_("No custom %s configured") % self.bl_label
def draw_studio_light(self, layout, studio_light):
box = layout.box()
@ -2119,6 +2123,9 @@ class USERPREF_PT_studiolight_matcaps(StudioLightPanel, StudioLightPanelMixin, P
layout.operator("preferences.studiolight_install", icon='IMPORT', text="Install...").type = 'MATCAP'
layout.separator()
def get_error_message(self):
return tip_("No custom MatCaps configured")
class USERPREF_PT_studiolight_world(StudioLightPanel, StudioLightPanelMixin, Panel):
bl_label = "HDRIs"
@ -2129,6 +2136,9 @@ class USERPREF_PT_studiolight_world(StudioLightPanel, StudioLightPanelMixin, Pan
layout.operator("preferences.studiolight_install", icon='IMPORT', text="Install...").type = 'WORLD'
layout.separator()
def get_error_message(self):
return tip_("No custom HDRIs configured")
class USERPREF_PT_studiolight_lights(StudioLightPanel, StudioLightPanelMixin, Panel):
bl_label = "Studio Lights"
@ -2141,6 +2151,9 @@ class USERPREF_PT_studiolight_lights(StudioLightPanel, StudioLightPanelMixin, Pa
op.filter_glob = ".sl"
layout.separator()
def get_error_message(self):
return tip_("No custom Studio Lights configured")
class USERPREF_PT_studiolight_light_editor(StudioLightPanel, Panel):
bl_label = "Editor"

View File

@ -2212,6 +2212,7 @@ class VIEW3D_MT_armature_add(Menu):
class VIEW3D_MT_light_add(Menu):
bl_idname = "VIEW3D_MT_light_add"
bl_context = i18n_contexts.id_light
bl_label = "Light"
def draw(self, _context):
@ -2249,7 +2250,9 @@ class VIEW3D_MT_volume_add(Menu):
def draw(self, _context):
layout = self.layout
layout.operator("object.volume_import", text="Import OpenVDB...", icon='OUTLINER_DATA_VOLUME')
layout.operator("object.volume_add", text="Empty", icon='OUTLINER_DATA_VOLUME')
layout.operator("object.volume_add", text="Empty",
text_ctxt=i18n_contexts.id_volume,
icon='OUTLINER_DATA_VOLUME')
class VIEW3D_MT_add(Menu):
@ -2290,7 +2293,9 @@ class VIEW3D_MT_add(Menu):
layout.separator()
layout.operator_menu_enum("object.empty_add", "type", text="Empty", icon='OUTLINER_OB_EMPTY')
layout.operator_menu_enum("object.empty_add", "type", text="Empty",
text_ctxt=i18n_contexts.id_id,
icon='OUTLINER_OB_EMPTY')
layout.menu("VIEW3D_MT_image_add", text="Image", icon='OUTLINER_OB_IMAGE')
layout.separator()

View File

@ -768,19 +768,19 @@ static void fcm_cycles_evaluate(FCurve *UNUSED(fcu),
}
static FModifierTypeInfo FMI_CYCLES = {
FMODIFIER_TYPE_CYCLES, /* type */
sizeof(FMod_Cycles), /* size */
FMI_TYPE_EXTRAPOLATION, /* action type */
FMI_REQUIRES_ORIGINAL_DATA, /* requirements */
N_("Cycles"), /* name */
"FMod_Cycles", /* struct name */
sizeof(tFCMED_Cycles), /* storage size */
NULL, /* free data */
NULL, /* copy data */
fcm_cycles_new_data, /* new data */
NULL /*fcm_cycles_verify*/, /* verify */
fcm_cycles_time, /* evaluate time */
fcm_cycles_evaluate, /* evaluate */
FMODIFIER_TYPE_CYCLES, /* type */
sizeof(FMod_Cycles), /* size */
FMI_TYPE_EXTRAPOLATION, /* action type */
FMI_REQUIRES_ORIGINAL_DATA, /* requirements */
CTX_N_(BLT_I18NCONTEXT_ID_ACTION, "Cycles"), /* name */
"FMod_Cycles", /* struct name */
sizeof(tFCMED_Cycles), /* storage size */
NULL, /* free data */
NULL, /* copy data */
fcm_cycles_new_data, /* new data */
NULL /*fcm_cycles_verify*/, /* verify */
fcm_cycles_time, /* evaluate time */
fcm_cycles_evaluate, /* evaluate */
};
/* Noise F-Curve Modifier --------------------------- */

View File

@ -5519,7 +5519,7 @@ RenderSlot *BKE_image_add_renderslot(Image *ima, const char *name)
}
else {
int n = BLI_listbase_count(&ima->renderslots) + 1;
BLI_snprintf(slot->name, sizeof(slot->name), "Slot %d", n);
BLI_snprintf(slot->name, sizeof(slot->name), DATA_("Slot %d"), n);
}
BLI_addtail(&ima->renderslots, slot);
return slot;

View File

@ -1483,7 +1483,8 @@ void GPENCIL_OT_interpolate_sequence(wmOperatorType *ot)
*/
static const EnumPropertyItem gpencil_interpolation_type_items[] = {
/* Interpolation. */
RNA_ENUM_ITEM_HEADING(N_("Interpolation"), "Standard transitions between keyframes"),
RNA_ENUM_ITEM_HEADING(CTX_N_(BLT_I18NCONTEXT_ID_GPENCIL, "Interpolation"),
N_("Standard transitions between keyframes")),
{GP_IPO_LINEAR,
"LINEAR",
ICON_IPO_LINEAR,
@ -1496,9 +1497,9 @@ void GPENCIL_OT_interpolate_sequence(wmOperatorType *ot)
"Custom interpolation defined using a curve map"},
/* Easing. */
RNA_ENUM_ITEM_HEADING(N_("Easing (by strength)"),
"Predefined inertial transitions, useful for motion graphics "
"(from least to most \"dramatic\")"),
RNA_ENUM_ITEM_HEADING(CTX_N_(BLT_I18NCONTEXT_ID_GPENCIL, "Easing (by strength)"),
N_("Predefined inertial transitions, useful for motion graphics "
"(from least to most \"dramatic\")")),
{GP_IPO_SINE,
"SINE",
ICON_IPO_SINE,
@ -1515,7 +1516,8 @@ void GPENCIL_OT_interpolate_sequence(wmOperatorType *ot)
"Circular",
"Circular easing (strongest and most dynamic)"},
RNA_ENUM_ITEM_HEADING(N_("Dynamic Effects"), "Simple physics-inspired easing effects"),
RNA_ENUM_ITEM_HEADING(CTX_N_(BLT_I18NCONTEXT_ID_GPENCIL, "Dynamic Effects"),
N_("Simple physics-inspired easing effects")),
{GP_IPO_BACK, "BACK", ICON_IPO_BACK, "Back", "Cubic easing with overshoot and settle"},
{GP_IPO_BOUNCE,
"BOUNCE",

View File

@ -12,6 +12,8 @@
#include "BLI_listbase.h"
#include "BLI_math.h"
#include "BLT_translation.h"
#include "BKE_context.h"
#include "BKE_customdata.h"
#include "BKE_deform.h"

View File

@ -45,7 +45,7 @@
* Note some are 'fake' ones, i.e. they are not hold by real CDLayers. */
/* Not shared with modifier, since we use a usual enum here, not a multi-choice one. */
static const EnumPropertyItem DT_layer_items[] = {
RNA_ENUM_ITEM_HEADING("Vertex Data", NULL),
RNA_ENUM_ITEM_HEADING(N_("Vertex Data"), NULL),
{DT_TYPE_MDEFORMVERT,
"VGROUP_WEIGHTS",
0,
@ -61,7 +61,7 @@ static const EnumPropertyItem DT_layer_items[] = {
#endif
{DT_TYPE_BWEIGHT_VERT, "BEVEL_WEIGHT_VERT", 0, "Bevel Weight", "Transfer bevel weights"},
RNA_ENUM_ITEM_HEADING("Edge Data", NULL),
RNA_ENUM_ITEM_HEADING(N_("Edge Data"), NULL),
{DT_TYPE_SHARP_EDGE, "SHARP_EDGE", 0, "Sharp", "Transfer sharp mark"},
{DT_TYPE_SEAM, "SEAM", 0, "UV Seam", "Transfer UV seam mark"},
{DT_TYPE_CREASE, "CREASE", 0, "Subdivision Crease", "Transfer crease values"},
@ -72,12 +72,12 @@ static const EnumPropertyItem DT_layer_items[] = {
"Freestyle Mark",
"Transfer Freestyle edge mark"},
RNA_ENUM_ITEM_HEADING("Face Corner Data", NULL),
RNA_ENUM_ITEM_HEADING(N_("Face Corner Data"), NULL),
{DT_TYPE_LNOR, "CUSTOM_NORMAL", 0, "Custom Normals", "Transfer custom normals"},
{DT_TYPE_MPROPCOL_LOOP | DT_TYPE_MLOOPCOL_LOOP, "VCOL", 0, "Colors", "Color Attributes"},
{DT_TYPE_UV, "UV", 0, "UVs", "Transfer UV layers"},
RNA_ENUM_ITEM_HEADING("Face Data", NULL),
RNA_ENUM_ITEM_HEADING(N_("Face Data"), NULL),
{DT_TYPE_SHARP_FACE, "SMOOTH", 0, "Smooth", "Transfer flat/smooth mark"},
{DT_TYPE_FREESTYLE_FACE,
"FREESTYLE_FACE",

View File

@ -67,7 +67,8 @@ const EnumPropertyItem rna_enum_keyframe_handle_type_items[] = {
*/
const EnumPropertyItem rna_enum_beztriple_interpolation_mode_items[] = {
/* Interpolation. */
RNA_ENUM_ITEM_HEADING(N_("Interpolation"), "Standard transitions between keyframes"),
RNA_ENUM_ITEM_HEADING(CTX_N_(BLT_I18NCONTEXT_ID_ACTION, "Interpolation"),
N_("Standard transitions between keyframes")),
{BEZT_IPO_CONST,
"CONSTANT",
ICON_IPO_CONSTANT,
@ -85,9 +86,9 @@ const EnumPropertyItem rna_enum_beztriple_interpolation_mode_items[] = {
"Smooth interpolation between A and B, with some control over curve shape"},
/* Easing. */
RNA_ENUM_ITEM_HEADING(N_("Easing (by strength)"),
"Predefined inertial transitions, useful for motion graphics "
"(from least to most \"dramatic\")"),
RNA_ENUM_ITEM_HEADING(CTX_N_(BLT_I18NCONTEXT_ID_ACTION, "Easing (by strength)"),
N_("Predefined inertial transitions, useful for motion graphics "
"(from least to most \"dramatic\")")),
{BEZT_IPO_SINE,
"SINE",
ICON_IPO_SINE,
@ -104,7 +105,8 @@ const EnumPropertyItem rna_enum_beztriple_interpolation_mode_items[] = {
"Circular",
"Circular easing (strongest and most dynamic)"},
RNA_ENUM_ITEM_HEADING(N_("Dynamic Effects"), "Simple physics-inspired easing effects"),
RNA_ENUM_ITEM_HEADING(CTX_N_(BLT_I18NCONTEXT_ID_ACTION, "Dynamic Effects"),
N_("Simple physics-inspired easing effects")),
{BEZT_IPO_BACK, "BACK", ICON_IPO_BACK, "Back", "Cubic easing with overshoot and settle"},
{BEZT_IPO_BOUNCE,
"BOUNCE",

View File

@ -212,6 +212,7 @@ static void rna_def_light_energy(StructRNA *srna, const short light_type)
"Power",
"The energy this light would emit over its entire area "
"if it wasn't limited by the spot angle");
RNA_def_property_translation_context(prop, BLT_I18NCONTEXT_ID_LIGHT);
RNA_def_property_update(prop, 0, "rna_Light_draw_update");
break;
}
@ -224,6 +225,7 @@ static void rna_def_light_energy(StructRNA *srna, const short light_type)
prop,
"Power",
"Light energy emitted over the entire area of the light in all directions");
RNA_def_property_translation_context(prop, BLT_I18NCONTEXT_ID_LIGHT);
RNA_def_property_update(prop, 0, "rna_Light_draw_update");
break;
}

View File

@ -4840,6 +4840,7 @@ static void def_math(StructRNA *srna)
RNA_def_property_enum_sdna(prop, NULL, "custom1");
RNA_def_property_enum_items(prop, rna_enum_node_math_items);
RNA_def_property_ui_text(prop, "Operation", "");
RNA_def_property_translation_context(prop, BLT_I18NCONTEXT_ID_NODETREE);
RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_ShaderNode_socket_update");
prop = RNA_def_property(srna, "use_clamp", PROP_BOOLEAN, PROP_NONE);
@ -6737,7 +6738,7 @@ static void def_cmp_set_alpha(StructRNA *srna)
"REPLACE_ALPHA",
0,
"Replace Alpha",
"Replace the input image's alpha channels by the alpha input value"},
"Replace the input image's alpha channel by the alpha input value"},
{0, NULL, 0, NULL, NULL},
};

View File

@ -2686,6 +2686,7 @@ static void rna_def_particle_settings(BlenderRNA *brna)
prop = RNA_def_property(srna, "use_parent_particles", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_PARENT);
RNA_def_property_ui_text(prop, "Parents", "Render parent particles");
RNA_def_property_translation_context(prop, BLT_I18NCONTEXT_ID_PARTICLESETTINGS);
RNA_def_property_update(prop, 0, "rna_Particle_redo");
prop = RNA_def_property(srna, "show_number", PROP_BOOLEAN, PROP_NONE);

View File

@ -3143,6 +3143,7 @@ static void rna_def_tool_settings(BlenderRNA *brna)
prop = RNA_def_property(srna, "workspace_tool_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "workspace_tool_type");
RNA_def_property_enum_items(prop, workspace_tool_items);
RNA_def_property_translation_context(prop, BLT_I18NCONTEXT_EDITOR_VIEW3D);
RNA_def_property_ui_text(prop, "Drag", "Action when dragging in the viewport");
/* Transform */

View File

@ -88,7 +88,7 @@ const EnumPropertyItem rna_enum_space_type_items[] = {
{SPACE_EMPTY, "EMPTY", ICON_NONE, "Empty", ""},
/* General. */
RNA_ENUM_ITEM_HEADING("General", NULL),
RNA_ENUM_ITEM_HEADING(N_("General"), NULL),
{SPACE_VIEW3D,
"VIEW_3D",
ICON_VIEW3D,
@ -108,7 +108,7 @@ const EnumPropertyItem rna_enum_space_type_items[] = {
{SPACE_CLIP, "CLIP_EDITOR", ICON_TRACKER, "Movie Clip Editor", "Motion tracking tools"},
/* Animation. */
RNA_ENUM_ITEM_HEADING("Animation", NULL),
RNA_ENUM_ITEM_HEADING(N_("Animation"), NULL),
#if 0
{SPACE_ACTION,
"TIMELINE",
@ -125,7 +125,7 @@ const EnumPropertyItem rna_enum_space_type_items[] = {
{SPACE_NLA, "NLA_EDITOR", ICON_NLA, "Nonlinear Animation", "Combine and layer Actions"},
/* Scripting. */
RNA_ENUM_ITEM_HEADING("Scripting", NULL),
RNA_ENUM_ITEM_HEADING(N_("Scripting"), NULL),
{SPACE_TEXT,
"TEXT_EDITOR",
ICON_TEXT,
@ -153,7 +153,7 @@ const EnumPropertyItem rna_enum_space_type_items[] = {
"screen for general status information"},
/* Data. */
RNA_ENUM_ITEM_HEADING("Data", NULL),
RNA_ENUM_ITEM_HEADING(N_("Data"), NULL),
{SPACE_OUTLINER,
"OUTLINER",
ICON_OUTLINER,
@ -435,28 +435,28 @@ static const EnumPropertyItem rna_enum_studio_light_items[] = {
};
static const EnumPropertyItem rna_enum_view3dshading_render_pass_type_items[] = {
RNA_ENUM_ITEM_HEADING("General", NULL),
RNA_ENUM_ITEM_HEADING(N_("General"), NULL),
{EEVEE_RENDER_PASS_COMBINED, "COMBINED", 0, "Combined", ""},
{EEVEE_RENDER_PASS_EMIT, "EMISSION", 0, "Emission", ""},
{EEVEE_RENDER_PASS_ENVIRONMENT, "ENVIRONMENT", 0, "Environment", ""},
{EEVEE_RENDER_PASS_AO, "AO", 0, "Ambient Occlusion", ""},
{EEVEE_RENDER_PASS_SHADOW, "SHADOW", 0, "Shadow", ""},
RNA_ENUM_ITEM_HEADING("Light", NULL),
RNA_ENUM_ITEM_HEADING(N_("Light"), NULL),
{EEVEE_RENDER_PASS_DIFFUSE_LIGHT, "DIFFUSE_LIGHT", 0, "Diffuse Light", ""},
{EEVEE_RENDER_PASS_DIFFUSE_COLOR, "DIFFUSE_COLOR", 0, "Diffuse Color", ""},
{EEVEE_RENDER_PASS_SPECULAR_LIGHT, "SPECULAR_LIGHT", 0, "Specular Light", ""},
{EEVEE_RENDER_PASS_SPECULAR_COLOR, "SPECULAR_COLOR", 0, "Specular Color", ""},
{EEVEE_RENDER_PASS_VOLUME_LIGHT, "VOLUME_LIGHT", 0, "Volume Light", ""},
RNA_ENUM_ITEM_HEADING("Effects", NULL),
RNA_ENUM_ITEM_HEADING(N_("Effects"), NULL),
{EEVEE_RENDER_PASS_BLOOM, "BLOOM", 0, "Bloom", ""},
RNA_ENUM_ITEM_HEADING("Data", NULL),
RNA_ENUM_ITEM_HEADING(N_("Data"), NULL),
{EEVEE_RENDER_PASS_NORMAL, "NORMAL", 0, "Normal", ""},
{EEVEE_RENDER_PASS_MIST, "MIST", 0, "Mist", ""},
RNA_ENUM_ITEM_HEADING("Shader AOV", NULL),
RNA_ENUM_ITEM_HEADING(N_("Shader AOV"), NULL),
{EEVEE_RENDER_PASS_AOV, "AOV", 0, "AOV", ""},
{0, NULL, 0, NULL, NULL},

View File

@ -200,7 +200,7 @@ void node_math_label(const bNodeTree *UNUSED(ntree), const bNode *node, char *la
if (!enum_label) {
name = "Unknown";
}
BLI_strncpy(label, IFACE_(name), maxlen);
BLI_strncpy(label, CTX_IFACE_(BLT_I18NCONTEXT_ID_NODETREE, name), maxlen);
}
void node_vector_math_label(const bNodeTree *UNUSED(ntree),

View File

@ -62,7 +62,7 @@ static void sh_node_math_gather_link_searches(GatherLinkSearchOpParams &params)
-1 :
weight;
params.add_item(
IFACE_(item->name), SocketSearchOp{"Value", (NodeMathOperation)item->value}, gn_weight);
CTX_IFACE_(BLT_I18NCONTEXT_ID_NODETREE, item->name), SocketSearchOp{"Value", (NodeMathOperation)item->value}, gn_weight);
}
}
}