UI: de-duplicate top-bar and panel paint scripts
- Fixes missing check for unified brush in sculpt mode. - Re-orders material first in gpencil paint mode (matching color-first for other paint modes). - Avoid minor differences (missing tablet pressure options from topbar). - Don't repeat properties already displayed in the topbar when opening the brush popover.
This commit is contained in:
@@ -254,29 +254,11 @@ class GreasePencilStrokeSculptPanel:
|
||||
|
||||
layout.template_icon_view(settings, "sculpt_tool", show_labels=True)
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.prop(brush, "size", slider=True)
|
||||
sub = row.row(align=True)
|
||||
sub.enabled = tool not in {'GRAB', 'CLONE'}
|
||||
sub.prop(brush, "use_pressure_radius", text="")
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.prop(brush, "strength", slider=True)
|
||||
row.prop(brush, "use_pressure_strength", text="")
|
||||
|
||||
layout.prop(brush, "use_falloff")
|
||||
|
||||
layout.use_property_split = False
|
||||
if tool in {'THICKNESS', 'STRENGTH'}:
|
||||
layout.row().prop(brush, "direction", expand=True)
|
||||
elif tool == 'PINCH':
|
||||
row = layout.row(align=True)
|
||||
row.prop_enum(brush, "direction", value='ADD', text="Pinch")
|
||||
row.prop_enum(brush, "direction", value='SUBTRACT', text="Inflate")
|
||||
elif tool == 'TWIST':
|
||||
row = layout.row(align=True)
|
||||
row.prop_enum(brush, "direction", value='ADD', text="CCW")
|
||||
row.prop_enum(brush, "direction", value='SUBTRACT', text="CW")
|
||||
if not self.is_popover:
|
||||
from .properties_paint_common import (
|
||||
brush_basic_gpencil_sculpt_settings,
|
||||
)
|
||||
brush_basic_gpencil_sculpt_settings(layout, context, brush)
|
||||
|
||||
|
||||
class GreasePencilSculptOptionsPanel:
|
||||
|
@@ -199,22 +199,8 @@ def brush_texpaint_common(panel, context, layout, brush, settings, projpaint=Fal
|
||||
|
||||
col.separator()
|
||||
|
||||
if capabilities.has_radius:
|
||||
row = col.row(align=True)
|
||||
panel.prop_unified_size(row, context, brush, "size", slider=True, text="Radius")
|
||||
panel.prop_unified_size(row, context, brush, "use_pressure_size")
|
||||
|
||||
row = col.row(align=True)
|
||||
|
||||
if capabilities.has_space_attenuation:
|
||||
row.prop(brush, "use_space_attenuation", toggle=True, icon_only=True)
|
||||
|
||||
panel.prop_unified_strength(row, context, brush, "strength", text="Strength")
|
||||
panel.prop_unified_strength(row, context, brush, "use_pressure_strength")
|
||||
|
||||
if brush.image_tool in {'DRAW', 'FILL'}:
|
||||
col.separator()
|
||||
col.prop(brush, "blend", text="Blend")
|
||||
if not panel.is_popover:
|
||||
brush_basic_texpaint_settings(col, context, brush)
|
||||
|
||||
col = layout.column()
|
||||
|
||||
@@ -311,6 +297,187 @@ def brush_mask_texture_settings(layout, brush):
|
||||
col.prop(mask_tex_slot, "offset")
|
||||
col.prop(mask_tex_slot, "scale")
|
||||
|
||||
# Basic Brush Options
|
||||
#
|
||||
# Share between topbar and brush panel.
|
||||
|
||||
def brush_basic_wpaint_settings(layout, context, brush, *, compact=False):
|
||||
row = layout.row(align=True)
|
||||
UnifiedPaintPanel.prop_unified_weight(row, context, brush, "weight", slider=True, text="Weight")
|
||||
|
||||
row = layout.row(align=True)
|
||||
UnifiedPaintPanel.prop_unified_size(row, context, brush, "size", slider=True, text="Radius")
|
||||
UnifiedPaintPanel.prop_unified_size(row, context, brush, "use_pressure_size")
|
||||
|
||||
row = layout.row(align=True)
|
||||
UnifiedPaintPanel.prop_unified_strength(row, context, brush, "strength", text="Strength")
|
||||
UnifiedPaintPanel.prop_unified_strength(row, context, brush, "use_pressure_strength")
|
||||
|
||||
layout.separator()
|
||||
layout.prop(brush, "blend", text="" if compact else "Blend")
|
||||
|
||||
|
||||
def brush_basic_vpaint_settings(layout, context, brush, *, compact=False):
|
||||
row = layout.row(align=True)
|
||||
UnifiedPaintPanel.prop_unified_size(row, context, brush, "size", slider=True, text="Radius")
|
||||
UnifiedPaintPanel.prop_unified_size(row, context, brush, "use_pressure_size")
|
||||
|
||||
row = layout.row(align=True)
|
||||
UnifiedPaintPanel.prop_unified_strength(row, context, brush, "strength", text="Strength")
|
||||
UnifiedPaintPanel.prop_unified_strength(row, context, brush, "use_pressure_strength")
|
||||
|
||||
layout.separator()
|
||||
layout.prop(brush, "blend", text="" if compact else "Blend")
|
||||
|
||||
|
||||
def brush_basic_texpaint_settings(layout, context, brush, *, compact=False):
|
||||
capabilities = brush.image_paint_capabilities
|
||||
|
||||
if capabilities.has_radius:
|
||||
row = layout.row(align=True)
|
||||
UnifiedPaintPanel.prop_unified_size(row, context, brush, "size", slider=True, text="Radius")
|
||||
UnifiedPaintPanel.prop_unified_size(row, context, brush, "use_pressure_size")
|
||||
|
||||
row = layout.row(align=True)
|
||||
|
||||
if capabilities.has_space_attenuation:
|
||||
row.prop(brush, "use_space_attenuation", toggle=True, icon_only=True)
|
||||
|
||||
UnifiedPaintPanel.prop_unified_strength(row, context, brush, "strength", text="Strength")
|
||||
UnifiedPaintPanel.prop_unified_strength(row, context, brush, "use_pressure_strength")
|
||||
|
||||
if brush.image_tool in {'DRAW', 'FILL'}:
|
||||
layout.separator()
|
||||
layout.prop(brush, "blend", text="" if compact else "Blend")
|
||||
|
||||
|
||||
def brush_basic_sculpt_settings(layout, context, brush, *, compact=False):
|
||||
tool_settings = context.tool_settings
|
||||
capabilities = brush.sculpt_capabilities
|
||||
|
||||
row = layout.row(align=True)
|
||||
ups = tool_settings.unified_paint_settings
|
||||
if (
|
||||
(ups.use_unified_size and ups.use_locked_size) or
|
||||
((not ups.use_unified_size) and brush.use_locked_size)
|
||||
):
|
||||
UnifiedPaintPanel.prop_unified_size(row, context, brush, "use_locked_size", icon='LOCKED')
|
||||
UnifiedPaintPanel.prop_unified_size(row, context, brush, "unprojected_radius", slider=True, text="Radius")
|
||||
else:
|
||||
UnifiedPaintPanel.prop_unified_size(row, context, brush, "use_locked_size", icon='UNLOCKED')
|
||||
UnifiedPaintPanel.prop_unified_size(row, context, brush, "size", slider=True, text="Radius")
|
||||
|
||||
UnifiedPaintPanel.prop_unified_size(row, context, brush, "use_pressure_size")
|
||||
|
||||
# strength, use_strength_pressure, and use_strength_attenuation
|
||||
layout.separator()
|
||||
row = layout.row(align=True)
|
||||
|
||||
if capabilities.has_space_attenuation:
|
||||
row.prop(brush, "use_space_attenuation", toggle=True, icon_only=True)
|
||||
|
||||
UnifiedPaintPanel.prop_unified_strength(row, context, brush, "strength", text="Strength")
|
||||
|
||||
if capabilities.has_strength_pressure:
|
||||
UnifiedPaintPanel.prop_unified_strength(row, context, brush, "use_pressure_strength")
|
||||
|
||||
# direction
|
||||
layout.separator()
|
||||
layout.row().prop(brush, "direction", expand=True, **({"text": ""} if compact else {}))
|
||||
|
||||
|
||||
def brush_basic_gpencil_paint_settings(layout, context, brush, *, compact=False):
|
||||
gp_settings = brush.gpencil_settings
|
||||
|
||||
# Brush details
|
||||
if brush.gpencil_tool == 'ERASE':
|
||||
row = layout.row(align=True)
|
||||
row.prop(brush, "size", text="Radius")
|
||||
row.prop(gp_settings, "use_pressure", text="", icon='STYLUS_PRESSURE')
|
||||
row.prop(gp_settings, "use_occlude_eraser", text="", icon='XRAY')
|
||||
|
||||
if gp_settings.eraser_mode == 'SOFT':
|
||||
row = layout.row(align=True)
|
||||
row.prop(gp_settings, "pen_strength", slider=True)
|
||||
row.prop(gp_settings, "use_strength_pressure", text="", icon='STYLUS_PRESSURE')
|
||||
row = layout.row(align=True)
|
||||
row.prop(gp_settings, "eraser_strength_factor")
|
||||
row = layout.row(align=True)
|
||||
row.prop(gp_settings, "eraser_thickness_factor")
|
||||
elif brush.gpencil_tool == 'FILL':
|
||||
col = layout.column(align=True)
|
||||
col.prop(gp_settings, "fill_leak", text="Leak Size")
|
||||
col.separator()
|
||||
col.prop(brush, "size", text="Thickness")
|
||||
col.prop(gp_settings, "fill_simplify_level", text="Simplify")
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.prop(gp_settings, "fill_draw_mode", text="Boundary Draw Mode")
|
||||
row.prop(gp_settings, "show_fill_boundary", text="", icon='GRID')
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.enabled = gp_settings.fill_draw_mode != 'STROKE'
|
||||
col.prop(gp_settings, "show_fill", text="Ignore Transparent Strokes")
|
||||
sub = col.row(align=True)
|
||||
sub.enabled = not gp_settings.show_fill
|
||||
sub.prop(gp_settings, "fill_threshold", text="Threshold")
|
||||
else: # brush.gpencil_tool == 'DRAW':
|
||||
row = layout.row(align=True)
|
||||
row.prop(brush, "size", text="Radius")
|
||||
row.prop(gp_settings, "use_pressure", text="", icon='STYLUS_PRESSURE')
|
||||
row = layout.row(align=True)
|
||||
row.prop(gp_settings, "pen_strength", slider=True)
|
||||
row.prop(gp_settings, "use_strength_pressure", text="", icon='STYLUS_PRESSURE')
|
||||
|
||||
|
||||
def brush_basic_gpencil_sculpt_settings(layout, context, brush, *, compact=False):
|
||||
tool_settings = context.tool_settings
|
||||
settings = tool_settings.gpencil_sculpt
|
||||
tool = settings.sculpt_tool
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.prop(brush, "size", slider=True)
|
||||
sub = row.row(align=True)
|
||||
sub.enabled = tool not in {'GRAB', 'CLONE'}
|
||||
sub.prop(brush, "use_pressure_radius", text="")
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.prop(brush, "strength", slider=True)
|
||||
row.prop(brush, "use_pressure_strength", text="")
|
||||
|
||||
layout.prop(brush, "use_falloff")
|
||||
|
||||
if compact:
|
||||
if tool in {'THICKNESS', 'STRENGTH', 'PINCH', 'TWIST'}:
|
||||
row.separator()
|
||||
row.prop(brush, "direction", expand=True, text="")
|
||||
else:
|
||||
use_property_split_prev = layout.use_property_split
|
||||
layout.use_property_split = False
|
||||
if tool in {'THICKNESS', 'STRENGTH'}:
|
||||
layout.row().prop(brush, "direction", expand=True)
|
||||
elif tool == 'PINCH':
|
||||
row = layout.row(align=True)
|
||||
row.prop_enum(brush, "direction", value='ADD', text="Pinch")
|
||||
row.prop_enum(brush, "direction", value='SUBTRACT', text="Inflate")
|
||||
elif tool == 'TWIST':
|
||||
row = layout.row(align=True)
|
||||
row.prop_enum(brush, "direction", value='ADD', text="CCW")
|
||||
row.prop_enum(brush, "direction", value='SUBTRACT', text="CW")
|
||||
layout.use_property_split = use_property_split_prev
|
||||
|
||||
|
||||
def brush_basic_gpencil_weight_settings(layout, context, brush, *, compact=False):
|
||||
layout.prop(brush, "size", slider=True)
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.prop(brush, "strength", slider=True)
|
||||
row.prop(brush, "use_pressure_strength", text="")
|
||||
|
||||
layout.prop(brush, "use_falloff")
|
||||
|
||||
layout.prop(brush, "target_weight", slider=True)
|
||||
|
||||
|
||||
classes = (
|
||||
VIEW3D_MT_tools_projectpaint_clone,
|
||||
|
@@ -236,11 +236,10 @@ class _draw_left_context_mode:
|
||||
if brush is None:
|
||||
return
|
||||
|
||||
from .properties_paint_common import UnifiedPaintPanel
|
||||
|
||||
UnifiedPaintPanel.prop_unified_size(layout, context, brush, "size", slider=True, text="Radius")
|
||||
UnifiedPaintPanel.prop_unified_strength(layout, context, brush, "strength", slider=True, text="Strength")
|
||||
layout.prop(brush, "direction", text="", expand=True)
|
||||
from .properties_paint_common import (
|
||||
brush_basic_sculpt_settings,
|
||||
)
|
||||
brush_basic_sculpt_settings(layout, context, brush, compact=True)
|
||||
|
||||
@staticmethod
|
||||
def PAINT_TEXTURE(context, layout, tool):
|
||||
@@ -254,12 +253,12 @@ class _draw_left_context_mode:
|
||||
if brush is None:
|
||||
return
|
||||
|
||||
from .properties_paint_common import UnifiedPaintPanel
|
||||
|
||||
from .properties_paint_common import (
|
||||
UnifiedPaintPanel,
|
||||
brush_basic_texpaint_settings,
|
||||
)
|
||||
UnifiedPaintPanel.prop_unified_color(layout, context, brush, "color", text="")
|
||||
UnifiedPaintPanel.prop_unified_size(layout, context, brush, "size", slider=True, text="Radius")
|
||||
UnifiedPaintPanel.prop_unified_strength(layout, context, brush, "strength", slider=True, text="Strength")
|
||||
layout.prop(brush, "blend", text="")
|
||||
brush_basic_texpaint_settings(layout, context, brush, compact=True)
|
||||
|
||||
@staticmethod
|
||||
def PAINT_VERTEX(context, layout, tool):
|
||||
@@ -273,12 +272,12 @@ class _draw_left_context_mode:
|
||||
if brush is None:
|
||||
return
|
||||
|
||||
from .properties_paint_common import UnifiedPaintPanel
|
||||
|
||||
from .properties_paint_common import (
|
||||
UnifiedPaintPanel,
|
||||
brush_basic_vpaint_settings,
|
||||
)
|
||||
UnifiedPaintPanel.prop_unified_color(layout, context, brush, "color", text="")
|
||||
UnifiedPaintPanel.prop_unified_size(layout, context, brush, "size", slider=True, text="Radius")
|
||||
UnifiedPaintPanel.prop_unified_strength(layout, context, brush, "strength", slider=True, text="Strength")
|
||||
layout.prop(brush, "blend", text="")
|
||||
brush_basic_vpaint_settings(layout, context, brush, compact=True)
|
||||
|
||||
@staticmethod
|
||||
def PAINT_WEIGHT(context, layout, tool):
|
||||
@@ -291,12 +290,8 @@ class _draw_left_context_mode:
|
||||
if brush is None:
|
||||
return
|
||||
|
||||
from .properties_paint_common import UnifiedPaintPanel
|
||||
|
||||
UnifiedPaintPanel.prop_unified_weight(layout, context, brush, "weight", slider=True, text="Weight")
|
||||
UnifiedPaintPanel.prop_unified_size(layout, context, brush, "size", slider=True, text="Radius")
|
||||
UnifiedPaintPanel.prop_unified_strength(layout, context, brush, "strength", slider=True, text="Strength")
|
||||
layout.prop(brush, "blend", text="")
|
||||
from .properties_paint_common import brush_basic_wpaint_settings
|
||||
brush_basic_wpaint_settings(layout, context, brush, compact=True)
|
||||
|
||||
@staticmethod
|
||||
def PAINT_GPENCIL(context, layout, tool):
|
||||
@@ -346,38 +341,13 @@ class _draw_left_context_mode:
|
||||
settings = tool_settings.gpencil_paint
|
||||
row.template_ID_preview(settings, "brush", rows=3, cols=8, hide_buttons=True)
|
||||
|
||||
if brush.gpencil_tool == 'ERASE':
|
||||
row = layout.row(align=True)
|
||||
row.prop(brush, "size", text="Radius")
|
||||
row.prop(gp_settings, "use_pressure", text="", icon='STYLUS_PRESSURE')
|
||||
row.prop(gp_settings, "use_occlude_eraser", text="", icon='XRAY')
|
||||
if gp_settings.eraser_mode == 'SOFT':
|
||||
row = layout.row(align=True)
|
||||
row.prop(gp_settings, "pen_strength", slider=True)
|
||||
row.prop(gp_settings, "use_strength_pressure", text="", icon='STYLUS_PRESSURE')
|
||||
elif brush.gpencil_tool == 'FILL':
|
||||
row = layout.row()
|
||||
row.prop(gp_settings, "fill_leak", text="Leak Size")
|
||||
row.prop(brush, "size", text="Thickness")
|
||||
row.prop(gp_settings, "fill_simplify_level", text="Simplify")
|
||||
|
||||
if brush.gpencil_tool in {'FILL', 'DRAW'}:
|
||||
draw_color_selector()
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.prop(gp_settings, "fill_draw_mode", text="")
|
||||
row.prop(gp_settings, "show_fill_boundary", text="", icon='GRID')
|
||||
|
||||
else: # brush.gpencil_tool == 'DRAW':
|
||||
row = layout.row(align=True)
|
||||
row.prop(brush, "size", text="Radius")
|
||||
if is_paint:
|
||||
row.prop(gp_settings, "use_pressure", text="", icon='STYLUS_PRESSURE')
|
||||
row = layout.row(align=True)
|
||||
row.prop(gp_settings, "pen_strength", slider=True)
|
||||
if is_paint:
|
||||
row.prop(gp_settings, "use_strength_pressure", text="", icon='STYLUS_PRESSURE')
|
||||
|
||||
draw_color_selector()
|
||||
from .properties_paint_common import (
|
||||
brush_basic_gpencil_paint_settings,
|
||||
)
|
||||
brush_basic_gpencil_paint_settings(layout, context, brush, compact=True)
|
||||
|
||||
if tool.name in {"Arc", "Curve", "Line", "Box", "Circle"}:
|
||||
settings = context.tool_settings.gpencil_sculpt
|
||||
@@ -396,22 +366,12 @@ class _draw_left_context_mode:
|
||||
return
|
||||
tool_settings = context.tool_settings
|
||||
settings = tool_settings.gpencil_sculpt
|
||||
tool = settings.sculpt_tool
|
||||
brush = settings.brush
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.prop(brush, "size", slider=True)
|
||||
sub = row.row(align=True)
|
||||
sub.enabled = tool not in {'GRAB', 'CLONE'}
|
||||
sub.prop(brush, "use_pressure_radius", text="")
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.prop(brush, "strength", slider=True)
|
||||
row.prop(brush, "use_pressure_strength", text="")
|
||||
|
||||
if tool in {'THICKNESS', 'STRENGTH', 'PINCH', 'TWIST'}:
|
||||
row.separator()
|
||||
row.prop(brush, "direction", expand=True, text="")
|
||||
from .properties_paint_common import (
|
||||
brush_basic_gpencil_sculpt_settings,
|
||||
)
|
||||
brush_basic_gpencil_sculpt_settings(layout, context, brush, compact=True)
|
||||
|
||||
@staticmethod
|
||||
def WEIGHT_GPENCIL(context, layout, tool):
|
||||
@@ -421,13 +381,10 @@ class _draw_left_context_mode:
|
||||
settings = tool_settings.gpencil_sculpt
|
||||
brush = settings.brush
|
||||
|
||||
layout.prop(brush, "size", slider=True)
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.prop(brush, "strength", slider=True)
|
||||
row.prop(brush, "use_pressure_strength", text="")
|
||||
|
||||
layout.prop(brush, "target_weight", slider=True)
|
||||
from .properties_paint_common import (
|
||||
brush_basic_gpencil_weight_settings,
|
||||
)
|
||||
brush_basic_gpencil_weight_settings(layout, context, brush, compact=True)
|
||||
|
||||
@staticmethod
|
||||
def PARTICLE(context, layout, tool):
|
||||
@@ -492,12 +449,12 @@ class _draw_left_context_mode:
|
||||
if brush is None:
|
||||
return
|
||||
|
||||
from .properties_paint_common import UnifiedPaintPanel
|
||||
|
||||
from .properties_paint_common import (
|
||||
UnifiedPaintPanel,
|
||||
brush_basic_texpaint_settings,
|
||||
)
|
||||
UnifiedPaintPanel.prop_unified_color(layout, context, brush, "color", text="")
|
||||
UnifiedPaintPanel.prop_unified_size(layout, context, brush, "size", slider=True, text="Radius")
|
||||
UnifiedPaintPanel.prop_unified_strength(layout, context, brush, "strength", slider=True, text="Strength")
|
||||
layout.prop(brush, "blend", text="")
|
||||
brush_basic_texpaint_settings(layout, context, brush, compact=True)
|
||||
|
||||
|
||||
class TOPBAR_PT_gpencil_layers(Panel):
|
||||
|
@@ -27,9 +27,9 @@ from .properties_grease_pencil_common import (
|
||||
)
|
||||
from .properties_paint_common import (
|
||||
UnifiedPaintPanel,
|
||||
brush_texture_settings,
|
||||
brush_texpaint_common,
|
||||
brush_mask_texture_settings,
|
||||
brush_texpaint_common,
|
||||
brush_texture_settings,
|
||||
)
|
||||
from bl_operators.presets import PresetMenu
|
||||
|
||||
@@ -257,36 +257,18 @@ class VIEW3D_PT_tools_brush(Panel, View3DPaintPanel):
|
||||
# Sculpt Mode #
|
||||
|
||||
elif context.sculpt_object and brush:
|
||||
from .properties_paint_common import (
|
||||
brush_basic_sculpt_settings,
|
||||
)
|
||||
|
||||
capabilities = brush.sculpt_capabilities
|
||||
|
||||
col = layout.column()
|
||||
|
||||
col.separator()
|
||||
|
||||
row = col.row(align=True)
|
||||
|
||||
ups = tool_settings.unified_paint_settings
|
||||
if ((ups.use_unified_size and ups.use_locked_size) or
|
||||
((not ups.use_unified_size) and brush.use_locked_size)):
|
||||
self.prop_unified_size(row, context, brush, "use_locked_size", icon='LOCKED')
|
||||
self.prop_unified_size(row, context, brush, "unprojected_radius", slider=True, text="Radius")
|
||||
else:
|
||||
self.prop_unified_size(row, context, brush, "use_locked_size", icon='UNLOCKED')
|
||||
self.prop_unified_size(row, context, brush, "size", slider=True, text="Radius")
|
||||
|
||||
self.prop_unified_size(row, context, brush, "use_pressure_size")
|
||||
|
||||
# strength, use_strength_pressure, and use_strength_attenuation
|
||||
col.separator()
|
||||
row = col.row(align=True)
|
||||
|
||||
if capabilities.has_space_attenuation:
|
||||
row.prop(brush, "use_space_attenuation", toggle=True, icon_only=True)
|
||||
|
||||
self.prop_unified_strength(row, context, brush, "strength", text="Strength")
|
||||
|
||||
if capabilities.has_strength_pressure:
|
||||
self.prop_unified_strength(row, context, brush, "use_pressure_strength")
|
||||
if not self.is_popover:
|
||||
brush_basic_sculpt_settings(col, context, brush)
|
||||
|
||||
# auto_smooth_factor and use_inverse_smooth_pressure
|
||||
if capabilities.has_auto_smooth:
|
||||
@@ -350,10 +332,6 @@ class VIEW3D_PT_tools_brush(Panel, View3DPaintPanel):
|
||||
col.prop(brush, "use_frontface", text="Front Faces Only")
|
||||
col.prop(brush, "use_projected")
|
||||
|
||||
# direction
|
||||
col.separator()
|
||||
col.row().prop(brush, "direction", expand=True)
|
||||
|
||||
# use_accumulate
|
||||
if capabilities.has_accumulate:
|
||||
col.separator()
|
||||
@@ -384,22 +362,14 @@ class VIEW3D_PT_tools_brush(Panel, View3DPaintPanel):
|
||||
|
||||
# Weight Paint Mode #
|
||||
elif context.weight_paint_object and brush:
|
||||
from .properties_paint_common import (
|
||||
brush_basic_wpaint_settings,
|
||||
)
|
||||
|
||||
col = layout.column()
|
||||
|
||||
row = col.row(align=True)
|
||||
self.prop_unified_weight(row, context, brush, "weight", slider=True, text="Weight")
|
||||
|
||||
row = col.row(align=True)
|
||||
self.prop_unified_size(row, context, brush, "size", slider=True, text="Radius")
|
||||
self.prop_unified_size(row, context, brush, "use_pressure_size")
|
||||
|
||||
row = col.row(align=True)
|
||||
self.prop_unified_strength(row, context, brush, "strength", text="Strength")
|
||||
self.prop_unified_strength(row, context, brush, "use_pressure_strength")
|
||||
|
||||
col.separator()
|
||||
col.prop(brush, "blend", text="Blend")
|
||||
if not self.is_popover:
|
||||
brush_basic_wpaint_settings(col, context, brush)
|
||||
|
||||
if brush.weight_tool != 'SMEAR':
|
||||
col.prop(brush, "use_accumulate")
|
||||
@@ -420,6 +390,10 @@ class VIEW3D_PT_tools_brush(Panel, View3DPaintPanel):
|
||||
|
||||
# Vertex Paint Mode #
|
||||
elif context.vertex_paint_object and brush:
|
||||
from .properties_paint_common import (
|
||||
brush_basic_vpaint_settings,
|
||||
)
|
||||
|
||||
col = layout.column()
|
||||
self.prop_unified_color_picker(col, context, brush, "color", value_slider=True)
|
||||
if settings.palette:
|
||||
@@ -431,16 +405,10 @@ class VIEW3D_PT_tools_brush(Panel, View3DPaintPanel):
|
||||
row.operator("paint.brush_colors_flip", icon='FILE_REFRESH', text="")
|
||||
|
||||
col.separator()
|
||||
row = col.row(align=True)
|
||||
self.prop_unified_size(row, context, brush, "size", slider=True, text="Radius")
|
||||
self.prop_unified_size(row, context, brush, "use_pressure_size")
|
||||
|
||||
row = col.row(align=True)
|
||||
self.prop_unified_strength(row, context, brush, "strength", text="Strength")
|
||||
self.prop_unified_strength(row, context, brush, "use_pressure_strength")
|
||||
if not self.is_popover:
|
||||
brush_basic_vpaint_settings(col, context, brush)
|
||||
|
||||
col.separator()
|
||||
col.prop(brush, "blend", text="Blend")
|
||||
col.prop(brush, "use_alpha")
|
||||
|
||||
if brush.vertex_tool != 'SMEAR':
|
||||
@@ -1501,52 +1469,14 @@ class VIEW3D_PT_tools_grease_pencil_brush(View3DPanel, Panel):
|
||||
# XXX: Items in "sub" currently show up beside the brush selector in a separate column
|
||||
if brush.gpencil_tool == 'ERASE':
|
||||
sub.prop(gp_settings, "use_default_eraser", text="")
|
||||
elif brush.gpencil_tool in {'DRAW', 'FILL'}:
|
||||
layout.row(align=True).template_ID(gp_settings, "material")
|
||||
|
||||
# Brush details
|
||||
if brush.gpencil_tool == 'ERASE':
|
||||
row = layout.row(align=True)
|
||||
row.prop(brush, "size", text="Radius")
|
||||
row.prop(gp_settings, "use_pressure", text="", icon='STYLUS_PRESSURE')
|
||||
row.prop(gp_settings, "use_occlude_eraser", text="", icon='XRAY')
|
||||
|
||||
if gp_settings.eraser_mode == 'SOFT':
|
||||
row = layout.row(align=True)
|
||||
row.prop(gp_settings, "pen_strength", slider=True)
|
||||
row.prop(gp_settings, "use_strength_pressure", text="", icon='STYLUS_PRESSURE')
|
||||
row = layout.row(align=True)
|
||||
row.prop(gp_settings, "eraser_strength_factor")
|
||||
row = layout.row(align=True)
|
||||
row.prop(gp_settings, "eraser_thickness_factor")
|
||||
elif brush.gpencil_tool == 'FILL':
|
||||
col = layout.column(align=True)
|
||||
col.prop(gp_settings, "fill_leak", text="Leak Size")
|
||||
col.separator()
|
||||
col.prop(brush, "size", text="Thickness")
|
||||
col.prop(gp_settings, "fill_simplify_level", text="Simplify")
|
||||
|
||||
col = layout.row(align=True)
|
||||
col.template_ID(gp_settings, "material")
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.prop(gp_settings, "fill_draw_mode", text="Boundary Draw Mode")
|
||||
row.prop(gp_settings, "show_fill_boundary", text="", icon='GRID')
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.enabled = gp_settings.fill_draw_mode != 'STROKE'
|
||||
col.prop(gp_settings, "show_fill", text="Ignore Transparent Strokes")
|
||||
sub = col.row(align=True)
|
||||
sub.enabled = not gp_settings.show_fill
|
||||
sub.prop(gp_settings, "fill_threshold", text="Threshold")
|
||||
else: # bgpsettings.tool == 'DRAW':
|
||||
row = layout.row(align=True)
|
||||
row.prop(brush, "size", text="Radius")
|
||||
row.prop(gp_settings, "use_pressure", text="", icon='STYLUS_PRESSURE')
|
||||
row = layout.row(align=True)
|
||||
row.prop(gp_settings, "pen_strength", slider=True)
|
||||
row.prop(gp_settings, "use_strength_pressure", text="", icon='STYLUS_PRESSURE')
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.template_ID(gp_settings, "material")
|
||||
if not self.is_popover:
|
||||
from .properties_paint_common import (
|
||||
brush_basic_gpencil_paint_settings,
|
||||
)
|
||||
brush_basic_gpencil_paint_settings(layout, context, brush, compact=True)
|
||||
|
||||
|
||||
# Grease Pencil drawing brushes options
|
||||
@@ -1830,12 +1760,12 @@ class VIEW3D_PT_tools_grease_pencil_weight_paint(View3DPanel, Panel):
|
||||
layout.template_icon_view(settings, "weight_tool", show_labels=True)
|
||||
|
||||
col = layout.column()
|
||||
col.prop(brush, "size", slider=True)
|
||||
row = col.row(align=True)
|
||||
row.prop(brush, "strength", slider=True)
|
||||
row.prop(brush, "use_pressure_strength", text="")
|
||||
|
||||
col.prop(brush, "use_falloff")
|
||||
if not self.is_popover:
|
||||
from .properties_paint_common import (
|
||||
brush_basic_gpencil_weight_settings,
|
||||
)
|
||||
brush_basic_gpencil_weight_settings(col, context, brush)
|
||||
|
||||
|
||||
# Grease Pencil Brush Appeareance (one for each mode)
|
||||
|
Reference in New Issue
Block a user