[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25949] trunk/blender/source/blender: Fix: wasn't able to rename node group nodetree name, or access the nodetree at all.

Matt Ebb matt at mke3.net
Wed Jan 13 07:35:15 CET 2010


Revision: 25949
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25949
Author:   broken
Date:     2010-01-13 07:35:12 +0100 (Wed, 13 Jan 2010)

Log Message:
-----------
Fix: wasn't able to rename node group nodetree name, or access the nodetree at all. Now you
can switch between them too.

Wrapped group nodes in RNA as part of this.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/include/UI_interface.h
    trunk/blender/source/blender/editors/interface/interface_templates.c
    trunk/blender/source/blender/editors/space_node/drawnode.c
    trunk/blender/source/blender/editors/space_node/node_draw.c
    trunk/blender/source/blender/editors/space_node/node_intern.h
    trunk/blender/source/blender/makesrna/RNA_access.h
    trunk/blender/source/blender/makesrna/intern/rna_nodetree.c

Modified: trunk/blender/source/blender/editors/include/UI_interface.h
===================================================================
--- trunk/blender/source/blender/editors/include/UI_interface.h	2010-01-13 04:27:10 UTC (rev 25948)
+++ trunk/blender/source/blender/editors/include/UI_interface.h	2010-01-13 06:35:12 UTC (rev 25949)
@@ -642,6 +642,8 @@
 void uiTemplateDopeSheetFilter(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr);
 void uiTemplateID(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname,
 	char *newop, char *openop, char *unlinkop);
+void uiTemplateIDBrowse(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname,
+				  char *newop, char *openop, char *unlinkop);
 void uiTemplateIDPreview(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname,
 	char *newop, char *openop, char *unlinkop, int rows, int cols);
 void uiTemplateAnyID(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, 

Modified: trunk/blender/source/blender/editors/interface/interface_templates.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_templates.c	2010-01-13 04:27:10 UTC (rev 25948)
+++ trunk/blender/source/blender/editors/interface/interface_templates.c	2010-01-13 06:35:12 UTC (rev 25949)
@@ -446,12 +446,11 @@
 	uiBlockEndAlign(block);
 }
 
