diff options
Diffstat (limited to 'release/scripts/startup/bl_ui')
-rw-r--r-- | release/scripts/startup/bl_ui/properties_data_curves.py | 8 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/properties_output.py | 16 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/properties_paint_common.py | 72 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/properties_particle.py | 1 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/space_clip.py | 6 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/space_image.py | 33 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/space_node.py | 1 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/space_sequencer.py | 2 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/space_userpref.py | 5 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/space_view3d.py | 89 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/space_view3d_toolbar.py | 65 |
11 files changed, 173 insertions, 125 deletions
diff --git a/release/scripts/startup/bl_ui/properties_data_curves.py b/release/scripts/startup/bl_ui/properties_data_curves.py index ff0eabeb7d9..df80bdb4552 100644 --- a/release/scripts/startup/bl_ui/properties_data_curves.py +++ b/release/scripts/startup/bl_ui/properties_data_curves.py @@ -44,7 +44,13 @@ class DATA_PT_curves_surface(DataButtonsPanel, Panel): layout.use_property_split = True layout.prop(ob.data, "surface") - layout.prop(ob.data, "surface_uv_map", text="UV Map") + has_surface = ob.data.surface is not None + if has_surface: + layout.prop_search(ob.data, "surface_uv_map", ob.data.surface.data, "uv_layers", text="UV Map") + else: + row = layout.row() + row.prop(ob.data, "surface_uv_map", text="UV Map") + row.enabled = has_surface class CURVES_MT_add_attribute(Menu): diff --git a/release/scripts/startup/bl_ui/properties_output.py b/release/scripts/startup/bl_ui/properties_output.py index ca0e698500e..61384f25afb 100644 --- a/release/scripts/startup/bl_ui/properties_output.py +++ b/release/scripts/startup/bl_ui/properties_output.py @@ -380,7 +380,14 @@ class RENDER_PT_encoding_video(RenderOutputButtonsPanel, Panel): layout = self.layout ffmpeg = context.scene.render.ffmpeg - needs_codec = ffmpeg.format in {'AVI', 'QUICKTIME', 'MKV', 'OGG', 'MPEG4', 'WEBM'} + needs_codec = ffmpeg.format in { + 'AVI', + 'QUICKTIME', + 'MKV', + 'OGG', + 'MPEG4', + 'WEBM' + } if needs_codec: layout.prop(ffmpeg, "codec") @@ -391,7 +398,12 @@ class RENDER_PT_encoding_video(RenderOutputButtonsPanel, Panel): layout.prop(ffmpeg, "use_lossless_output") # Output quality - use_crf = needs_codec and ffmpeg.codec in {'H264', 'MPEG4', 'WEBM'} + use_crf = needs_codec and ffmpeg.codec in { + 'H264', + 'MPEG4', + 'WEBM', + 'AV1' + } if use_crf: layout.prop(ffmpeg, "constant_rate_factor") diff --git a/release/scripts/startup/bl_ui/properties_paint_common.py b/release/scripts/startup/bl_ui/properties_paint_common.py index 72a87703bd5..0e49a506e73 100644 --- a/release/scripts/startup/bl_ui/properties_paint_common.py +++ b/release/scripts/startup/bl_ui/properties_paint_common.py @@ -928,60 +928,80 @@ def brush_settings_advanced(layout, context, brush, popover=False): use_frontface = False if mode == 'SCULPT': + sculpt = context.tool_settings.sculpt capabilities = brush.sculpt_capabilities use_accumulate = capabilities.has_accumulate use_frontface = True col = layout.column(heading="Auto-Masking", align=True) - # topology automasking + col = layout.column(align=True) col.prop(brush, "use_automasking_topology", text="Topology") - - # face masks automasking col.prop(brush, "use_automasking_face_sets", text="Face Sets") - # boundary edges/face sets automasking + layout.separator() + + col = layout.column(align=True) col.prop(brush, "use_automasking_boundary_edges", text="Mesh Boundary") col.prop(brush, "use_automasking_boundary_face_sets", text="Face Sets Boundary") - col.prop(brush, "use_automasking_cavity", text="Cavity") - col.prop(brush, "use_automasking_cavity_inverted", text="Cavity (Inverted)") - col.prop(brush, "use_automasking_start_normal", text="Area Normal") - col.prop(brush, "use_automasking_view_normal", text="View Normal") - col.separator() - col.prop(brush, "automasking_boundary_edges_propagation_steps") + if brush.use_automasking_boundary_edges or brush.use_automasking_boundary_face_sets: + col = layout.column() + col.use_property_split = False + split = col.split(factor=0.4) + col = split.column() + split.prop(brush, "automasking_boundary_edges_propagation_steps") - sculpt = context.tool_settings.sculpt + layout.separator() - if brush.use_automasking_start_normal: - col.separator() + col = layout.column(align=True) + row = col.row() + row.prop(brush, "use_automasking_cavity", text="Cavity") - col.prop(sculpt, "automasking_start_normal_limit") - col.prop(sculpt, "automasking_start_normal_falloff") + is_cavity_active = brush.use_automasking_cavity or brush.use_automasking_cavity_inverted - if brush.use_automasking_view_normal: - col.separator() + if is_cavity_active: + row.operator("sculpt.mask_from_cavity", text="Create Mask") - col.prop(brush, "use_automasking_view_occlusion", text="Occlusion") - col.prop(sculpt, "automasking_view_normal_limit") - col.prop(sculpt, "automasking_view_normal_falloff") + col.prop(brush, "use_automasking_cavity_inverted", text="Cavity (inverted)") - if brush.use_automasking_cavity or brush.use_automasking_cavity_inverted: - col.separator() + if is_cavity_active: + col = layout.column(align=True) + col.prop(brush, "automasking_cavity_factor", text="Factor") + col.prop(brush, "automasking_cavity_blur_steps", text="Blur") - col.prop(brush, "automasking_cavity_factor", text="Cavity Factor") - col.prop(brush, "automasking_cavity_blur_steps", text="Cavity Blur") - col.prop(brush, "use_automasking_custom_cavity_curve", text="Use Curve") + col = layout.column() + col.prop(brush, "use_automasking_custom_cavity_curve", text="Custom Curve") if brush.use_automasking_custom_cavity_curve: col.template_curve_mapping(brush, "automasking_cavity_curve") layout.separator() + col = layout.column(align=True) + col.prop(brush, "use_automasking_view_normal", text="View Normal") + + if brush.use_automasking_view_normal: + col.prop(brush, "use_automasking_view_occlusion", text="Occlusion") + subcol = col.column(align=True) + subcol.active = not brush.use_automasking_view_occlusion + subcol.prop(sculpt, "automasking_view_normal_limit", text="Limit") + subcol.prop(sculpt, "automasking_view_normal_falloff", text="Falloff") + + col = layout.column() + col.prop(brush, "use_automasking_start_normal", text="Area Normal") + + if brush.use_automasking_start_normal: + col = layout.column(align=True) + col.prop(sculpt, "automasking_start_normal_limit", text="Limit") + col.prop(sculpt, "automasking_start_normal_falloff", text="Falloff") + + layout.separator() + # sculpt plane settings if capabilities.has_sculpt_plane: layout.prop(brush, "sculpt_plane") - col = layout.column(heading="Use Original", align=True) + col = layout.column(heading="Original", align=True) col.prop(brush, "use_original_normal", text="Normal") col.prop(brush, "use_original_plane", text="Plane") layout.separator() diff --git a/release/scripts/startup/bl_ui/properties_particle.py b/release/scripts/startup/bl_ui/properties_particle.py index c42275fcd54..8567ddb9372 100644 --- a/release/scripts/startup/bl_ui/properties_particle.py +++ b/release/scripts/startup/bl_ui/properties_particle.py @@ -239,6 +239,7 @@ class PARTICLE_PT_context_particles(ParticleButtonsPanel, Panel): class PARTICLE_PT_emission(ParticleButtonsPanel, Panel): bl_label = "Emission" + bl_translation_context = i18n_contexts.id_particlesettings COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_EEVEE_NEXT', 'BLENDER_WORKBENCH'} @classmethod diff --git a/release/scripts/startup/bl_ui/space_clip.py b/release/scripts/startup/bl_ui/space_clip.py index c337e8018e6..54b3a20f966 100644 --- a/release/scripts/startup/bl_ui/space_clip.py +++ b/release/scripts/startup/bl_ui/space_clip.py @@ -2,7 +2,10 @@ import bpy from bpy.types import Panel, Header, Menu, UIList -from bpy.app.translations import pgettext_iface as iface_ +from bpy.app.translations import ( + pgettext_iface as iface_, + contexts as i18n_contexts, +) from bl_ui.utils import PresetPanel from bl_ui.properties_grease_pencil_common import ( AnnotationDrawingToolsPanel, @@ -1751,6 +1754,7 @@ class CLIP_MT_marker_pie(Menu): class CLIP_MT_tracking_pie(Menu): # Tracking Operators bl_label = "Tracking" + bl_translation_context = i18n_contexts.id_movieclip @classmethod def poll(cls, context): diff --git a/release/scripts/startup/bl_ui/space_image.py b/release/scripts/startup/bl_ui/space_image.py index cefa4bf7d1d..fcbd7bb423d 100644 --- a/release/scripts/startup/bl_ui/space_image.py +++ b/release/scripts/startup/bl_ui/space_image.py @@ -1528,36 +1528,23 @@ class IMAGE_PT_overlay_guides(Panel): layout.active = overlay.show_overlays row = layout.row() - row_el = row.column() - row_el.prop(overlay, "show_grid_background", text="Grid") + row.prop(overlay, "show_grid_background", text="Grid") if overlay.show_grid_background: - layout.use_property_split = True - - col = layout.column(align=False, heading="Grid Over Image") - col.use_property_decorate = False - row = col.row(align=True) - sub = row.row(align=True) - sub.prop(uvedit, "show_grid_over_image", text="") + sub = row.row() + sub.prop(uvedit, "show_grid_over_image", text="Over Image") sub.active = sima.image is not None - col = layout.column(align=False, heading="Fixed Subdivisions") - col.use_property_decorate = False + layout.row().prop(uvedit, "grid_shape_source", expand=True) - row = col.row(align=True) - sub = row.row(align=True) - sub.prop(uvedit, "use_custom_grid", text="") - if uvedit.use_custom_grid: - row = layout.row() - row.use_property_split = True - row.use_property_decorate = False - sub = sub.row(align=True) - sub.prop(uvedit, "custom_grid_subdivisions", text="") + layout.use_property_split = True + layout.use_property_decorate = False row = layout.row() - row.use_property_split = True - row.use_property_decorate = False - row.prop(uvedit, "tile_grid_shape", text="Tiles") + row.prop(uvedit, "custom_grid_subdivisions", text="Fixed Subdivisions") + row.active = uvedit.grid_shape_source == 'FIXED' + + layout.prop(uvedit, "tile_grid_shape", text="Tiles") class IMAGE_PT_overlay_uv_edit(Panel): diff --git a/release/scripts/startup/bl_ui/space_node.py b/release/scripts/startup/bl_ui/space_node.py index f4070a8289d..593c6400529 100644 --- a/release/scripts/startup/bl_ui/space_node.py +++ b/release/scripts/startup/bl_ui/space_node.py @@ -318,6 +318,7 @@ class NODE_MT_node(Menu): layout.operator("node.clipboard_copy", text="Copy") layout.operator("node.clipboard_paste", text="Paste") layout.operator("node.duplicate_move") + layout.operator("node.duplicate_move_linked") layout.operator("node.delete") layout.operator("node.delete_reconnect") diff --git a/release/scripts/startup/bl_ui/space_sequencer.py b/release/scripts/startup/bl_ui/space_sequencer.py index a99df1164a0..e703cf7f9c6 100644 --- a/release/scripts/startup/bl_ui/space_sequencer.py +++ b/release/scripts/startup/bl_ui/space_sequencer.py @@ -683,7 +683,7 @@ class SEQUENCER_MT_add(Menu): elif bpy_data_movieclips_len > 0: layout.operator_menu_enum("sequencer.movieclip_strip_add", "clip", text="Clip", icon='TRACKER') else: - layout.menu("SEQUENCER_MT_add_empty", text="Clip", icon='TRACKER') + layout.menu("SEQUENCER_MT_add_empty", text="Clip", text_ctxt=i18n_contexts.id_movieclip, icon='TRACKER') del bpy_data_movieclips_len bpy_data_masks_len = len(bpy.data.masks) diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py index a9736feb057..53999f3c154 100644 --- a/release/scripts/startup/bl_ui/space_userpref.py +++ b/release/scripts/startup/bl_ui/space_userpref.py @@ -397,17 +397,18 @@ class USERPREF_PT_edit_objects_duplicate_data(EditingPanel, CenterAlignMixIn, Pa # col.prop(edit, "use_duplicate_fcurve", text="F-Curve") # Not implemented. col.prop(edit, "use_duplicate_curves", text="Curves") col.prop(edit, "use_duplicate_grease_pencil", text="Grease Pencil") + col.prop(edit, "use_duplicate_lattice", text="Lattice") col = flow.column() - col.prop(edit, "use_duplicate_lattice", text="Lattice") col.prop(edit, "use_duplicate_light", text="Light") col.prop(edit, "use_duplicate_lightprobe", text="Light Probe") col.prop(edit, "use_duplicate_material", text="Material") col.prop(edit, "use_duplicate_mesh", text="Mesh") col.prop(edit, "use_duplicate_metaball", text="Metaball") + col.prop(edit, "use_duplicate_node_tree", text="Node Tree") + col.prop(edit, "use_duplicate_particle", text="Particle") col = flow.column() - col.prop(edit, "use_duplicate_particle", text="Particle") if hasattr(edit, "use_duplicate_pointcloud"): col.prop(edit, "use_duplicate_pointcloud", text="Point Cloud") col.prop(edit, "use_duplicate_speaker", text="Speaker") diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index ada2993a16f..39684aaf161 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -838,12 +838,18 @@ class VIEW3D_HT_header(Header): text="Guides", ) - layout.separator_spacer() + elif object_mode == 'SCULPT': + layout.popover( + panel="VIEW3D_PT_sculpt_automasking", + text="", + icon="MOD_MASK" + ) + else: # Transform settings depending on tool header visibility VIEW3D_HT_header.draw_xform_template(layout, context) - layout.separator_spacer() + layout.separator_spacer() # Viewport Settings layout.popover( @@ -3012,6 +3018,7 @@ class VIEW3D_MT_brush_paint_modes(Menu): layout.prop(brush, "use_paint_vertex", text="Vertex Paint") layout.prop(brush, "use_paint_weight", text="Weight Paint") layout.prop(brush, "use_paint_image", text="Texture Paint") + layout.prop(brush, "use_paint_sculpt_curves", text="Sculpt Curves") class VIEW3D_MT_paint_vertex(Menu): @@ -3356,8 +3363,7 @@ class VIEW3D_MT_face_sets(Menu): op = layout.operator("sculpt.face_set_change_visibility", text='Invert Visible Face Sets') op.mode = 'INVERT' - op = layout.operator("sculpt.face_set_change_visibility", text='Show All Face Sets') - op.mode = 'SHOW_ALL' + op = layout.operator("sculpt.reveal_all", text='Show All Face Sets') layout.separator() @@ -5518,8 +5524,7 @@ class VIEW3D_MT_sculpt_face_sets_edit_pie(Menu): op = pie.operator("sculpt.face_set_change_visibility", text='Invert Visible') op.mode = 'INVERT' - op = pie.operator("sculpt.face_set_change_visibility", text='Show All') - op.mode = 'SHOW_ALL' + op = pie.operator("sculpt.reveal_all", text='Show All') class VIEW3D_MT_wpaint_vgroup_lock_pie(Menu): @@ -7682,6 +7687,77 @@ class VIEW3D_PT_paint_weight_context_menu(Panel): ) +class VIEW3D_PT_sculpt_automasking(Panel): + bl_space_type = 'VIEW_3D' + bl_region_type = 'HEADER' + bl_label = "Auto-Masking" + bl_ui_units_x = 10 + + def draw(self, context): + layout = self.layout + + tool_settings = context.tool_settings + sculpt = tool_settings.sculpt + layout.label(text="Auto-Masking") + + col = layout.column(align=True) + col.prop(sculpt, "use_automasking_topology", text="Topology") + col.prop(sculpt, "use_automasking_face_sets", text="Face Sets") + + col.separator() + + col = layout.column(align=True) + col.prop(sculpt, "use_automasking_boundary_edges", text="Mesh Boundary") + col.prop(sculpt, "use_automasking_boundary_face_sets", text="Face Sets Boundary") + + if sculpt.use_automasking_boundary_edges or sculpt.use_automasking_boundary_face_sets: + col.prop(sculpt.brush, "automasking_boundary_edges_propagation_steps") + + col.separator() + + col = layout.column(align=True) + row = col.row() + row.prop(sculpt, "use_automasking_cavity", text="Cavity") + + is_cavity_active = sculpt.use_automasking_cavity or sculpt.use_automasking_cavity_inverted + + if is_cavity_active: + row.operator("sculpt.mask_from_cavity", text="Create Mask") + + col.prop(sculpt, "use_automasking_cavity_inverted", text="Cavity (inverted)") + + if is_cavity_active: + col = layout.column(align=True) + col.prop(sculpt, "automasking_cavity_factor", text="Factor") + col.prop(sculpt, "automasking_cavity_blur_steps", text="Blur") + + col = layout.column() + col.prop(sculpt, "use_automasking_custom_cavity_curve", text="Custom Curve") + + if sculpt.use_automasking_custom_cavity_curve: + col.template_curve_mapping(sculpt, "automasking_cavity_curve") + + col.separator() + + col = layout.column(align=True) + col.prop(sculpt, "use_automasking_view_normal", text="View Normal") + + if sculpt.use_automasking_view_normal: + col.prop(sculpt, "use_automasking_view_occlusion", text="Occlusion") + subcol = col.column(align=True) + subcol.active = not sculpt.use_automasking_view_occlusion + subcol.prop(sculpt, "automasking_view_normal_limit", text="Limit") + subcol.prop(sculpt, "automasking_view_normal_falloff", text="Falloff") + + col = layout.column() + col.prop(sculpt, "use_automasking_start_normal", text="Area Normal") + + if sculpt.use_automasking_start_normal: + col = layout.column(align=True) + col.prop(sculpt, "automasking_start_normal_limit", text="Limit") + col.prop(sculpt, "automasking_start_normal_falloff", text="Falloff") + + class VIEW3D_PT_sculpt_context_menu(Panel): # Only for popover, these are dummy values. bl_space_type = 'VIEW_3D' @@ -8072,6 +8148,7 @@ classes = ( VIEW3D_PT_gpencil_sculpt_context_menu, VIEW3D_PT_gpencil_weight_context_menu, VIEW3D_PT_gpencil_draw_context_menu, + VIEW3D_PT_sculpt_automasking, VIEW3D_PT_sculpt_context_menu, TOPBAR_PT_gpencil_materials, TOPBAR_PT_gpencil_vertexcolor, diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py b/release/scripts/startup/bl_ui/space_view3d_toolbar.py index 3357676bf2f..fec156580cf 100644 --- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py +++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py @@ -52,6 +52,8 @@ class VIEW3D_MT_brush_context_menu(Menu): elif context.sculpt_object: layout.prop_menu_enum(brush, "sculpt_tool") layout.operator("brush.reset") + elif context.tool_settings.curves_sculpt: + layout.prop_menu_enum(brush, "curves_sculpt_tool") class VIEW3D_MT_brush_gpencil_context_menu(Menu): @@ -81,22 +83,6 @@ class VIEW3D_MT_brush_gpencil_context_menu(Menu): layout.operator("gpencil.brush_reset_all") -class VIEW3D_MT_brush_context_menu_paint_modes(Menu): - bl_label = "Enabled Modes" - - def draw(self, context): - layout = self.layout - - settings = UnifiedPaintPanel.paint_settings(context) - brush = settings.brush - - layout.prop(brush, "use_paint_sculpt", text="Sculpt") - layout.prop(brush, "use_paint_uv_sculpt", text="UV Sculpt") - layout.prop(brush, "use_paint_vertex", text="Vertex Paint") - layout.prop(brush, "use_paint_weight", text="Weight Paint") - layout.prop(brush, "use_paint_image", text="Texture Paint") - - class View3DPanel: bl_space_type = 'VIEW_3D' bl_region_type = 'UI' @@ -964,52 +950,6 @@ class VIEW3D_PT_sculpt_options(Panel, View3DPaintPanel): col.prop(sculpt, "use_sculpt_delay_updates") col.prop(sculpt, "use_deform_only") - col.separator() - - col = layout.column(heading="Auto-Masking", align=True) - - col.prop(sculpt, "use_automasking_topology", text="Topology") - col.prop(sculpt, "use_automasking_face_sets", text="Face Sets") - col.prop(sculpt, "use_automasking_boundary_edges", text="Mesh Boundary") - col.prop(sculpt, "use_automasking_boundary_face_sets", text="Face Sets Boundary") - col.prop(sculpt, "use_automasking_cavity", text="Cavity") - col.prop(sculpt, "use_automasking_cavity_inverted", text="Cavity (Inverted)") - col.prop(sculpt, "use_automasking_start_normal", text="Area Normal") - col.prop(sculpt, "use_automasking_view_normal", text="View Normal") - - if sculpt.use_automasking_start_normal: - col.separator() - - col.prop(sculpt, "automasking_start_normal_limit") - col.prop(sculpt, "automasking_start_normal_falloff") - - if sculpt.use_automasking_view_normal: - col.separator() - - col.prop(sculpt, "use_automasking_view_occlusion", text="Occlusion") - col.prop(sculpt, "automasking_view_normal_limit") - col.prop(sculpt, "automasking_view_normal_falloff") - - col.separator() - col.prop(sculpt.brush, "automasking_boundary_edges_propagation_steps") - - if sculpt.use_automasking_cavity or sculpt.use_automasking_cavity_inverted: - col.separator() - - col2 = col.column() - props = col2.operator("sculpt.mask_from_cavity", text="Mask From Cavity") - props.use_automask_settings = True - - col2 = col.column() - - col2.prop(sculpt, "automasking_cavity_factor", text="Cavity Factor") - col2.prop(sculpt, "automasking_cavity_blur_steps", text="Cavity Blur") - - col2.prop(sculpt, "use_automasking_custom_cavity_curve", text="Use Curve") - - if sculpt.use_automasking_custom_cavity_curve: - col2.template_curve_mapping(sculpt, "automasking_cavity_curve") - class VIEW3D_PT_sculpt_options_gravity(Panel, View3DPaintPanel): bl_context = ".sculpt_mode" # dot on purpose (access from topbar) @@ -2419,7 +2359,6 @@ class VIEW3D_PT_gpencil_brush_presets(Panel, PresetPanel): classes = ( VIEW3D_MT_brush_context_menu, VIEW3D_MT_brush_gpencil_context_menu, - VIEW3D_MT_brush_context_menu_paint_modes, VIEW3D_PT_tools_object_options, VIEW3D_PT_tools_object_options_transform, VIEW3D_PT_tools_meshedit_options, |