Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'space_view3d_brush_menus/brush_menu.py')
-rw-r--r--space_view3d_brush_menus/brush_menu.py491
1 files changed, 233 insertions, 258 deletions
diff --git a/space_view3d_brush_menus/brush_menu.py b/space_view3d_brush_menus/brush_menu.py
index 6940304e..4568c225 100644
--- a/space_view3d_brush_menus/brush_menu.py
+++ b/space_view3d_brush_menus/brush_menu.py
@@ -7,62 +7,9 @@ from bpy.types import (
)
from bpy.props import BoolProperty
from . import utils_core
+from . import brushes
from bl_ui.properties_paint_common import UnifiedPaintPanel
-
-def get_current_brush_icon(tool):
- if utils_core.get_mode() == utils_core.sculpt:
- icons = {"BLOB": 'BRUSH_BLOB',
- "CLAY": 'BRUSH_CLAY',
- "CLAY_STRIPS": 'BRUSH_CLAY_STRIPS',
- "CREASE": 'BRUSH_CREASE',
- "DRAW": 'BRUSH_SCULPT_DRAW',
- "FILL": 'BRUSH_FILL',
- "FLATTEN": 'BRUSH_FLATTEN',
- "GRAB": 'BRUSH_GRAB',
- "INFLATE": 'BRUSH_INFLATE',
- "LAYER": 'BRUSH_LAYER',
- "MASK": 'BRUSH_MASK',
- "NUDGE": 'BRUSH_NUDGE',
- "PINCH": 'BRUSH_PINCH',
- "ROTATE": 'BRUSH_ROTATE',
- "SCRAPE": 'BRUSH_SCRAPE',
- "SIMPLIFY": 'BRUSH_SUBTRACT',
- "SMOOTH": 'BRUSH_SMOOTH',
- "SNAKE_HOOK": 'BRUSH_SNAKE_HOOK',
- "THUMB": 'BRUSH_THUMB'}
-
- elif utils_core.get_mode() == utils_core.vertex_paint:
- icons = {"ADD": 'BRUSH_ADD',
- "BLUR": 'BRUSH_BLUR',
- "DARKEN": 'BRUSH_DARKEN',
- "LIGHTEN": 'BRUSH_LIGHTEN',
- "MIX": 'BRUSH_MIX',
- "MUL": 'BRUSH_MULTIPLY',
- "SUB": 'BRUSH_SUBTRACT'}
-
- elif utils_core.get_mode() == utils_core.weight_paint:
- icons = {"ADD": 'BRUSH_ADD',
- "BLUR": 'BRUSH_BLUR',
- "DARKEN": 'BRUSH_DARKEN',
- "LIGHTEN": 'BRUSH_LIGHTEN',
- "MIX": 'BRUSH_MIX',
- "MUL": 'BRUSH_MULTIPLY',
- "SUB": 'BRUSH_SUBTRACT'}
-
- elif utils_core.get_mode() == utils_core.texture_paint:
- icons = {"CLONE": 'BRUSH_CLONE',
- "DRAW": 'BRUSH_TEXDRAW',
- "FILL": 'BRUSH_TEXFILL',
- "MASK": 'BRUSH_TEXMASK',
- "SMEAR": 'BRUSH_SMEAR',
- "SOFTEN": 'BRUSH_SOFTEN'}
-
- icon = icons[tool]
-
- return icon
-
-
class BrushOptionsMenu(Menu):
bl_label = "Brush Options"
bl_idname = "VIEW3D_MT_sv3_brush_options"
@@ -70,163 +17,161 @@ class BrushOptionsMenu(Menu):
@classmethod
def poll(self, context):
return utils_core.get_mode() in (
- utils_core.sculpt, utils_core.vertex_paint,
- utils_core.weight_paint, utils_core.texture_paint,
- utils_core.particle_edit
+ 'SCULPT', 'VERTEX_PAINT',
+ 'WEIGHT_PAINT', 'TEXTURE_PAINT',
+ 'PARTICLE_EDIT'
)
- def draw_brushes(self, menu, h_brush, ico, context):
+ def draw_brushes(self, layout, h_brush, ico, context):
if utils_core.addon_settings(lists=True) == 'popup' or not h_brush:
- menu.add_item().operator(
+ layout.row().operator(
"view3d.sv3_brush_menu_popup", text="Brush",
icon=ico
)
else:
- menu.add_item().menu(
+ layout.row().menu(
"VIEW3D_MT_sv3_brushes_menu", text="Brush",
icon=ico
)
def draw(self, context):
- menu = utils_core.Menu(self)
+ mode = utils_core.get_mode()
+ layout = self.layout
- if utils_core.get_mode() == utils_core.sculpt:
- self.sculpt(menu, context)
+ if mode == 'SCULPT':
+ self.sculpt(mode, layout, context)
- elif utils_core.get_mode() in (utils_core.vertex_paint,
- utils_core.weight_paint):
- self.vw_paint(menu, context)
+ elif mode in ('VERTEX_PAINT', 'WEIGHT_PAINT'):
+ self.vw_paint(mode, layout, context)
- elif utils_core.get_mode() == utils_core.texture_paint:
- self.texpaint(menu, context)
+ elif mode == 'TEXTURE_PAINT':
+ self.texpaint(mode, layout, context)
else:
- self.particle(menu, context)
+ self.particle(layout, context)
- def sculpt(self, menu, context):
+ def sculpt(self, mode, layout, context):
has_brush = utils_core.get_brush_link(context, types="brush")
- icons = get_current_brush_icon(has_brush.sculpt_tool) if \
+ icons = brushes.brush_icon[mode][has_brush.sculpt_tool] if \
has_brush else "BRUSH_DATA"
- self.draw_brushes(menu, has_brush, icons, context)
+ self.draw_brushes(layout, has_brush, icons, context)
- menu.add_item().menu(BrushRadiusMenu.bl_idname)
+ layout.row().menu(BrushRadiusMenu.bl_idname)
if has_brush:
# if the active brush is unlinked these menus don't do anything
- menu.add_item().menu(BrushStrengthMenu.bl_idname)
- menu.add_item().menu(BrushAutosmoothMenu.bl_idname)
- menu.add_item().menu(BrushModeMenu.bl_idname)
- menu.add_item().menu("VIEW3D_MT_sv3_texture_menu")
- menu.add_item().menu("VIEW3D_MT_sv3_stroke_options")
- menu.add_item().menu("VIEW3D_MT_sv3_brush_curve_menu")
+ layout.row().menu(BrushStrengthMenu.bl_idname)
+ layout.row().menu(BrushAutosmoothMenu.bl_idname)
+ layout.row().menu(BrushModeMenu.bl_idname)
+ layout.row().menu("VIEW3D_MT_sv3_texture_menu")
+ layout.row().menu("VIEW3D_MT_sv3_stroke_options")
+ layout.row().menu("VIEW3D_MT_sv3_brush_curve_menu")
- menu.add_item().menu("VIEW3D_MT_sv3_dyntopo")
- menu.add_item().menu("VIEW3D_MT_sv3_master_symmetry_menu")
+ layout.row().menu("VIEW3D_MT_sv3_dyntopo")
+ layout.row().menu("VIEW3D_MT_sv3_master_symmetry_menu")
- def vw_paint(self, menu, context):
+ def vw_paint(self, mode, layout, context):
has_brush = utils_core.get_brush_link(context, types="brush")
- icons = get_current_brush_icon(has_brush.vertex_tool) if \
+ icons = brushes.brush_icon[mode][has_brush.vertex_tool] if \
has_brush else "BRUSH_DATA"
- if utils_core.get_mode() == utils_core.vertex_paint:
- menu.add_item().operator(ColorPickerPopup.bl_idname, icon="COLOR")
- menu.add_item().separator()
+ if mode == 'VERTEX_PAINT':
+ layout.row().operator(ColorPickerPopup.bl_idname, icon="COLOR")
+ layout.row().separator()
- self.draw_brushes(menu, has_brush, icons, context)
+ self.draw_brushes(layout, has_brush, icons, context)
- if utils_core.get_mode() == utils_core.vertex_paint:
- menu.add_item().menu(BrushRadiusMenu.bl_idname)
+ if mode == 'VERTEX_PAINT':
+ layout.row().menu(BrushRadiusMenu.bl_idname)
if has_brush:
# if the active brush is unlinked these menus don't do anything
- menu.add_item().menu(BrushStrengthMenu.bl_idname)
- menu.add_item().menu(BrushModeMenu.bl_idname)
- menu.add_item().menu("VIEW3D_MT_sv3_texture_menu")
- menu.add_item().menu("VIEW3D_MT_sv3_stroke_options")
- menu.add_item().menu("VIEW3D_MT_sv3_brush_curve_menu")
+ layout.row().menu(BrushStrengthMenu.bl_idname)
+ layout.row().menu(BrushModeMenu.bl_idname)
+ layout.row().menu("VIEW3D_MT_sv3_texture_menu")
+ layout.row().menu("VIEW3D_MT_sv3_stroke_options")
+ layout.row().menu("VIEW3D_MT_sv3_brush_curve_menu")
- if utils_core.get_mode() == utils_core.weight_paint:
- menu.add_item().menu(BrushWeightMenu.bl_idname)
- menu.add_item().menu(BrushRadiusMenu.bl_idname)
+ if mode == 'WEIGHT_PAINT':
+ layout.row().menu(BrushWeightMenu.bl_idname)
+ layout.row().menu(BrushRadiusMenu.bl_idname)
if has_brush:
# if the active brush is unlinked these menus don't do anything
- menu.add_item().menu(BrushStrengthMenu.bl_idname)
- menu.add_item().menu(BrushModeMenu.bl_idname)
- menu.add_item().menu("VIEW3D_MT_sv3_stroke_options")
- menu.add_item().menu("VIEW3D_MT_sv3_brush_curve_menu")
+ layout.row().menu(BrushStrengthMenu.bl_idname)
+ layout.row().menu(BrushModeMenu.bl_idname)
+ layout.row().menu("VIEW3D_MT_sv3_stroke_options")
+ layout.row().menu("VIEW3D_MT_sv3_brush_curve_menu")
- def texpaint(self, menu, context):
+ def texpaint(self, mode, layout, context):
toolsettings = context.tool_settings.image_paint
if context.image_paint_object and not toolsettings.detect_data():
- menu.add_item().label("Missing Data", icon="INFO")
- menu.add_item().label("See Tool Shelf", icon="BACK")
+ layout.row().label("Missing Data", icon="INFO")
+ layout.row().label("See Tool Shelf", icon="BACK")
else:
has_brush = utils_core.get_brush_link(context, types="brush")
if has_brush and has_brush.image_tool in {'DRAW', 'FILL'} and \
has_brush.blend not in {'ERASE_ALPHA', 'ADD_ALPHA'}:
- menu.add_item().operator(ColorPickerPopup.bl_idname, icon="COLOR")
- menu.add_item().separator()
+ layout.row().operator(ColorPickerPopup.bl_idname, icon="COLOR")
+ layout.row().separator()
- icons = get_current_brush_icon(has_brush.image_tool) if \
+ icons = brushes.brush_icon[mode][has_brush.image_tool] if \
has_brush else "BRUSH_DATA"
- self.draw_brushes(menu, has_brush, icons, context)
+ self.draw_brushes(layout, has_brush, icons, context)
if has_brush:
# if the active brush is unlinked these menus don't do anything
if has_brush and has_brush.image_tool in {'MASK'}:
- menu.add_item().menu(BrushWeightMenu.bl_idname, text="Mask Value")
+ layout.row().menu(BrushWeightMenu.bl_idname, text="Mask Value")
if has_brush and has_brush.image_tool not in {'FILL'}:
- menu.add_item().menu(BrushRadiusMenu.bl_idname)
+ layout.row().menu(BrushRadiusMenu.bl_idname)
- menu.add_item().menu(BrushStrengthMenu.bl_idname)
+ layout.row().menu(BrushStrengthMenu.bl_idname)
if has_brush and has_brush.image_tool in {'DRAW'}:
- menu.add_item().menu(BrushModeMenu.bl_idname)
+ layout.row().menu(BrushModeMenu.bl_idname)
+
+ layout.row().menu("VIEW3D_MT_sv3_texture_menu")
+ layout.row().menu("VIEW3D_MT_sv3_stroke_options")
+ layout.row().menu("VIEW3D_MT_sv3_brush_curve_menu")
- menu.add_item().menu("VIEW3D_MT_sv3_texture_menu")
- menu.add_item().menu("VIEW3D_MT_sv3_stroke_options")
- menu.add_item().menu("VIEW3D_MT_sv3_brush_curve_menu")
+ layout.row().menu("VIEW3D_MT_sv3_master_symmetry_menu")
- menu.add_item().menu("VIEW3D_MT_sv3_master_symmetry_menu")
+ def particle(self, layout, context):
+ particle_edit = context.tool_settings.particle_edit
- def particle(self, menu, context):
- if context.tool_settings.particle_edit.tool == 'NONE':
- menu.add_item().label("No Brush Selected", icon="INFO")
- menu.add_item().separator()
- menu.add_item().menu("VIEW3D_MT_sv3_brushes_menu",
+ if particle_edit.tool == 'NONE':
+ layout.row().label("No Brush Selected", icon="INFO")
+ layout.row().separator()
+ layout.row().menu("VIEW3D_MT_sv3_brushes_menu",
text="Select Brush", icon="BRUSH_DATA")
else:
- menu.add_item().menu("VIEW3D_MT_sv3_brushes_menu",
+ layout.row().menu("VIEW3D_MT_sv3_brushes_menu",
icon="BRUSH_DATA")
- menu.add_item().menu(BrushRadiusMenu.bl_idname)
+ layout.row().menu(BrushRadiusMenu.bl_idname)
- if context.tool_settings.particle_edit.tool != 'ADD':
- menu.add_item().menu(BrushStrengthMenu.bl_idname)
+ if particle_edit.tool != 'ADD':
+ layout.row().menu(BrushStrengthMenu.bl_idname)
else:
- menu.add_item().menu(ParticleCountMenu.bl_idname)
- menu.add_item().separator()
- menu.add_item().prop(context.tool_settings.particle_edit,
- "use_default_interpolate", toggle=True)
+ layout.row().menu(ParticleCountMenu.bl_idname)
+ layout.row().separator()
+ layout.row().prop(particle_edit, "use_default_interpolate", toggle=True)
- menu.add_item().prop(context.tool_settings.particle_edit.brush,
- "steps", slider=True)
- menu.add_item().prop(context.tool_settings.particle_edit,
- "default_key_count", slider=True)
+ layout.row().prop(particle_edit.brush, "steps", slider=True)
+ layout.row().prop(particle_edit, "default_key_count", slider=True)
- if context.tool_settings.particle_edit.tool == 'LENGTH':
- menu.add_item().separator()
- menu.add_item().menu(ParticleLengthMenu.bl_idname)
+ if particle_edit.tool == 'LENGTH':
+ layout.row().separator()
+ layout.row().menu(ParticleLengthMenu.bl_idname)
- if context.tool_settings.particle_edit.tool == 'PUFF':
- menu.add_item().separator()
- menu.add_item().menu(ParticlePuffMenu.bl_idname)
- menu.add_item().prop(context.tool_settings.particle_edit.brush,
- "use_puff_volume", toggle=True)
+ if particle_edit.tool == 'PUFF':
+ layout.row().separator()
+ layout.row().menu(ParticlePuffMenu.bl_idname)
+ layout.row().prop(particle_edit.brush, "use_puff_volume", toggle=True)
class BrushRadiusMenu(Menu):
@@ -234,43 +179,43 @@ class BrushRadiusMenu(Menu):
bl_idname = "VIEW3D_MT_sv3_brush_radius_menu"
bl_description = "Change the size of the brushes"
- def init(self, context):
- if utils_core.get_mode() == utils_core.particle_edit:
- settings = [["100", 100],
- ["70", 70],
- ["50", 50],
- ["30", 30],
- ["20", 20],
- ["10", 10]]
+ def init(self):
+ if utils_core.get_mode() == 'PARTICLE_EDIT':
+ settings = (("100", 100),
+ ("70", 70),
+ ("50", 50),
+ ("30", 30),
+ ("20", 20),
+ ("10", 10))
datapath = "tool_settings.particle_edit.brush.size"
- proppath = context.tool_settings.particle_edit.brush
+ proppath = bpy.context.tool_settings.particle_edit.brush
else:
- settings = [["200", 200],
- ["150", 150],
- ["100", 100],
- ["50", 50],
- ["35", 35],
- ["10", 10]]
+ settings = (("200", 200),
+ ("150", 150),
+ ("100", 100),
+ ("50", 50),
+ ("35", 35),
+ ("10", 10))
datapath = "tool_settings.unified_paint_settings.size"
- proppath = context.tool_settings.unified_paint_settings
+ proppath = bpy.context.tool_settings.unified_paint_settings
return settings, datapath, proppath
def draw(self, context):
- settings, datapath, proppath = self.init(context)
- menu = utils_core.Menu(self)
+ settings, datapath, proppath = self.init()
+ layout = self.layout
# add the top slider
- menu.add_item().prop(proppath, "size", slider=True)
- menu.add_item().separator()
+ layout.row().prop(proppath, "size", slider=True)
+ layout.row().separator()
# add the rest of the menu items
for i in range(len(settings)):
utils_core.menuprop(
- menu.add_item(), settings[i][0], settings[i][1],
+ layout.row(), settings[i][0], settings[i][1],
datapath, icon='RADIOBUT_OFF', disable=True,
disable_icon='RADIOBUT_ON'
)
@@ -280,52 +225,53 @@ class BrushStrengthMenu(Menu):
bl_label = "Strength"
bl_idname = "VIEW3D_MT_sv3_brush_strength_menu"
- def init(self, context):
- settings = [["1.0", 1.0],
- ["0.7", 0.7],
- ["0.5", 0.5],
- ["0.3", 0.3],
- ["0.2", 0.2],
- ["0.1", 0.1]]
+ def init(self):
+ mode = utils_core.get_mode()
+ settings = (("1.0", 1.0),
+ ("0.7", 0.7),
+ ("0.5", 0.5),
+ ("0.3", 0.3),
+ ("0.2", 0.2),
+ ("0.1", 0.1))
- proppath = utils_core.get_brush_link(context, types="brush")
+ proppath = utils_core.get_brush_link(bpy.context, types="brush")
- if utils_core.get_mode() == utils_core.sculpt:
+ if mode == 'SCULPT':
datapath = "tool_settings.sculpt.brush.strength"
- elif utils_core.get_mode() == utils_core.vertex_paint:
+ elif mode == 'VERTEX_PAINT':
datapath = "tool_settings.vertex_paint.brush.strength"
- elif utils_core.get_mode() == utils_core.weight_paint:
+ elif mode == 'WEIGHT_PAINT':
datapath = "tool_settings.weight_paint.brush.strength"
- elif utils_core.get_mode() == utils_core.texture_paint:
+ elif mode == 'TEXTURE_PAINT':
datapath = "tool_settings.image_paint.brush.strength"
else:
datapath = "tool_settings.particle_edit.brush.strength"
- proppath = context.tool_settings.particle_edit.brush
+ proppath = bpy.context.tool_settings.particle_edit.brush
return settings, datapath, proppath
def draw(self, context):
- settings, datapath, proppath = self.init(context)
- menu = utils_core.Menu(self)
+ settings, datapath, proppath = self.init()
+ layout = self.layout
# add the top slider
if proppath:
- menu.add_item().prop(proppath, "strength", slider=True)
- menu.add_item().separator()
+ layout.row().prop(proppath, "strength", slider=True)
+ layout.row().separator()
# add the rest of the menu items
for i in range(len(settings)):
utils_core.menuprop(
- menu.add_item(), settings[i][0], settings[i][1],
+ layout.row(), settings[i][0], settings[i][1],
datapath, icon='RADIOBUT_OFF', disable=True,
disable_icon='RADIOBUT_ON'
)
else:
- menu.add_item().label("No brushes available", icon="INFO")
+ layout.row().label("No brushes available", icon="INFO")
class BrushModeMenu(Menu):
@@ -333,41 +279,51 @@ class BrushModeMenu(Menu):
bl_idname = "VIEW3D_MT_sv3_brush_mode_menu"
def init(self):
+ mode = utils_core.get_mode()
has_brush = utils_core.get_brush_link(bpy.context, types="brush")
- if utils_core.get_mode() == utils_core.sculpt:
+ if mode == 'SCULPT':
enum = has_brush.bl_rna.properties['sculpt_plane'].enum_items if \
has_brush else None
path = "tool_settings.sculpt.brush.sculpt_plane"
-
- elif utils_core.get_mode() == utils_core.texture_paint:
+
+ elif mode == 'VERTEX_PAINT':
+ enum = has_brush.bl_rna.properties['vertex_tool'].enum_items if \
+ has_brush else None
+ path = "tool_settings.vertex_paint.brush.vertex_tool"
+
+ elif mode == 'WEIGHT_PAINT':
+ enum = has_brush.bl_rna.properties['vertex_tool'].enum_items if \
+ has_brush else None
+ path = "tool_settings.weight_paint.brush.vertex_tool"
+
+ elif mode == 'TEXTURE_PAINT':
enum = has_brush.bl_rna.properties['blend'].enum_items if \
has_brush else None
path = "tool_settings.image_paint.brush.blend"
else:
- enum = has_brush.bl_rna.properties['vertex_tool'].enum_items if \
- has_brush else None
- path = "tool_settings.vertex_paint.brush.vertex_tool"
+ enum = None
+ path = ""
return enum, path
def draw(self, context):
enum, path = self.init()
- menu = utils_core.Menu(self)
+ layout = self.layout
colum_n = utils_core.addon_settings(lists=False)
- menu.add_item().label(text="Brush Mode")
- menu.add_item().separator()
+ layout.row().label(text="Brush Mode")
+ layout.row().separator()
if enum:
- if utils_core.get_mode() == utils_core.texture_paint:
- column_flow = menu.add_item("column_flow", columns=colum_n)
+ if utils_core.get_mode() == 'TEXTURE_PAINT':
+ column_flow = layout.column_flow(columns=colum_n)
# add all the brush modes to the menu
for brush in enum:
utils_core.menuprop(
- menu.add_item(parent=column_flow), brush.name,
+ column_flow.row(), brush.name,
brush.identifier, path, icon='RADIOBUT_OFF',
disable=True, disable_icon='RADIOBUT_ON'
)
@@ -375,12 +331,12 @@ class BrushModeMenu(Menu):
# add all the brush modes to the menu
for brush in enum:
utils_core.menuprop(
- menu.add_item(), brush.name,
+ layout.row(), brush.name,
brush.identifier, path, icon='RADIOBUT_OFF',
disable=True, disable_icon='RADIOBUT_ON'
)
else:
- menu.add_item().label("No brushes available", icon="INFO")
+ layout.row().label("No brushes available", icon="INFO")
class BrushAutosmoothMenu(Menu):
@@ -388,74 +344,80 @@ class BrushAutosmoothMenu(Menu):
bl_idname = "VIEW3D_MT_sv3_brush_autosmooth_menu"
def init(self):
- settings = [["1.0", 1.0],
- ["0.7", 0.7],
- ["0.5", 0.5],
- ["0.3", 0.3],
- ["0.2", 0.2],
- ["0.1", 0.1]]
+ settings = (("1.0", 1.0),
+ ("0.7", 0.7),
+ ("0.5", 0.5),
+ ("0.3", 0.3),
+ ("0.2", 0.2),
+ ("0.1", 0.1))
return settings
def draw(self, context):
settings = self.init()
- menu = utils_core.Menu(self)
+ layout = self.layout
has_brush = utils_core.get_brush_link(context, types="brush")
if has_brush:
# add the top slider
- menu.add_item().prop(has_brush, "auto_smooth_factor", slider=True)
- menu.add_item().separator()
+ layout.row().prop(has_brush, "auto_smooth_factor", slider=True)
+ layout.row().separator()
# add the rest of the menu items
for i in range(len(settings)):
utils_core.menuprop(
- menu.add_item(), settings[i][0], settings[i][1],
+ layout.row(), settings[i][0], settings[i][1],
"tool_settings.sculpt.brush.auto_smooth_factor",
icon='RADIOBUT_OFF', disable=True,
disable_icon='RADIOBUT_ON'
)
else:
- menu.add_item().label("No Smooth options available", icon="INFO")
+ layout.row().label("No Smooth options available", icon="INFO")
class BrushWeightMenu(Menu):
bl_label = "Weight"
bl_idname = "VIEW3D_MT_sv3_brush_weight_menu"
- def draw(self, context):
- if utils_core.get_mode() == utils_core.weight_paint:
- brush = context.tool_settings.unified_paint_settings
+ def init(self):
+ settings = (("1.0", 1.0),
+ ("0.7", 0.7),
+ ("0.5", 0.5),
+ ("0.3", 0.3),
+ ("0.2", 0.2),
+ ("0.1", 0.1))
+
+ if utils_core.get_mode() == 'WEIGHT_PAINT':
+ brush = bpy.context.tool_settings.unified_paint_settings
brushstr = "tool_settings.unified_paint_settings.weight"
name = "Weight"
+
else:
- brush = context.tool_settings.image_paint.brush
+ brush = bpy.context.tool_settings.image_paint.brush
brushstr = "tool_settings.image_paint.brush.weight"
name = "Mask Value"
- menu = utils_core.Menu(self)
- settings = [["1.0", 1.0],
- ["0.7", 0.7],
- ["0.5", 0.5],
- ["0.3", 0.3],
- ["0.2", 0.2],
- ["0.1", 0.1]]
+ return settings, brush, brushstr, name
+
+ def draw(self, context):
+ settings, brush, brushstr, name = self.init()
+ layout = self.layout
+
if brush:
# add the top slider
- menu.add_item().prop(brush,
- "weight", text=name, slider=True)
- menu.add_item().separator()
+ layout.row().prop(brush, "weight", text=name, slider=True)
+ layout.row().separator()
# add the rest of the menu items
for i in range(len(settings)):
utils_core.menuprop(
- menu.add_item(), settings[i][0], settings[i][1],
+ layout.row(), settings[i][0], settings[i][1],
brushstr,
icon='RADIOBUT_OFF', disable=True,
disable_icon='RADIOBUT_ON'
)
else:
- menu.add_item().label("No brush available", icon="INFO")
+ layout.row().label("No brush available", icon="INFO")
class ParticleCountMenu(Menu):
@@ -463,28 +425,28 @@ class ParticleCountMenu(Menu):
bl_idname = "VIEW3D_MT_sv3_particle_count_menu"
def init(self):
- settings = [["50", 50],
- ["25", 25],
- ["10", 10],
- ["5", 5],
- ["3", 3],
- ["1", 1]]
+ settings = (("50", 50),
+ ("25", 25),
+ ("10", 10),
+ ("5", 5),
+ ("3", 3),
+ ("1", 1))
return settings
def draw(self, context):
settings = self.init()
- menu = utils_core.Menu(self)
+ layout = self.layout
# add the top slider
- menu.add_item().prop(context.tool_settings.particle_edit.brush,
+ layout.row().prop(context.tool_settings.particle_edit.brush,
"count", slider=True)
- menu.add_item().separator()
+ layout.row().separator()
# add the rest of the menu items
for i in range(len(settings)):
utils_core.menuprop(
- menu.add_item(), settings[i][0], settings[i][1],
+ layout.row(), settings[i][0], settings[i][1],
"tool_settings.particle_edit.brush.count",
icon='RADIOBUT_OFF', disable=True,
disable_icon='RADIOBUT_ON'
@@ -496,14 +458,14 @@ class ParticleLengthMenu(Menu):
bl_idname = "VIEW3D_MT_sv3_particle_length_menu"
def draw(self, context):
- menu = utils_core.Menu(self)
+ layout = self.layout
path = "tool_settings.particle_edit.brush.length_mode"
# add the menu items
for item in context.tool_settings.particle_edit.brush. \
bl_rna.properties['length_mode'].enum_items:
utils_core.menuprop(
- menu.add_item(), item.name, item.identifier, path,
+ layout.row(), item.name, item.identifier, path,
icon='RADIOBUT_OFF',
disable=True,
disable_icon='RADIOBUT_ON'
@@ -515,14 +477,14 @@ class ParticlePuffMenu(Menu):
bl_idname = "VIEW3D_MT_sv3_particle_puff_menu"
def draw(self, context):
- menu = utils_core.Menu(self)
+ layout = self.layout
path = "tool_settings.particle_edit.brush.puff_mode"
# add the menu items
for item in context.tool_settings.particle_edit.brush. \
bl_rna.properties['puff_mode'].enum_items:
utils_core.menuprop(
- menu.add_item(), item.name, item.identifier, path,
+ layout.row(), item.name, item.identifier, path,
icon='RADIOBUT_OFF',
disable=True,
disable_icon='RADIOBUT_ON'
@@ -551,7 +513,14 @@ class FlipColorsAll(Operator):
color.hsv = orig_sec
secondary_color.hsv = orig_prim
else:
- bpy.ops.paint.brush_colors_flip()
+ color = context.tool_settings.image_paint.brush.color
+ secondary_color = context.tool_settings.image_paint.brush.secondary_color
+
+ orig_prim = color.hsv
+ orig_sec = secondary_color.hsv
+
+ color.hsv = orig_sec
+ secondary_color.hsv = orig_prim
return {'FINISHED'}
@@ -570,46 +539,52 @@ class ColorPickerPopup(Operator):
@classmethod
def poll(self, context):
return utils_core.get_mode() in (
- utils_core.vertex_paint,
- utils_core.texture_paint
+ 'VERTEX_PAINT',
+ 'TEXTURE_PAINT'
)
def check(self, context):
return True
- def draw(self, context):
- menu = utils_core.Menu(self)
-
- if utils_core.get_mode() == utils_core.texture_paint:
- settings = context.tool_settings.image_paint
+ def init(self):
+ if utils_core.get_mode() == 'TEXTURE_PAINT':
+ settings = bpy.context.tool_settings.image_paint
brush = getattr(settings, "brush", None)
else:
- settings = context.tool_settings.vertex_paint
+ settings = bpy.context.tool_settings.vertex_paint
brush = settings.brush
brush = getattr(settings, "brush", None)
+ return settings, brush
+
+ def draw(self, context):
+ layout = self.layout
+ settings, brush = self.init()
+
+
if brush:
- menu.add_item().template_color_picker(brush, "color", value_slider=True)
- menu.add_item("row", align=True).prop(brush, "color", text="")
- menu.current_item.prop(brush, "secondary_color", text="")
+ layout.row().template_color_picker(brush, "color", value_slider=True)
+ prim_sec_row = layout.row(align=True)
+ prim_sec_row.prop(brush, "color", text="")
+ prim_sec_row.prop(brush, "secondary_color", text="")
- if utils_core.get_mode() == utils_core.vertex_paint:
- menu.current_item.operator(
+ if utils_core.get_mode() == 'VERTEX_PAINT':
+ prim_sec_row.operator(
FlipColorsAll.bl_idname,
icon='FILE_REFRESH', text=""
).is_tex = False
else:
- menu.current_item.operator(
+ prim_sec_row.operator(
FlipColorsAll.bl_idname,
icon='FILE_REFRESH', text=""
).is_tex = True
if settings.palette:
- menu.add_item("column").template_palette(settings, "palette", color=True)
+ layout.column().template_palette(settings, "palette", color=True)
- menu.add_item().template_ID(settings, "palette", new="palette.new")
+ layout.row().template_ID(settings, "palette", new="palette.new")
else:
- menu.add_item().label("No brushes currently available", icon="INFO")
+ layout.row().label("No brushes currently available", icon="INFO")
return
@@ -625,10 +600,10 @@ class BrushMenuPopup(Operator):
@classmethod
def poll(self, context):
return utils_core.get_mode() in (
- utils_core.vertex_paint,
- utils_core.texture_paint,
- utils_core.sculpt,
- utils_core.weight_paint
+ 'VERTEX_PAINT',
+ 'TEXTURE_PAINT',
+ 'SCULPT',
+ 'WEIGHT_PAINT'
)
def check(self, context):