[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56585] trunk/blender/source/blender: Extended the draw callback API for node sockets with an explicit text parameter , instead of always using the sock->name string.

Lukas Toenne lukas.toenne at googlemail.com
Wed May 8 16:58:41 CEST 2013


Revision: 56585
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56585
Author:   lukastoenne
Date:     2013-05-08 14:58:41 +0000 (Wed, 08 May 2013)
Log Message:
-----------
Extended the draw callback API for node sockets with an explicit text parameter, instead of always using the sock->name string. This can be useful for drawing the socket values separate from the label, e.g. in the node view template.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_node.h
    trunk/blender/source/blender/editors/space_node/drawnode.c
    trunk/blender/source/blender/makesrna/intern/rna_nodetree.c

Modified: trunk/blender/source/blender/blenkernel/BKE_node.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_node.h	2013-05-08 14:58:37 UTC (rev 56584)
+++ trunk/blender/source/blender/blenkernel/BKE_node.h	2013-05-08 14:58:41 UTC (rev 56585)
@@ -113,7 +113,7 @@
 typedef struct bNodeSocketType {
 	char idname[64];				/* identifier name */
 	
-	void (*draw)(struct bContext *C, struct uiLayout *layout, struct PointerRNA *ptr, struct PointerRNA *node_ptr);
+	void (*draw)(struct bContext *C, struct uiLayout *layout, struct PointerRNA *ptr, struct PointerRNA *node_ptr, const char *text);
 	void (*draw_color)(struct bContext *C, struct PointerRNA *ptr, struct PointerRNA *node_ptr, float *r_color);
 	
 	void (*interface_draw)(struct bContext *C, struct uiLayout *layout, struct PointerRNA *ptr);

Modified: trunk/blender/source/blender/editors/space_node/drawnode.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/drawnode.c	2013-05-08 14:58:37 UTC (rev 56584)
+++ trunk/blender/source/blender/editors/space_node/drawnode.c	2013-05-08 14:58:41 UTC (rev 56585)
@@ -80,21 +80,22 @@
 
 /* ****************** SOCKET BUTTON DRAW FUNCTIONS ***************** */
 
-static void node_socket_button_label(bContext *UNUSED(C), uiLayout *layout, PointerRNA *ptr, PointerRNA *UNUSED(node_ptr))
+static void node_socket_button_label(bContext *UNUSED(C), uiLayout *layout, PointerRNA *UNUSED(ptr), PointerRNA *UNUSED(node_ptr),
+                                     const char *text)
 {
-	bNodeSocket *sock = (bNodeSocket *)ptr->data;
-	uiItemL(layout, IFACE_(sock->name), 0);
+	uiItemL(layout, text, 0);
 }
 
 static void node_draw_input_default(bContext *C, uiLayout *layout, PointerRNA *ptr, PointerRNA *node_ptr)
 {
 	bNodeSocket *sock = (bNodeSocket *)ptr->data;
-	sock->typeinfo->draw(C, layout, ptr, node_ptr);
+	sock->typeinfo->draw(C, layout, ptr, node_ptr, IFACE_(sock->name));
 }
 
 static void node_draw_output_default(bContext *C, uiLayout *layout, PointerRNA *ptr, PointerRNA *node_ptr)
 {
-	node_socket_button_label(C, layout, ptr, node_ptr);
+	bNodeSocket *sock = ptr->data;
+	node_socket_button_label(C, layout, ptr, node_ptr, IFACE_(sock->name));
 }
 
 
@@ -2603,7 +2604,8 @@
 	}
 }
 
-static void node_socket_undefined_draw(bContext *UNUSED(C), uiLayout *layout, PointerRNA *UNUSED(ptr), PointerRNA *UNUSED(node_ptr))
+static void node_socket_undefined_draw(bContext *UNUSED(C), uiLayout *layout, PointerRNA *UNUSED(ptr), PointerRNA *UNUSED(node_ptr),
+                                       const char *UNUSED(text))
 {
 	uiItemL(layout, "Undefined Socket Type", ICON_ERROR);
 }
@@ -2727,14 +2729,14 @@
 	copy_v4_v4(r_color, std_node_socket_colors[type]);
 }
 
