[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18215] branches/blender2.5/blender/source /blender: RNA

Brecht Van Lommel brecht at blender.org
Thu Jan 1 16:52:53 CET 2009


Revision: 18215
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18215
Author:   blendix
Date:     2009-01-01 16:52:51 +0100 (Thu, 01 Jan 2009)

Log Message:
-----------
RNA
* Added support for sending notifiers and updates when setting
  RNA properties. Per property, there is a notifier NC_/ND_ flag,
  and a function that is called. Currently only used for
  Object.loc/rot/size.
* RNA_property_update that does this is not automatically called
  in every _set function, it has do be done separate, and is being
  done by buttons with RNA data.
* Perhaps for python there could be a trick to accumulate these
  flags rather than update each time, though for now the python
  RNA code could just do them everytime. Did not add these calls
  in the python code yet because it needs context, not sure where
  to get that from?

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/interface/interface.c
    branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c
    branches/blender2.5/blender/source/blender/makesrna/RNA_access.h
    branches/blender2.5/blender/source/blender/makesrna/RNA_define.h
    branches/blender2.5/blender/source/blender/makesrna/SConscript
    branches/blender2.5/blender/source/blender/makesrna/intern/CMakeLists.txt
    branches/blender2.5/blender/source/blender/makesrna/intern/Makefile
    branches/blender2.5/blender/source/blender/makesrna/intern/SConscript
    branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_ID.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_controller.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_define.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_fluidsim.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_internal_types.h
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_mesh.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_modifier.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_object.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_property.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_rna.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_sensor.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_sequence.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_wm.c

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface.c	2009-01-01 14:57:04 UTC (rev 18214)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface.c	2009-01-01 15:52:51 UTC (rev 18215)
@@ -1584,8 +1584,8 @@
 		value= ui_get_but_val(but);
 
 		if(ui_is_but_float(but)) {
-			if(value == FLT_MAX) sprintf(but->drawstr, "%sFLT_MAX", but->str);
-			else if(value == -FLT_MAX) sprintf(but->drawstr, "%s-FLT_MAX", but->str);
+			if(value == FLT_MAX) sprintf(but->drawstr, "%sinf", but->str);
+			else if(value == -FLT_MAX) sprintf(but->drawstr, "%s-inf", but->str);
 			else if(but->a2) { /* amount of digits defined */
 				if(but->a2==1) sprintf(but->drawstr, "%s%.1f", but->str, value);
 				else if(but->a2==2) sprintf(but->drawstr, "%s%.2f", but->str, value);

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c	2009-01-01 14:57:04 UTC (rev 18214)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface_handlers.c	2009-01-01 15:52:51 UTC (rev 18215)
@@ -148,6 +148,9 @@
 	const char *opname;
 	int opcontext;
 	IDProperty *opproperties;
+
+	PointerRNA rnapoin;
+	PropertyRNA *rnaprop;
 } uiAfterFunc;
 
 static void button_activate_state(bContext *C, uiBut *but, uiHandleButtonState state);
@@ -168,7 +171,7 @@
 	 * handling is done, i.e. menus are closed, in order to avoid conflicts
 	 * with these functions removing the buttons we are working with */
 
-	if(but->func || block->handle_func || (but->type == BUTM && block->butm_func) || but->opname) {
+	if(but->func || block->handle_func || (but->type == BUTM && block->butm_func) || but->opname || but->rnaprop) {
 		after= MEM_callocN(sizeof(uiAfterFunc), "uiAfterFunc");
 
 		after->func= but->func;
@@ -189,6 +192,9 @@
 		after->opcontext= but->opcontext;
 		after->opproperties= but->opproperties;
 
+		after->rnapoin= but->rnapoin;
+		after->rnaprop= but->rnaprop;
+
 		but->opname= NULL;
 		but->opcontext= 0;
 		but->opproperties= NULL;
@@ -221,6 +227,9 @@
 			IDP_FreeProperty(after->opproperties);
 			MEM_freeN(after->opproperties);
 		}
+
+		if(after->rnapoin.data)
+			RNA_property_update(C, &after->rnapoin, after->rnaprop);
 	}
 
 	BLI_freelistN(&funcs);

Modified: branches/blender2.5/blender/source/blender/makesrna/RNA_access.h
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/RNA_access.h	2009-01-01 14:57:04 UTC (rev 18214)
+++ branches/blender2.5/blender/source/blender/makesrna/RNA_access.h	2009-01-01 15:52:51 UTC (rev 18215)
@@ -269,7 +269,7 @@
 int RNA_property_editable(PointerRNA *ptr, PropertyRNA *prop);
 int RNA_property_evaluated(PointerRNA *ptr, PropertyRNA *prop);
 
-void RNA_property_notify(PropertyRNA *prop, struct bContext *C, PointerRNA *ptr);
+void RNA_property_update(struct bContext *C, PointerRNA *ptr, PropertyRNA *prop);
 
 /* Property Data */
 

Modified: branches/blender2.5/blender/source/blender/makesrna/RNA_define.h
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/RNA_define.h	2009-01-01 14:57:04 UTC (rev 18214)
+++ branches/blender2.5/blender/source/blender/makesrna/RNA_define.h	2009-01-01 15:52:51 UTC (rev 18215)
@@ -44,10 +44,11 @@
 void RNA_def_struct_sdna_from(StructRNA *srna, const char *structname, const char *propname);
 void RNA_def_struct_name_property(StructRNA *srna, PropertyRNA *prop);
 void RNA_def_struct_flag(StructRNA *srna, int flag);
-void RNA_def_struct_funcs(StructRNA *srna, const char *notify, const char *refine);
+void RNA_def_struct_refine_func(StructRNA *srna, const char *refine);
 void RNA_def_struct_identifier(StructRNA *srna, const char *identifier);
 void RNA_def_struct_ui_text(StructRNA *srna, const char *name, const char *description);
 void RNA_struct_free(BlenderRNA *brna, StructRNA *srna);
+
 /* Property */
 
 PropertyRNA *RNA_def_property(StructRNA *srna, const char *identifier, int type, int subtype);
@@ -83,7 +84,9 @@
 void RNA_def_property_ui_text(PropertyRNA *prop, const char *name, const char *description);
 void RNA_def_property_ui_range(PropertyRNA *prop, double min, double max, double step, int precision);
 
-void RNA_def_property_funcs(PropertyRNA *prop, const char *notify, const char *editable);
+void RNA_def_property_update(PropertyRNA *prop, int noteflag, const char *updatefunc);
+void RNA_def_property_editable_func(PropertyRNA *prop, const char *editable);
+
 void RNA_def_property_boolean_funcs(PropertyRNA *prop, const char *get, const char *set);
 void RNA_def_property_int_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range);
 void RNA_def_property_float_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range);

