[Bf-blender-cvs] [995fa1f4c0b] blender2.8: UI: new tool properties space type

Campbell Barton noreply at git.blender.org
Thu May 31 21:48:15 CEST 2018


Commit: 995fa1f4c0b1dc746b0978033b41984a653784e4
Author: Campbell Barton
Date:   Thu May 31 21:45:26 2018 +0200
Branches: blender2.8
https://developer.blender.org/rB995fa1f4c0b1dc746b0978033b41984a653784e4

UI: new tool properties space type

This currently shows panels that were in the 2.79 3D view toolbar
which are now popovers.

In some cases it's useful for these to stay open.
This commit adds a space type to do this.

Note this is currently empty in object mode.

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

M	release/scripts/startup/bl_ui/space_properties.py
M	release/scripts/startup/bl_ui/space_topbar.py
M	release/scripts/startup/bl_ui/space_view3d_toolbar.py
M	source/blender/editors/interface/interface_icons.c
M	source/blender/editors/screen/area.c
M	source/blender/editors/space_buttons/space_buttons.c
M	source/blender/makesdna/DNA_space_types.h
M	source/blender/makesrna/RNA_enum_types.h
M	source/blender/makesrna/intern/rna_space.c

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

diff --git a/release/scripts/startup/bl_ui/space_properties.py b/release/scripts/startup/bl_ui/space_properties.py
index 20cb5719e20..cd7137e0254 100644
--- a/release/scripts/startup/bl_ui/space_properties.py
+++ b/release/scripts/startup/bl_ui/space_properties.py
@@ -31,7 +31,9 @@ class PROPERTIES_HT_header(Header):
 
         row = layout.row()
         row.template_header()