-static void std_node_socket_draw(bContext *C, uiLayout *layout, PointerRNA *ptr, PointerRNA *node_ptr)
+static void std_node_socket_draw(bContext *C, uiLayout *layout, PointerRNA *ptr, PointerRNA *node_ptr, const char *text)
 {
 	bNodeSocket *sock = ptr->data;
 	int type = sock->typeinfo->type;
 	/*int subtype = sock->typeinfo->subtype;*/
 	
 	if ((sock->flag & SOCK_IN_USE) || (sock->flag & SOCK_HIDE_VALUE)) {
-		node_socket_button_label(C, layout, ptr, node_ptr);
+		node_socket_button_label(C, layout, ptr, node_ptr, text);
 		return;
 	}
 	
@@ -2742,29 +2744,29 @@
 		case SOCK_FLOAT:
 		case SOCK_INT:
 		case SOCK_BOOLEAN:
-			uiItemR(layout, ptr, "default_value", 0, IFACE_(sock->name), 0);
+			uiItemR(layout, ptr, "default_value", 0, text, 0);
 			break;
 		case SOCK_VECTOR:
-			uiTemplateComponentMenu(layout, ptr, "default_value", IFACE_(sock->name));
+			uiTemplateComponentMenu(layout, ptr, "default_value", text);
 			break;
 		case SOCK_RGBA: {
 			uiLayout *row = uiLayoutRow(layout, false);
 			uiLayoutSetAlignment(row, UI_LAYOUT_ALIGN_LEFT);
 			/* draw the socket name right of the actual button */
 			uiItemR(row, ptr, "default_value", 0, "", 0);
-			uiItemL(row, IFACE_(sock->name), 0);
+			uiItemL(row, text, 0);
 			break;
 		}
 		case SOCK_STRING: {
 			uiLayout *row = uiLayoutRow(layout, true);
 			/* draw the socket name right of the actual button */
 			uiItemR(row, ptr, "default_value", 0, "", 0);
-			uiItemL(row, IFACE_(sock->name), 0);
+			uiItemL(row, text, 0);
 			break;
 		}
 		
 		default:
-			node_socket_button_label(C, layout, ptr, node_ptr);
+			node_socket_button_label(C, layout, ptr, node_ptr, text);
 			break;
 	}
 }

Modified: trunk/blender/source/blender/makesrna/intern/rna_nodetree.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_nodetree.c	2013-05-08 14:58:37 UTC (rev 56584)
+++ trunk/blender/source/blender/makesrna/intern/rna_nodetree.c	2013-05-08 14:58:41 UTC (rev 56585)
@@ -1688,7 +1688,7 @@
 
 /* ******** Node Socket ******** */
 
-static void rna_NodeSocket_draw(bContext *C, struct uiLayout *layout, PointerRNA *ptr, PointerRNA *node_ptr)
+static void rna_NodeSocket_draw(bContext *C, struct uiLayout *layout, PointerRNA *ptr, PointerRNA *node_ptr, const char *text)
 {
 	extern FunctionRNA rna_NodeSocket_draw_func;
 
@@ -1702,6 +1702,7 @@
 	RNA_parameter_set_lookup(&list, "context", &C);
 	RNA_parameter_set_lookup(&list, "layout", &layout);
 	RNA_parameter_set_lookup(&list, "node", node_ptr);
+	RNA_parameter_set_lookup(&list, "text", &text);
 	sock->typeinfo->ext_socket.call(C, ptr, func, &list);
 
 	RNA_parameter_list_free(&list);
@@ -2128,11 +2129,12 @@
 
 /* ******** Standard Node Socket Base Types ******** */
 
-static void rna_NodeSocketStandard_draw(ID *id, bNodeSocket *sock, struct bContext *C, struct uiLayout *layout, PointerRNA *nodeptr)
+static void rna_NodeSocketStandard_draw(ID *id, bNodeSocket *sock, struct bContext *C, struct uiLayout *layout, PointerRNA *nodeptr,
+                                        const char *text)
 {
 	PointerRNA ptr;
 	RNA_pointer_create(id, &RNA_NodeSocket, sock, &ptr);
-	sock->typeinfo->draw(C, layout, &ptr, nodeptr);
+	sock->typeinfo->draw(C, layout, &ptr, nodeptr, text);
 }
 
 static void rna_NodeSocketStandard_draw_color(ID *id, bNodeSocket *sock, struct bContext *C, PointerRNA *nodeptr, float *r_color)
@@ -5808,6 +5810,10 @@
 	RNA_def_property_struct_type(parm, "Node");
 	RNA_def_property_ui_text(parm, "Node", "Node the socket belongs to");
 	RNA_def_property_flag(parm, PROP_REQUIRED | PROP_NEVER_NULL | PROP_RNAPTR);
+	parm = RNA_def_property(func, "text", PROP_STRING, PROP_NONE);
+	RNA_def_property_ui_text(parm, "Text", "Text label to draw alongside properties");
+	RNA_def_property_string_default(parm, "");
+	RNA_def_property_flag(parm, PROP_REQUIRED);
 
 	func = RNA_def_function(srna, "draw_color", NULL);
 	RNA_def_function_ui_description(func, "Color of the socket icon");
@@ -6204,6 +6210,10 @@
 	RNA_def_property_struct_type(parm, "Node");
 	RNA_def_property_ui_text(parm, "Node", "Node the socket belongs to");
 	RNA_def_property_flag(parm, PROP_REQUIRED | PROP_NEVER_NULL | PROP_RNAPTR);
+	parm = RNA_def_property(func, "text", PROP_STRING, PROP_NONE);
+	RNA_def_property_ui_text(parm, "Text", "Text label to draw alongside properties");
+	RNA_def_property_string_default(parm, "");
+	RNA_def_property_flag(parm, PROP_REQUIRED);
 
 	func = RNA_def_function(srna, "draw_color", "rna_NodeSocketStandard_draw_color");
 	RNA_def_function_flag(func, FUNC_USE_SELF_ID);




More information about the Bf-blender-cvs mailing list