Modified: branches/blender2.5/blender/source/blender/makesrna/SConscript
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/SConscript	2009-01-01 14:57:04 UTC (rev 18214)
+++ branches/blender2.5/blender/source/blender/makesrna/SConscript	2009-01-01 15:52:51 UTC (rev 18215)
@@ -7,5 +7,6 @@
 objs += o
 
 incs = '#/intern/guardedalloc ../blenkernel ../blenlib ../makesdna intern .'
+incs += ' ../windowmanager'
 
 env.BlenderLib ( 'bf_rna', objs, Split(incs), [], libtype=['core'], priority = [195] )

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/CMakeLists.txt
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/CMakeLists.txt	2009-01-01 14:57:04 UTC (rev 18214)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/CMakeLists.txt	2009-01-01 15:52:51 UTC (rev 18215)
@@ -66,7 +66,7 @@
      ../../../../intern/guardedalloc/intern/mallocn.c
      ../../../../intern/guardedalloc/intern/mmap_win.c)
 
-INCLUDE_DIRECTORIES(../../../../intern/guardedalloc .. ../../makesdna ../../blenkernel ../../blenlib .)
+INCLUDE_DIRECTORIES(../../../../intern/guardedalloc .. ../../makesdna ../../blenkernel ../../blenlib ../../windowmanager .)
 FILE(GLOB INC_FILES ../*.h ../../makesdna/*.h)
 
 # Build makesrna executable

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/Makefile
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/Makefile	2009-01-01 14:57:04 UTC (rev 18214)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/Makefile	2009-01-01 15:52:51 UTC (rev 18215)
@@ -34,6 +34,7 @@
 CPPFLAGS += -I../../blenlib
 CPPFLAGS += -I../../blenkernel
 CPPFLAGS += -I../../makesdna
+CPPFLAGS += -I../../windowmanager
 CPPFLAGS += -I..
 CPPFLAGS += -I.
 

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/SConscript
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/SConscript	2009-01-01 14:57:04 UTC (rev 18214)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/SConscript	2009-01-01 15:52:51 UTC (rev 18215)
@@ -3,7 +3,7 @@
 import os
 
 Import ('env')
-cflags = ''
+cflags = '-Wall'
 defines = []
 root_build_dir=env['BF_BUILDDIR']
 
@@ -22,7 +22,8 @@
                                  '../../blenlib',
                                  '../../blenkernel',
                                  '../../makesdna',
-                                 '../../makesrna'])
+                                 '../../makesrna',
+								 '../../windowmanager'])
 
 if env['OURPLATFORM'] == 'linuxcross':
     makesrna_tool.Replace(CC='gcc')

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c	2009-01-01 14:57:04 UTC (rev 18214)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c	2009-01-01 15:52:51 UTC (rev 18215)
@@ -785,7 +785,7 @@
 		rna_print_c_string(f, prop->name); fprintf(f, ",\n\t");
 		rna_print_c_string(f, prop->description); fprintf(f, ",\n");
 		fprintf(f, "\t%s, %s, %d,\n", rna_property_typename(prop->type), rna_property_subtypename(prop->subtype), prop->arraylength);
-		fprintf(f, "\t%s, %s},\n", rna_function_string(prop->notify), rna_function_string(prop->editable));
+		fprintf(f, "\t%s, %d, %s},\n", rna_function_string(prop->update), prop->noteflag, rna_function_string(prop->editable));
 
 		switch(prop->type) {
 			case PROP_BOOLEAN: {
@@ -876,7 +876,7 @@
 	if(srna->from) fprintf(f, "\t&RNA_%s,\n", (char*)srna->from);
 	else fprintf(f, "\tNULL,\n");
 
-	fprintf(f, "\t%s, %s,\n", rna_function_string(srna->notify), rna_function_string(srna->refine));
+	fprintf(f, "\t%s,\n", rna_function_string(srna->refine));
 
 	prop= srna->properties.first;
 	if(prop) fprintf(f, "\t{(PropertyRNA*)&rna_%s_%s, ", srna->identifier, prop->identifier);

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_ID.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_ID.c	2009-01-01 14:57:04 UTC (rev 18214)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_ID.c	2009-01-01 15:52:51 UTC (rev 18215)
@@ -166,7 +166,7 @@
 	RNA_def_struct_ui_text(srna, "ID", "Used as a basis for dealing with many types with unique names, garbage collection and linked libraries");
 	
 	RNA_def_struct_flag(srna, STRUCT_ID);
-	RNA_def_struct_funcs(srna, NULL, "rna_ID_refine");
+	RNA_def_struct_refine_func(srna, "rna_ID_refine");
 
 	prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
 	RNA_def_property_flag(prop, PROP_NOT_EDITABLE); /* must be unique */

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c	2009-01-01 14:57:04 UTC (rev 18214)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c	2009-01-01 15:52:51 UTC (rev 18215)

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list