-        row.prop(view, "context", expand=True, icon_only=True)
+
+        if view.mode == 'DATA_PROPERTIES':
+            row.prop(view, "context", expand=True, icon_only=True)
 
 
 classes = (
diff --git a/release/scripts/startup/bl_ui/space_topbar.py b/release/scripts/startup/bl_ui/space_topbar.py
index 53acc29dfad..243b36bdeb7 100644
--- a/release/scripts/startup/bl_ui/space_topbar.py
+++ b/release/scripts/startup/bl_ui/space_topbar.py
@@ -125,13 +125,13 @@ class TOPBAR_HT_lower_bar(Header):
 
         # Note: general mode options should be added to 'draw_right'.
         if mode == 'SCULPT':
-            layout.popover_group(space_type='VIEW_3D', region_type='TOOLS', context=".paint_common", category="")
+            layout.popover_group(space_type='PROPERTIES', region_type='WINDOW', context=".paint_common", category="")
         elif mode == 'PAINT_VERTEX':
-            layout.popover_group(space_type='VIEW_3D', region_type='TOOLS', context=".paint_common", category="")
+            layout.popover_group(space_type='PROPERTIES', region_type='WINDOW', context=".paint_common", category="")
         elif mode == 'PAINT_WEIGHT':
-            layout.popover_group(space_type='VIEW_3D', region_type='TOOLS', context=".paint_common", category="")
+            layout.popover_group(space_type='PROPERTIES', region_type='WINDOW', context=".paint_common", category="")
         elif mode == 'PAINT_TEXTURE':
-            layout.popover_group(space_type='VIEW_3D', region_type='TOOLS', context=".paint_common", category="")
+            layout.popover_group(space_type='PROPERTIES', region_type='WINDOW', context=".paint_common", category="")
         elif mode == 'EDIT_ARMATURE':
             pass
         elif mode == 'EDIT_CURVE':
@@ -139,9 +139,9 @@ class TOPBAR_HT_lower_bar(Header):
         elif mode == 'EDIT_MESH':
             pass
         elif mode == 'POSE':
-            layout.popover_group(space_type='VIEW_3D', region_type='TOOLS', context=".posemode", category="")
+            pass
         elif mode == 'PARTICLE':
-            layout.popover_group(space_type='VIEW_3D', region_type='TOOLS', context=".paint_common", category="")
+            pass
 
     def draw_right(self, context):
         layout = self.layout
@@ -151,23 +151,23 @@ class TOPBAR_HT_lower_bar(Header):
         mode = context.mode
 
         if mode == 'SCULPT':
-            layout.popover_group(space_type='VIEW_3D', region_type='TOOLS', context=".sculpt_mode", category="")
+            layout.popover_group(space_type='PROPERTIES', region_type='WINDOW', context=".sculpt_mode", category="")
         elif mode == 'PAINT_VERTEX':
-            layout.popover_group(space_type='VIEW_3D', region_type='TOOLS', context=".vertexpaint", category="")
+            layout.popover_group(space_type='PROPERTIES', region_type='WINDOW', context=".vertexpaint", category="")
         elif mode == 'PAINT_WEIGHT':
-            layout.popover_group(space_type='VIEW_3D', region_type='TOOLS', context=".weightpaint", category="")
+            layout.popover_group(space_type='PROPERTIES', region_type='WINDOW', context=".weightpaint", category="")
         elif mode == 'PAINT_TEXTURE':
-            layout.popover_group(space_type='VIEW_3D', region_type='TOOLS', context=".imagepaint", category="")
+            layout.popover_group(space_type='PROPERTIES', region_type='WINDOW', context=".imagepaint", category="")
         elif mode == 'EDIT_ARMATURE':
-            layout.popover_group(space_type='VIEW_3D', region_type='TOOLS', context=".armature_edit", category="")
+            layout.popover_group(space_type='PROPERTIES', region_type='WINDOW', context=".armature_edit", category="")
         elif mode == 'EDIT_CURVE':
-            layout.popover_group(space_type='VIEW_3D', region_type='TOOLS', context=".curve_edit", category="")
+            layout.popover_group(space_type='PROPERTIES', region_type='WINDOW', context=".curve_edit", category="")
         elif mode == 'EDIT_MESH':
-            layout.popover_group(space_type='VIEW_3D', region_type='TOOLS', context=".mesh_edit", category="")
+            layout.popover_group(space_type='PROPERTIES', region_type='WINDOW', context=".mesh_edit", category="")
         elif mode == 'POSE':
-            layout.popover_group(space_type='VIEW_3D', region_type='TOOLS', context=".posemode", category="")
+            layout.popover_group(space_type='PROPERTIES', region_type='WINDOW', context=".posemode", category="")
         elif mode == 'PARTICLE':
-            layout.popover_group(space_type='VIEW_3D', region_type='TOOLS', context=".particlemode", category="")
+            layout.popover_group(space_type='PROPERTIES', region_type='WINDOW', context=".particlemode", category="")
 
         # 3D View Options, tsk. maybe users aren't always using 3D view?
         toolsettings = context.tool_settings
diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
index c38ead16dc8..f6dc64c7df7 100644
--- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
@@ -36,8 +36,8 @@ from .properties_paint_common import (
 
 
 class View3DPanel:
-    bl_space_type = 'VIEW_3D'
-    bl_region_type = 'TOOLS'
+    bl_space_type = 'PROPERTIES'
+    bl_region_type = 'WINDOW'
 
 
 # **************** standard tool clusters ******************
@@ -69,7 +69,7 @@ def draw_vpaint_symmetry(layout, vpaint):
 
 
 class VIEW3D_PT_tools_meshedit_options(View3DPanel, Panel):
-    bl_category = ""
+    bl_category = "Options"
     bl_context = ".mesh_edit" # dot on purpose (access from topbar)
     bl_label = "Mesh Options"
 
@@ -188,8 +188,8 @@ class VIEW3D_PT_tools_posemode_options(View3DPanel, Panel):
 
 
 class View3DPaintPanel(UnifiedPaintPanel):
-    bl_space_type = 'VIEW_3D'
-    bl_region_type = 'TOOLS'
+    bl_space_type = 'PROPERTIES'
+    bl_region_type = 'WINDOW'
 
 
 class VIEW3D_PT_imapaint_tools_missing(Panel, View3DPaintPanel):
diff --git a/source/blender/editors/interface/interface_icons.c b/source/blender/editors/interface/interface_icons.c
index bacea087677..2c813d152e9 100644
--- a/source/blender/editors/interface/interface_icons.c
+++ b/source/blender/editors/interface/interface_icons.c
@@ -1371,7 +1371,8 @@ static int ui_id_brush_get_icon(const bContext *C, ID *id)
 		int tool = PAINT_TOOL_DRAW, mode = 0;
 		ScrArea *sa = CTX_wm_area(C);
 		char space_type = sa->spacetype;
-		if (space_type == SPACE_TOPBAR) {
+		/* When in an unsupported space. */
+		if (!ELEM(space_type, SPACE_VIEW3D, SPACE_IMAGE)) {
 			space_type = workspace->tools_space_type;
 		}
 
diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c
index b05496fc349..7e3764e0f04 100644
--- a/source/blender/editors/screen/area.c
+++ b/source/blender/editors/screen/area.c
@@ -1825,7 +1825,8 @@ void ED_region_panels(const bContext *C, ARegion *ar, const char *contexts[], in
 	bool is_context_new = 0;
 	int scroll;
 
-	bool use_category_tabs = (ELEM(ar->regiontype, RGN_TYPE_TOOLS, RGN_TYPE_UI));  /* XXX, should use some better check? */
+	/* XXX, should use some better check? */
+	bool use_category_tabs = (ELEM(ar->regiontype, RGN_TYPE_TOOLS, RGN_TYPE_UI, RGN_TYPE_WINDOW));
 	/* offset panels for small vertical tab area */
 	const char *category = NULL;
 	const int category_tabs_width = UI_PANEL_CATEGORY_MARGIN_WIDTH;
diff --git a/source/blender/editors/space_buttons/space_buttons.c b/source/blender/editors/space_buttons/space_buttons.c
index bb57875d8f8..c5b81b56850 100644
--- a/source/blender/editors/space_buttons/space_buttons.c
+++ b/source/blender/editors/space_buttons/space_buttons.c
@@ -47,6 +47,10 @@
 #include "WM_message.h"
 
 #include "RNA_access.h"
+#include "RNA_define.h"
+#include "RNA_enum_types.h"
+
+#include "UI_resources.h"
 
 #include "buttons_intern.h"  /* own include */
 
@@ -138,10 +142,9 @@ static void buttons_main_region_init(wmWindowManager *wm, ARegion *ar)
 	WM_event_add_keymap_handler(&ar->handlers, keymap);
 }
 
-static void buttons_main_region_draw(const bContext *C, ARegion *ar)
+static void buttons_main_region_draw_properties(const bContext *C, SpaceButs *sbuts, ARegion *ar)
 {
-	/* draw entirely, view changes should be handled here */
-	SpaceButs *sbuts = CTX_wm_space_buts(C);
+	BLI_assert(sbuts->space_subtype == SB_SUBTYPE_DATA);
 	const bool vertical = (sbuts->align == BUT_VERTICAL);
 
 	buttons_context_compute(C, sbuts);
@@ -199,6 +202,81 @@ static void buttons_main_region_draw(const bContext *C, ARegion *ar)
 	if (contexts[0]) {
 		ED_region_panels(C, ar, contexts, sbuts->mainb, vertical);
 	}
+}
+
+static void buttons_main_region_draw_tool(const bContext *C, SpaceButs *sbuts, ARegion *ar)
+{
+	BLI_assert(sbuts->space_subtype == SB_SUBTYPE_TOOL);
+	const bool vertical = (sbuts->align == BUT_VERTICAL);
+
+	const WorkSpace *workspace = CTX_wm_workspace(C);
+	if (workspace->tools_space_type == SPACE_VIEW3D) {
+		const int mode = CTX_data_mode_enum(C);
+		const char *contexts[3] = {NULL};
+		switch (mode) {
+			case CTX_MODE_EDIT_MESH:
+				ARRAY_SET_ITEMS(contexts, ".mesh_edit");
+				break;
+			case CTX_MODE_EDIT_CURVE:
+				ARRAY_SET_ITEMS(contexts, ".curve_edit");
+				break;
+			case CTX_MODE_EDIT_SURFACE:
+				ARRAY_SET_ITEMS(contexts, ".curve_edit");
+				break;
+			case CTX_MODE_EDIT_TEXT:
+				ARRAY_SET_ITEMS(contexts, ".todo");
+				break;
+			case CTX_MODE_EDIT_ARMATURE:
+				ARRAY_SET_ITEMS(contexts, ".armature_edit");
+				break;
+			case CTX_MODE_EDIT_METABALL:
+				ARRAY_SET_ITEMS(contexts, ".todo");
+				break;
+			case CTX_MODE_EDIT_LATTICE:
+				ARRAY_SET_ITEMS(contexts, ".todo");
+				break;
+			case CTX_MODE_POSE:
+				ARRAY_SET_ITEMS(contexts, ".posemode");
+				break;
+			case CTX_MODE_SCULPT:
+				ARRAY_SET_ITEMS(contexts, ".paint_common", ".sculpt_m

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list