Revision: 19650
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19650
Author:   blendix
Date:     2009-04-11 03:45:05 +0200 (Sat, 11 Apr 2009)

Log Message:
-----------
RNA: python support for REQUIRED flag for function parameters.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/python/intern/bpy_rna.c

Modified: branches/blender2.5/blender/source/blender/python/intern/bpy_rna.c
===================================================================
--- branches/blender2.5/blender/source/blender/python/intern/bpy_rna.c  
2009-04-11 01:43:50 UTC (rev 19649)
+++ branches/blender2.5/blender/source/blender/python/intern/bpy_rna.c  
2009-04-11 01:45:05 UTC (rev 19650)
@@ -1259,7 +1259,7 @@
        ParameterIterator iter;
        PropertyRNA *pret, *parm;
        PyObject *ret, *item;
-       int i, tlen, err= 0;
+       int i, tlen, flag, err= 0;
        const char *tid, *fid, *pid;
        void *retdata= NULL;
 
@@ -1273,7 +1273,7 @@
        RNA_parameter_list_begin(parms, &iter);
 
        /* parse function parameters */
-       for (i= 0; iter.valid; RNA_parameter_list_next(&iter), i++) {
+       for (i= 0; iter.valid; RNA_parameter_list_next(&iter)) {
                parm= iter.parm;
 
                if (parm==pret) {
@@ -1282,25 +1282,27 @@
                }
 
                pid= RNA_property_identifier(&funcptr, parm);
+               flag= RNA_property_flag(&funcptr, parm);
                item= NULL;
 
-               if (i < tlen)
+               if ((i < tlen) && (flag & PROP_REQUIRED)) {
                        item= PyTuple_GET_ITEM(args, i);
-
-               if (kw != NULL)
+                       i++;
+               }
+               else if (kw != NULL)
                        item= PyDict_GetItemString(kw, pid);
 
                if (item==NULL) {
-                       /* XXX need to add flag for optional required parameters
-                       if (flag & PARAM_OPTIONAL)
-                               continue; */
+                       if(flag & PROP_REQUIRED) {
+                               tid= RNA_struct_identifier(self_ptr);
+                               fid= RNA_function_identifier(self_ptr, 
self_func);
 
-                       tid= RNA_struct_identifier(self_ptr);
-                       fid= RNA_function_identifier(self_ptr, self_func);
-
-                       PyErr_Format(PyExc_AttributeError, "%s.%s(): required 
parameter \"%s\" not specified", tid, fid, pid);
-                       err= -1;
-                       break;
+                               PyErr_Format(PyExc_AttributeError, "%s.%s(): 
required parameter \"%s\" not specified", tid, fid, pid);
+                               err= -1;
+                               break;
+                       }
+                       else
+                               continue;
                }
 
                err= pyrna_py_to_param(&funcptr, parm, iter.data, item);


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

Reply via email to