[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [21648] branches/blender2.5/blender: bpy rna
Campbell Barton
ideasman42 at gmail.com
Fri Jul 17 04:31:28 CEST 2009
Revision: 21648
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21648
Author: campbellbarton
Date: 2009-07-17 04:31:28 +0200 (Fri, 17 Jul 2009)
Log Message:
-----------
bpy rna
Calling rna functions with invalid keywords, too many keywords and too many args would fail silently
- now raise an error with invalid keywords and a list of valid ones, raise an error when too many args are given.
- calling rna functions would alloc a ParameterList each time, changed to use a stack variable (2 pointers and an int).
- store the number of parameters ParameterList
- python exception types were wrong in many cases, (using attribute error rather then type error)
- fixes to small errors in python UI scripts.
Modified Paths:
--------------
branches/blender2.5/blender/release/ui/buttons_physics_fluid.py
branches/blender2.5/blender/release/ui/buttons_physics_softbody.py
branches/blender2.5/blender/source/blender/editors/space_console/space_console.c
branches/blender2.5/blender/source/blender/makesrna/RNA_access.h
branches/blender2.5/blender/source/blender/makesrna/RNA_types.h
branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c
branches/blender2.5/blender/source/blender/makesrna/intern/rna_internal_types.h
branches/blender2.5/blender/source/blender/makesrna/intern/rna_ui.c
branches/blender2.5/blender/source/blender/python/intern/bpy_rna.c
Modified: branches/blender2.5/blender/release/ui/buttons_physics_fluid.py
===================================================================
--- branches/blender2.5/blender/release/ui/buttons_physics_fluid.py 2009-07-17 02:10:27 UTC (rev 21647)
+++ branches/blender2.5/blender/release/ui/buttons_physics_fluid.py 2009-07-17 02:31:28 UTC (rev 21648)
@@ -30,14 +30,20 @@
row = split.row(align=True)
row.itemR(md, "render", text="")
row.itemR(md, "realtime", text="")
+
+ fluid = md.settings
+
else:
# add modifier
split.item_enumO("OBJECT_OT_modifier_add", "type", "FLUID_SIMULATION", text="Add")
split.itemL()
+
+ fluid = None
+
+
+ if fluid:
+
- if md:
- fluid = md.settings
-
col = layout.column(align=True)
row = col.row()
row.item_enumR(fluid, "type", "DOMAIN")
@@ -177,7 +183,11 @@
def poll(self, context):
md = context.fluid
if md:
- return (md.settings.type == 'DOMAIN')
+ settings = md.settings
+ if settings:
+ return (settings.type == 'DOMAIN')
+
+ return False
def draw(self, context):
layout = self.layout
@@ -217,7 +227,11 @@
def poll(self, context):
md = context.fluid
if md:
- return (md.settings.type == 'DOMAIN')
+ settings = md.settings
+ if settings:
+ return (settings.type == 'DOMAIN')
+
+ return False
def draw(self, context):
layout = self.layout
@@ -244,7 +258,11 @@
def poll(self, context):
md = context.fluid
if md:
- return (md.settings.type == 'DOMAIN')
+ settings = md.settings
+ if settings:
+ return (settings.type == 'DOMAIN')
+
+ return False
def draw(self, context):
layout = self.layout
Modified: branches/blender2.5/blender/release/ui/buttons_physics_softbody.py
===================================================================
--- branches/blender2.5/blender/release/ui/buttons_physics_softbody.py 2009-07-17 02:10:27 UTC (rev 21647)
+++ branches/blender2.5/blender/release/ui/buttons_physics_softbody.py 2009-07-17 02:31:28 UTC (rev 21648)
@@ -136,8 +136,8 @@
col.itemR(softbody, "new_aero", text="Aero")
subcol = col.column()
- subcol.active = softbody.new_aero
- subcol.itemR(softbody, "aero", text="Factor", enabled=softbody.new_aero)
+ subcol.enabled = softbody.new_aero
+ subcol.itemR(softbody, "aero", text="Factor")
col.itemL(text="Collision:")
col.itemR(softbody, "edge_collision", text="Edge")
Modified: branches/blender2.5/blender/source/blender/editors/space_console/space_console.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_console/space_console.c 2009-07-17 02:10:27 UTC (rev 21647)
+++ branches/blender2.5/blender/source/blender/editors/space_console/space_console.c 2009-07-17 02:31:28 UTC (rev 21648)
@@ -60,7 +60,7 @@
#include "console_intern.h" // own include
-static void console_update_rect(bContext *C, ARegion *ar)
+static void console_update_rect(const bContext *C, ARegion *ar)
{
SpaceConsole *sc= CTX_wm_space_console(C);
View2D *v2d= &ar->v2d;
Modified: branches/blender2.5/blender/source/blender/makesrna/RNA_access.h
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/RNA_access.h 2009-07-17 02:10:27 UTC (rev 21647)
+++ branches/blender2.5/blender/source/blender/makesrna/RNA_access.h 2009-07-17 02:31:28 UTC (rev 21648)
@@ -758,8 +758,9 @@
/* Utility */
-ParameterList *RNA_parameter_list_create(PointerRNA *ptr, FunctionRNA *func);
+ParameterList *RNA_parameter_list_create(ParameterList *parms, PointerRNA *ptr, FunctionRNA *func);
void RNA_parameter_list_free(ParameterList *parms);
+int RNA_parameter_list_size(ParameterList *parms);
void RNA_parameter_list_begin(ParameterList *parms, ParameterIterator *iter);
void RNA_parameter_list_next(ParameterIterator *iter);
Modified: branches/blender2.5/blender/source/blender/makesrna/RNA_types.h
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/RNA_types.h 2009-07-17 02:10:27 UTC (rev 21647)
+++ branches/blender2.5/blender/source/blender/makesrna/RNA_types.h 2009-07-17 02:31:28 UTC (rev 21648)
@@ -163,10 +163,19 @@
/* Parameter List */
-typedef struct ParameterList ParameterList;
+typedef struct ParameterList {
+ /* storage for parameters */
+ void *data;
+ /* store the parameter count */
+ int tot;
+
+ /* function passed at creation time */
+ struct FunctionRNA *func;
+} ParameterList;
+
typedef struct ParameterIterator {
- ParameterList *parms;
+ struct ParameterList *parms;
PointerRNA funcptr;
void *data;
int size, offset;
@@ -209,7 +218,7 @@
} StructFlag;
typedef int (*StructValidateFunc)(struct PointerRNA *ptr, void *data, int *have_function);
-typedef int (*StructCallbackFunc)(struct PointerRNA *ptr, struct FunctionRNA *func, struct ParameterList *list);
+typedef int (*StructCallbackFunc)(struct PointerRNA *ptr, struct FunctionRNA *func, ParameterList *list);
typedef void (*StructFreeFunc)(void *data);
typedef struct StructRNA *(*StructRegisterFunc)(const struct bContext *C, struct ReportList *reports, void *data,
StructValidateFunc validate, StructCallbackFunc call, StructFreeFunc free);
Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c 2009-07-17 02:10:27 UTC (rev 21647)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c 2009-07-17 02:31:28 UTC (rev 21648)
@@ -1404,9 +1404,10 @@
#if 0
else if(cprop->add){
if(!(cprop->add->flag & FUNC_USE_CONTEXT)) { /* XXX check for this somewhere else */
- ParameterList *params= RNA_parameter_list_create(ptr, cprop->add);
- RNA_function_call(NULL, NULL, ptr, cprop->add, params);
- RNA_parameter_list_free(params);
+ ParameterList params;
+ RNA_parameter_list_create(¶ms, ptr, cprop->add);
+ RNA_function_call(NULL, NULL, ptr, cprop->add, ¶ms);
+ RNA_parameter_list_free(¶ms);
}
}
#endif
@@ -1453,9 +1454,10 @@
#if 0
else if(cprop->remove){
if(!(cprop->remove->flag & FUNC_USE_CONTEXT)) { /* XXX check for this somewhere else */
- ParameterList *params= RNA_parameter_list_create(ptr, cprop->remove);
- RNA_function_call(NULL, NULL, ptr, cprop->remove, params);
- RNA_parameter_list_free(params);
+ ParameterList params;
+ RNA_parameter_list_create(&ptr, cprop->remove);
+ RNA_function_call(NULL, NULL, ptr, cprop->remove, ¶ms);
+ RNA_parameter_list_free(¶ms);
}
}
#endif
@@ -2787,20 +2789,17 @@
/* Utility */
-ParameterList *RNA_parameter_list_create(PointerRNA *ptr, FunctionRNA *func)
+ParameterList *RNA_parameter_list_create(ParameterList *parms, PointerRNA *ptr, FunctionRNA *func)
{
- ParameterList *parms;
PropertyRNA *parm;
- int tot;
+ int tot= 0;
- parms= MEM_callocN(sizeof(ParameterList), "ParameterList");
-
- parm= func->cont.properties.first;
- for(tot= 0; parm; parm= parm->next)
+ for(parm= func->cont.properties.first; parm; parm= parm->next)
tot+= rna_parameter_size(parm);
parms->data= MEM_callocN(tot, "RNA_parameter_list_create");
parms->func= func;
+ parms->tot= tot;
return parms;
}
@@ -2822,8 +2821,11 @@
parms->data= NULL;
parms->func= NULL;
+}
- MEM_freeN(parms);
+int RNA_parameter_list_size(ParameterList *parms)
+{
+ return parms->tot;
}
void RNA_parameter_list_begin(ParameterList *parms, ParameterIterator *iter)
@@ -3141,7 +3143,7 @@
int RNA_function_call_direct_va(bContext *C, ReportList *reports, PointerRNA *ptr, FunctionRNA *func, const char *format, va_list args)
{
PointerRNA funcptr;
- ParameterList *parms;
+ ParameterList parms;
ParameterIterator iter;
PropertyRNA *pret, *parm;
PropertyType type;
@@ -3157,8 +3159,8 @@
pret= RNA_function_return(func);
flen= strlen(format);
- parms= RNA_parameter_list_create(ptr, func);
- RNA_parameter_list_begin(parms, &iter);
+ RNA_parameter_list_create(&parms, ptr, func);
+ RNA_parameter_list_begin(&parms, &iter);
for(i= 0, ofs= 0; iter.valid; RNA_parameter_list_next(&iter), i++) {
parm= iter.parm;
@@ -3240,7 +3242,7 @@
}
if (err==0)
- err= RNA_function_call(C, reports, ptr, func, parms);
+ err= RNA_function_call(C, reports, ptr, func, &parms);
/* XXX throw error when more parameters than those needed are passed or leave silent? */
if (err==0 && pret && ofs<flen && format[ofs++]=='R') {
@@ -3302,7 +3304,7 @@
}
RNA_parameter_list_end(&iter);
- RNA_parameter_list_free(parms);
+ RNA_parameter_list_free(&parms);
return err;
}
Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_internal_types.h
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_internal_types.h 2009-07-17 02:10:27 UTC (rev 21647)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_internal_types.h 2009-07-17 02:31:28 UTC (rev 21648)
@@ -88,14 +88,6 @@
ListBase properties;
} ContainerRNA;
-struct ParameterList {
- /* storage for parameters */
- void *data;
-
- /* function passed at creation time */
- FunctionRNA *func;
-};
-
struct FunctionRNA {
/* structs are containers of properties */
ContainerRNA cont;
Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_ui.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_ui.c 2009-07-17 02:10:27 UTC (rev 21647)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_ui.c 2009-07-17 02:31:28 UTC (rev 21648)
@@ -76,7 +76,7 @@
static int panel_poll(const bContext *C, PanelType *pt)
{
PointerRNA ptr;
- ParameterList *list;
+ ParameterList list;
FunctionRNA *func;
void *ret;
int visible;
@@ -84,14 +84,14 @@
RNA_pointer_create(NULL, pt->py_srna, NULL, &ptr); /* dummy */
func= RNA_struct_find_function(&ptr, "poll");
- list= RNA_parameter_list_create(&ptr, func);
- RNA_parameter_set_lookup(list, "context", &C);
- pt->py_call(&ptr, func, list);
+ RNA_parameter_list_create(&list, &ptr, func);
+ RNA_parameter_set_lookup(&list, "context", &C);
+ pt->py_call(&ptr, func, &list);
- RNA_parameter_get_lookup(list, "visible", &ret);
+ RNA_parameter_get_lookup(&list, "visible", &ret);
visible= *(int*)ret;
- RNA_parameter_list_free(list);
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list