-static void ui_template_id(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop, int previews, int prv_rows, int prv_cols)
+static void ui_template_id(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop, int flag, int prv_rows, int prv_cols)
 {
 	TemplateID *template;
 	PropertyRNA *prop;
 	StructRNA *type;
-	int flag;
 
 	prop= RNA_struct_find_property(ptr, propname);
 
@@ -466,14 +465,10 @@
 	template->prv_rows = prv_rows;
 	template->prv_cols = prv_cols;
 	
-	flag= UI_ID_BROWSE|UI_ID_RENAME|UI_ID_DELETE;
-
 	if(newop)
 		flag |= UI_ID_ADD_NEW;
 	if(openop)
 		flag |= UI_ID_OPEN;
-	if(previews)
-		flag |= UI_ID_PREVIEWS;
 	
 	type= RNA_property_pointer_type(ptr, prop);
 	template->idlb= wich_libbase(CTX_data_main(C), RNA_type_to_ID_code(type));
@@ -492,12 +487,17 @@
 
 void uiTemplateID(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop)
 {
-	ui_template_id(layout, C, ptr, propname, newop, openop, unlinkop, 0, 0, 0);
+	ui_template_id(layout, C, ptr, propname, newop, openop, unlinkop, UI_ID_BROWSE|UI_ID_RENAME|UI_ID_DELETE, 0, 0);
 }
 
+void uiTemplateIDBrowse(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop)
+{
+	ui_template_id(layout, C, ptr, propname, newop, openop, unlinkop, UI_ID_BROWSE|UI_ID_RENAME, 0, 0);
+}
+
 void uiTemplateIDPreview(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop, int rows, int cols)
 {
-	ui_template_id(layout, C, ptr, propname, newop, openop, unlinkop, 1, rows, cols);
+	ui_template_id(layout, C, ptr, propname, newop, openop, unlinkop, UI_ID_BROWSE|UI_ID_RENAME|UI_ID_DELETE|UI_ID_PREVIEWS, rows, cols);
 }
 
 /************************ ID Chooser Template ***************************/

Modified: trunk/blender/source/blender/editors/space_node/drawnode.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/drawnode.c	2010-01-13 04:27:10 UTC (rev 25948)
+++ trunk/blender/source/blender/editors/space_node/drawnode.c	2010-01-13 06:35:12 UTC (rev 25949)
@@ -94,54 +94,13 @@
 
 #include "node_intern.h"
 
-/* ****************** GENERAL CALLBACKS FOR NODES ***************** */
 
-#if 0
-/* XXX not used yet, make compiler happy :) */
-static void node_group_alone_cb(bContext *C, void *node_v, void *unused_v)
-{
-	bNode *node= node_v;
-	
-	nodeCopyGroup(node);
-
-	// allqueue(REDRAWNODE, 0);
-}
-
 /* ****************** BUTTON CALLBACKS FOR ALL TREES ***************** */
 
-static void node_buts_group(uiLayout *layout, bContext *C, PointerRNA *ptr)
+void node_buts_group(uiLayout *layout, bContext *C, PointerRNA *ptr)
 {
-	uiBlock *block= uiLayoutAbsoluteBlock(layout);
-	bNode *node= ptr->data;
-	rctf *butr= &node->butr;
-
-	if(node->id) {
-		uiBut *bt;
-		short width;
-		
-		uiBlockBeginAlign(block);
-		
-		/* name button */
-		width= (short)(butr->xmax-butr->xmin - (node->id->us>1?19.0f:0.0f));
-		bt= uiDefBut(block, TEX, B_NOP, "NT:",
-					 (short)butr->xmin, (short)butr->ymin, width, 19, 
-					 node->id->name+2, 0.0, 19.0, 0, 0, "NodeTree name");
-		uiButSetFunc(bt, node_ID_title_cb, node, NULL);
-		
-		/* user amount */
-		if(node->id->us>1) {
-			char str1[32];
-			sprintf(str1, "%d", node->id->us);
-			bt= uiDefBut(block, BUT, B_NOP, str1, 
-						 (short)butr->xmax-19, (short)butr->ymin, 19, 19, 
-						 NULL, 0, 0, 0, 0, "Displays number of users.");
-			uiButSetFunc(bt, node_group_alone_cb, node, NULL);
-		}
-		
-		uiBlockEndAlign(block);
-	}	
+	uiTemplateIDBrowse(layout, C, ptr, "nodetree", NULL, NULL, "");
 }
-#endif
 
 static void node_buts_value(uiLayout *layout, bContext *C, PointerRNA *ptr)
 {

Modified: trunk/blender/source/blender/editors/space_node/node_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_draw.c	2010-01-13 04:27:10 UTC (rev 25948)
+++ trunk/blender/source/blender/editors/space_node/node_draw.c	2010-01-13 06:35:12 UTC (rev 25949)
@@ -265,7 +265,7 @@
 
 	/* XXX ugly hack, typeinfo for group is generated */
 	if(node->type == NODE_GROUP)
-		; // XXX node->typeinfo->uifunc= node_buts_group;
+		node->typeinfo->uifunc= node_buts_group;
 	
 	/* buttons rect? */
 	if((node->flag & NODE_OPTIONS) && node->typeinfo->uifunc) {

Modified: trunk/blender/source/blender/editors/space_node/node_intern.h
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_intern.h	2010-01-13 04:27:10 UTC (rev 25948)
+++ trunk/blender/source/blender/editors/space_node/node_intern.h	2010-01-13 06:35:12 UTC (rev 25949)
@@ -69,6 +69,8 @@
 int node_link_bezier_points(View2D *v2d, SpaceNode *snode, bNodeLink *link, float coord_array[][2], int resol);
 void draw_nodespace_back_pix(ARegion *ar, SpaceNode *snode, int color_manage);
 
+void node_buts_group(struct uiLayout *layout, struct bContext *C, struct PointerRNA *ptr);
+
 /* node_edit.c */
 void node_tree_from_ID(ID *id, bNodeTree **ntree, bNodeTree **edittree, int *treetype);
 void snode_handle_recalc(bContext *C, SpaceNode *snode);

Modified: trunk/blender/source/blender/makesrna/RNA_access.h
===================================================================
--- trunk/blender/source/blender/makesrna/RNA_access.h	2010-01-13 04:27:10 UTC (rev 25948)
+++ trunk/blender/source/blender/makesrna/RNA_access.h	2010-01-13 06:35:12 UTC (rev 25949)
@@ -317,6 +317,7 @@
 extern StructRNA RNA_NlaStrip;
 extern StructRNA RNA_NlaTrack;
 extern StructRNA RNA_Node;
+extern StructRNA RNA_NodeGroup;
 extern StructRNA RNA_NodeSocket;
 extern StructRNA RNA_NodeTree;
 extern StructRNA RNA_NoiseTexture;

Modified: trunk/blender/source/blender/makesrna/intern/rna_nodetree.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_nodetree.c	2010-01-13 04:27:10 UTC (rev 25948)
+++ trunk/blender/source/blender/makesrna/intern/rna_nodetree.c	2010-01-13 06:35:12 UTC (rev 25949)
@@ -63,6 +63,9 @@
 		
 		#undef DefNode
 		
+		case NODE_GROUP:
+			return &RNA_NodeGroup;
+			
 		default:
 			return &RNA_Node;
 	}
@@ -177,6 +180,16 @@
 	node_update(bmain, scene, ntree, node);
 }
 
+static void rna_NodeGroup_update(Main *bmain, Scene *scene, PointerRNA *ptr)
+{
+	bNodeTree *ntree= (bNodeTree*)ptr->id.data;
+	bNode *node= (bNode*)ptr->data;
+	
+	nodeVerifyGroup((bNodeTree *)node->id);
+	
+	node_update(bmain, scene, ntree, node);
+}
+
 static void rna_Node_update_name(Main *bmain, Scene *scene, PointerRNA *ptr)
 {
 	bNodeTree *ntree= (bNodeTree*)ptr->id.data;
@@ -474,7 +487,7 @@
 
 enum
 {
-	Category_NoCategory,
+	Category_GroupNode,
 	Category_ShaderNode,
 	Category_CompositorNode,
 	Category_TextureNode
@@ -521,6 +534,8 @@
 	
 	#undef DefNode
 	#undef Str
+	
+	reg_node(NODE_GROUP, Category_GroupNode, "GROUP", "NodeGroup", "Node", "Group", "");
 }
 
 static StructRNA* def_node(BlenderRNA *brna, int node_id)
@@ -567,6 +582,13 @@
 	
 	item++;
 	
+	item->value = NODE_GROUP;
+	item->identifier = "GROUP";
+	item->name = "Group";
+	item->description = "";
+	
+	item++;
+	
 	memset(item, 0, sizeof(EnumPropertyItem));
 	
 	return items;
@@ -575,6 +597,19 @@
 
 /* -- Common nodes ---------------------------------------------------------- */
 
+static void def_group(StructRNA *srna)
+{
+	PropertyRNA *prop;
+	
+	prop = RNA_def_property(srna, "nodetree", PROP_POINTER, PROP_NONE);
+	RNA_def_property_pointer_sdna(prop, NULL, "id");
+	RNA_def_property_struct_type(prop, "NodeTree");
+	RNA_def_property_flag(prop, PROP_EDITABLE);
+	RNA_def_property_ui_text(prop, "Node Tree", "");
+	RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_NodeGroup_update");
+}
+
+
 static void def_math(StructRNA *srna)
 {
 	PropertyRNA *prop;
@@ -2106,13 +2141,15 @@
 	rna_def_shader_node(brna);
 	rna_def_compositor_node(brna);
 	rna_def_texture_node(brna);
-	
+		
 	#define DefNode(Category, ID, DefFunc, EnumName, StructName, UIName, UIDesc) \
 		define_specific_node(brna, ID, DefFunc);
 		
 	#include "rna_nodetree_types.h"
 	
 	#undef DefNode
+	
+	define_specific_node(brna, NODE_GROUP, def_group);
 }
 
 #endif





More information about the Bf-blender-cvs mailing list