[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