[Bf-blender-cvs] [1b7b6d90602] blender2.8: Tool System: prepare for showing non 3D view tools

Campbell Barton noreply at git.blender.org
Fri Oct 5 05:56:28 CEST 2018


Commit: 1b7b6d906023e5a370b238e416505aa7660df13e
Author: Campbell Barton
Date:   Fri Oct 5 13:47:04 2018 +1000
Branches: blender2.8
https://developer.blender.org/rB1b7b6d906023e5a370b238e416505aa7660df13e

Tool System: prepare for showing non 3D view tools

===================================================================

M	release/scripts/startup/bl_ui/space_topbar.py

===================================================================

diff --git a/release/scripts/startup/bl_ui/space_topbar.py b/release/scripts/startup/bl_ui/space_topbar.py
index 4f1473e419d..8e1551eba0e 100644
--- a/release/scripts/startup/bl_ui/space_topbar.py
+++ b/release/scripts/startup/bl_ui/space_topbar.py
@@ -110,12 +110,13 @@ class TOPBAR_HT_lower_bar(Header):
 
     def draw_left(self, context):
         layout = self.layout
-        mode = context.mode
 
         # Active Tool
         # -----------
         from .space_toolsystem_common import ToolSelectPanelHelper
         tool = ToolSelectPanelHelper.draw_active_tool_header(context, layout)
+        tool_space_type = 'VIEW_3D' if tool is None else tool.space_type
+        tool_mode = context.mode if tool is None else tool.mode
 
         # Object Mode Options
         # -------------------
@@ -124,42 +125,43 @@ class TOPBAR_HT_lower_bar(Header):
 
         # TODO(campbell): editing options should be after active tool options
         # (obviously separated for from the users POV)
-        draw_fn = getattr(_draw_left_context_mode, mode, None)
+        draw_fn = getattr(getattr(_draw_left_context_mode, tool_space_type, None), tool_mode, None)
         if draw_fn is not None:
             draw_fn(context, layout, tool)
 
-        # Note: general mode options should be added to 'draw_right'.
-        if mode == 'SCULPT':
-            if (tool is not None) and tool.has_datablock:
-                layout.popover_group(space_type='PROPERTIES', region_type='WINDOW', context=".paint_common", category="")
-        elif mode == 'PAINT_VERTEX':
-            if (tool is not None) and tool.has_datablock:
-                layout.popover_group(space_type='PROPERTIES', region_type='WINDOW', context=".paint_common", category="")
-        elif mode == 'PAINT_WEIGHT':
-            if (tool is not None) and tool.has_datablock:
-                layout.popover_group(space_type='PROPERTIES', region_type='WINDOW', context=".paint_common", category="")
-        elif mode == 'PAINT_TEXTURE':
-            if (tool is not None) and tool.has_datablock:
-                layout.popover_group(space_type='PROPERTIES', region_type='WINDOW', context=".paint_common", category="")
-        elif mode == 'EDIT_ARMATURE':
-            pass
-        elif mode == 'EDIT_CURVE':
-            pass
-        elif mode == 'EDIT_MESH':
-            pass
-        elif mode == 'POSE':
-            pass
-        elif mode == 'PARTICLE':
-            # Disable, only shows "Brush" panel, which is already in the top-bar.
-            # if tool.has_datablock:
-            #     layout.popover_group(space_type='PROPERTIES', region_type='WINDOW', context=".paint_common", category="")
-            pass
-        elif mode == 'GPENCIL_PAINT':
-            layout.popover_group(space_type='PROPERTIES', region_type='WINDOW', context=".greasepencil_paint", category="")
-        elif mode == 'GPENCIL_SCULPT':
-            layout.popover_group(space_type='PROPERTIES', region_type='WINDOW', context=".greasepencil_sculpt", category="")
-        elif mode == 'GPENCIL_WEIGHT':
-            layout.popover_group(space_type='PROPERTIES', region_type='WINDOW', context=".greasepencil_weight", category="")
+        if tool_space_type == 'VIEW_3D':
+            # Note: general mode options should be added to 'draw_right'.
+            if tool_mode == 'SCULPT':
+                if (tool is not None) and tool.has_datablock:
+                    layout.popover_group(space_type='PROPERTIES', region_type='WINDOW', context=".paint_common", category="")
+            elif tool_mode == 'PAINT_VERTEX':
+                if (tool is not None) and tool.has_datablock:
+                    layout.popover_group(space_type='PROPERTIES', region_type='WINDOW', context=".paint_common", category="")
+            elif tool_mode == 'PAINT_WEIGHT':
+                if (tool is not None) and tool.has_datablock:
+                    layout.popover_group(space_type='PROPERTIES', region_type='WINDOW', context=".paint_common", category="")
+            elif tool_mode == 'PAINT_TEXTURE':
+                if (tool is not None) and tool.has_datablock:
+                    layout.popover_group(space_type='PROPERTIES', region_type='WINDOW', context=".paint_common", category="")
+            elif tool_mode == 'EDIT_ARMATURE':
+                pass
+            elif tool_mode == 'EDIT_CURVE':
+                pass
+            elif tool_mode == 'EDIT_MESH':
+                pass
+            elif tool_mode == 'POSE':
+                pass
+            elif tool_mode == 'PARTICLE':
+                # Disable, only shows "Brush" panel, which is already in the top-bar.
+                # if tool.has_datablock:
+                #     layout.popover_group(space_type='PROPERTIES', region_type='WINDOW', context=".paint_common", category="")
+                pass
+            elif tool_mode == 'GPENCIL_PAINT':
+                layout.popover_group(space_type='PROPERTIES', region_type='WINDOW', context=".greasepencil_paint", category="")
+            elif tool_mode == 'GPENCIL_SCULPT':
+                layout.popover_group(space_type='PROPERTIES', region_type='WINDOW', context=".greasepencil_sculpt", category="")
+            elif tool_mode == 'GPENCIL_WEIGHT':
+                layout.popover_group(space_type='PROPERTIES', region_type='WINDOW', context=".greasepencil_weight", category="")
 
     def draw_center(self, context):
         pass
