diff options
author | William Reynish <billrey@me.com> | 2019-12-14 20:48:18 +0300 |
---|---|---|
committer | William Reynish <billrey@me.com> | 2019-12-14 20:48:18 +0300 |
commit | fb74dcc5d69d07f641e318557f679b95e52297a0 (patch) | |
tree | afd4a692f720b85ce0ad010009c8cb4ed8430241 /release/scripts/startup/bl_ui/properties_grease_pencil_common.py | |
parent | 16206b66a2594c286aaf2ce3983f946f1d3d39d3 (diff) |
UI: Brush Settings overhaul
This makes a number of changes to the tool settings brush UI:
- All brush-related controls are now grouped together, so you can see which items are brush settings are which are not. Previously it was all jumbled together.
- The brush picker is in a separate panel, so that you can switch brushes without worrying about the settings, or vice versa.
- Custom Icon settings moved from the Display settings(now known as Cursor) to the Brushes panel.
- UnifiedPaintSettings panels are removed and the contained options are now next to their relevant setting with a globe icon toggle. This is not displayed in the header.
- 2D Falloff and Absolute Jitter toggles were changed into enums, to make it clearer what happens when they are on or off.
- Adjust Strength for Spacing option was in the Options panel in some modes, but in the Stroke panel in others. It is now always under Stroke.
- Display (now Cursor) panel was reorganized, settings renamed.
- 2-option enums are annoying as a drop-down menu, so they are now drawn with expand=True.
- Smooth Stroke and Stabilizer options in grease pencil and other paint modes are now both called "Stabilize Stroke", for consistency and clarity.
- De-duplicated some drawing code between various painting modes' brush options. I tried to keep de-duplication reasonable and easy to follow.
- A few more tweaks - see D5928 for the extensive list.
Most of the patch is written by Demeter Dzadik, with some additions by myself
Differential Revision: https://developer.blender.org/D5928
Reviewers: Pablo Dobarro, Bastien Montagne, Matias Mendiola
Diffstat (limited to 'release/scripts/startup/bl_ui/properties_grease_pencil_common.py')
-rw-r--r-- | release/scripts/startup/bl_ui/properties_grease_pencil_common.py | 183 |
1 files changed, 44 insertions, 139 deletions
diff --git a/release/scripts/startup/bl_ui/properties_grease_pencil_common.py b/release/scripts/startup/bl_ui/properties_grease_pencil_common.py index 5fa98c533c3..59c18d4f108 100644 --- a/release/scripts/startup/bl_ui/properties_grease_pencil_common.py +++ b/release/scripts/startup/bl_ui/properties_grease_pencil_common.py @@ -131,122 +131,6 @@ class AnnotationDrawingToolsPanel: gpencil_stroke_placement_settings(context, col) -class GreasePencilStrokeEditPanel: - # subclass must set - # bl_space_type = 'IMAGE_EDITOR' - bl_label = "Edit Strokes" - bl_category = "Tools" - bl_region_type = 'TOOLS' - - @classmethod - def poll(cls, context): - if context.gpencil_data is None: - return False - - gpd = context.gpencil_data - return bool(context.editable_gpencil_strokes) and bool(gpd.use_stroke_edit_mode) - - def draw(self, context): - layout = self.layout - - is_3d_view = context.space_data.type == 'VIEW_3D' - - if not is_3d_view: - layout.label(text="Select:") - col = layout.column(align=True) - col.operator("gpencil.select_all", text="Select All") - col.operator("gpencil.select_box") - col.operator("gpencil.select_circle") - - layout.separator() - - col = layout.column(align=True) - col.operator("gpencil.select_linked") - col.operator("gpencil.select_more") - col.operator("gpencil.select_less") - col.operator("gpencil.select_alternate") - - layout.label(text="Edit:") - row = layout.row(align=True) - row.operator("gpencil.copy", text="Copy") - row.operator("gpencil.paste", text="Paste").type = 'ACTIVE' - row.operator("gpencil.paste", text="Paste by Layer").type = 'LAYER' - - col = layout.column(align=True) - col.operator("gpencil.delete") - col.operator("gpencil.duplicate_move", text="Duplicate") - if is_3d_view: - col.operator("gpencil.stroke_cyclical_set", text="Toggle Cyclic").type = 'TOGGLE' - col.operator_menu_enum("gpencil.stroke_caps_set", text="Toggle Caps...", property="type") - - layout.separator() - - if not is_3d_view: - col = layout.column(align=True) - col.operator("transform.translate") # icon='MAN_TRANS' - col.operator("transform.rotate") # icon='MAN_ROT' - col.operator("transform.resize", text="Scale") # icon='MAN_SCALE' - - layout.separator() - - layout.separator() - col = layout.column(align=True) - col.operator_menu_enum("gpencil.stroke_arrange", text="Arrange Strokes...", property="direction") - col.operator("gpencil.stroke_change_color", text="Assign Material") - - layout.separator() - col = layout.column(align=True) - col.operator("gpencil.stroke_subdivide", text="Subdivide") - row = col.row(align=True) - row.operator("gpencil.stroke_simplify_fixed", text="Simplify") - row.operator("gpencil.stroke_simplify", text="Adaptive") - row.operator("gpencil.stroke_trim", text="Trim") - - col.separator() - - row = col.row(align=True) - row.operator("gpencil.stroke_merge", text="Merge") - row.operator("gpencil.stroke_join", text="Join").type = 'JOIN' - row.operator("gpencil.stroke_join", text="& Copy").type = 'JOINCOPY' - - col.operator("gpencil.stroke_flip", text="Flip Direction") - - if is_3d_view: - layout.separator() - - col = layout.column(align=True) - col.operator_menu_enum("gpencil.stroke_separate", text="Separate...", property="mode") - col.operator("gpencil.stroke_split", text="Split") - - col = layout.column(align=True) - col.label(text="Cleanup:") - col.operator_menu_enum("gpencil.reproject", text="Reproject Strokes...", property="type") - col.operator_menu_enum("gpencil.frame_clean_fill", text="Clean Boundary Strokes...", property="mode") - - -class GreasePencilStrokeSculptPanel: - # subclass must set - # bl_space_type = 'IMAGE_EDITOR' - bl_label = "Sculpt Strokes" - bl_category = "Tools" - - def draw(self, context): - layout = self.layout - layout.use_property_split = True - layout.use_property_decorate = False - - settings = context.tool_settings.gpencil_sculpt - brush = settings.brush - - layout.template_icon_view(settings, "sculpt_tool", show_labels=True) - - if not self.is_popover: - from bl_ui.properties_paint_common import ( - brush_basic_gpencil_sculpt_settings, - ) - brush_basic_gpencil_sculpt_settings(layout, context, brush) - - class GreasePencilSculptOptionsPanel: bl_label = "Sculpt Strokes" @@ -276,16 +160,35 @@ class GreasePencilSculptOptionsPanel: layout.prop(settings, "use_edit_uv", text="Affect UV") - # GP Object Tool Settings -class GreasePencilAppearancePanel: - bl_label = "Brush Appearance" +class GreasePencilDisplayPanel: + bl_label = "Brush Tip" bl_options = {'DEFAULT_CLOSED'} @classmethod def poll(cls, context): ob = context.active_object - return ob and ob.type == 'GPENCIL' + brush = context.tool_settings.gpencil_paint.brush + if ob and ob.type == 'GPENCIL' and brush: + if context.mode == 'PAINT_GPENCIL': + return brush.gpencil_tool != 'ERASE' + else: + # GP Sculpt and Weight Paint always have Brush Tip panel. + return True + + def draw_header(self, context): + if self.is_popover: return + + if context.mode == 'PAINT_GPENCIL': + brush = context.tool_settings.gpencil_paint.brush + gp_settings = brush.gpencil_settings + + self.layout.prop(gp_settings, "use_cursor", text="") + elif context.mode in ('SCULPT_GPENCIL', 'WEIGHT_GPENCIL'): + settings = context.tool_settings.gpencil_sculpt + brush = settings.brush + + self.layout.prop(brush, "use_cursor", text="") def draw(self, context): layout = self.layout @@ -299,42 +202,44 @@ class GreasePencilAppearancePanel: brush = tool_settings.gpencil_paint.brush gp_settings = brush.gpencil_settings - sub = layout.column(align=True) - sub.enabled = not brush.use_custom_icon - sub.prop(gp_settings, "gp_icon", text="Icon") - - layout.prop(brush, "use_custom_icon") - sub = layout.column() - sub.active = brush.use_custom_icon - sub.prop(brush, "icon_filepath", text="") + if self.is_popover: + row = layout.row(align=True) + row.prop(gp_settings, "use_cursor", text="") + row.label(text="Display Cursor") - layout.prop(gp_settings, "use_cursor", text="Show Brush") + col = layout.column(align=True) + col.active = gp_settings.use_cursor if brush.gpencil_tool == 'DRAW': - layout.prop(gp_settings, "show_lasso", text="Show Fill Color While Drawing") + col.prop(gp_settings, "show_lasso", text="Show Fill Color While Drawing") if brush.gpencil_tool == 'FILL': - layout.prop(brush, "cursor_color_add", text="Color") + col.prop(brush, "cursor_color_add", text="Cursor Color") elif ob.mode in {'SCULPT_GPENCIL', 'WEIGHT_GPENCIL'}: settings = tool_settings.gpencil_sculpt brush = settings.brush tool = settings.sculpt_tool + if self.is_popover: + row = layout.row(align=True) + row.prop(brush, "use_cursor", text="") + row.label(text="Display Cursor") + col = layout.column(align=True) - col.prop(brush, "use_cursor", text="Show Brush") + col.active = brush.use_cursor if tool in {'THICKNESS', 'STRENGTH'}: - col.prop(brush, "cursor_color_add", text="Add") - col.prop(brush, "cursor_color_sub", text="Subtract") + col.prop(brush, "cursor_color_add", text="Add Cursor Color") + col.prop(brush, "cursor_color_sub", text="Subtract Cursor Color") elif tool == 'PINCH': - col.prop(brush, "cursor_color_add", text="Pinch") - col.prop(brush, "cursor_color_sub", text="Inflate") + col.prop(brush, "cursor_color_add", text="Pinch Cursor Color") + col.prop(brush, "cursor_color_sub", text="Inflate Cursor Color") elif tool == 'TWIST': - col.prop(brush, "cursor_color_add", text="CCW") - col.prop(brush, "cursor_color_sub", text="CW") + col.prop(brush, "cursor_color_add", text="CCW Cursor Color") + col.prop(brush, "cursor_color_sub", text="CW Cursor Color") else: - col.prop(brush, "cursor_color_add", text="") + col.prop(brush, "cursor_color_add", text="Cursor Color") class GPENCIL_MT_pie_tool_palette(Menu): |