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(&params, ptr, cprop->add);
+                       RNA_function_call(NULL, NULL, ptr, cprop->add, &params);
+                       RNA_parameter_list_free(&params);
                }
        }
 #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, 
&params);
+                       RNA_parameter_list_free(&params);
                }
        }
 #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. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to