@@ -230,80 +232,81 @@ class TOPBAR_HT_lower_bar(Header):
 
 
 class _draw_left_context_mode:
-    @staticmethod
-    def SCULPT(context, layout, tool):
-        if (tool is None) or (not tool.has_datablock):
-            return
-        brush = context.tool_settings.sculpt.brush
-        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)
-
-    def PAINT_TEXTURE(context, layout, tool):
-        if (tool is None) or (not tool.has_datablock):
-            return
-        brush = context.tool_settings.vertex_paint.brush
-        if brush is None:
-            return
-
-        from .properties_paint_common import UnifiedPaintPanel
-
-        layout.prop(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")
-
-    def PAINT_VERTEX(context, layout, tool):
-        if (tool is None) or (not tool.has_datablock):
-            return
-        brush = context.tool_settings.vertex_paint.brush
-        if brush is None:
-            return
-
-        from .properties_paint_common import UnifiedPaintPanel
-
-        layout.prop(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")
-
-    def PAINT_WEIGHT(context, layout, tool):
-        if (tool is None) or (not tool.has_datablock):
-            return
-        brush = context.tool_settings.weight_paint.brush
-        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")
-
-    def PARTICLE(context, layout, tool):
-        # See: 'VIEW3D_PT_tools_brush', basically a duplicate
-        settings = context.tool_settings.particle_edit
-        brush = settings.brush
-        tool = settings.tool
-        if tool != 'NONE':
-            layout.prop(brush, "size", slider=True)
-            if tool == 'ADD':
-                layout.prop(brush, "count")
-
-                layout.prop(settings, "use_default_interpolate")
-                layout.prop(brush, "steps", slider=True)
-                layout.prop(settings, "default_key_count", slider=True)
-            else:
-                layout.prop(brush, "strength", slider=True)
-
-                if tool == 'LENGTH':
-                    layout.row().prop(brush, "length_mode", expand=True)
-                elif tool == 'PUFF':
-                    layout.row().prop(brush, "puff_mode", expand=True)
-                    layout.prop(brush, "use_puff_volume")
+    class VIEW_3D:
+        @staticmethod
+        def SCULPT(context, layout, tool):
+            if (tool is None) or (not tool.has_datablock):
+                return
+            brush = context.tool_settings.sculpt.brush
+            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)
+
+        def PAINT_TEXTURE(context, layout, tool):
+            if (tool is None) or (not tool.has_datablock):
+                return
+            brush = context.tool_settings.vertex_paint.brush
+            if brush is None:
+                return
+
+            from .properties_paint_common import UnifiedPaintPanel
+
+            layout.prop(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")
+
+        def PAINT_VERTEX(context, layout, tool):
+            if (tool is None) or (not tool.has_datablock):
+                return
+            brush = context.tool_settings.vertex_paint

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list