[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20806] branches/soc-2009-kazanbas/source/ blender: Allow defining string property on py operator - a first step towards

Arystanbek Dyussenov arystan.d at gmail.com
Thu Jun 11 13:46:12 CEST 2009


Revision: 20806
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20806
Author:   kazanbas
Date:     2009-06-11 13:46:12 +0200 (Thu, 11 Jun 2009)

Log Message:
-----------
Allow defining string property on py operator - a first step towards 
interfacing the file selector :)

Modified Paths:
--------------
    branches/soc-2009-kazanbas/source/blender/editors/mesh/editmesh.c
    branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_object.c
    branches/soc-2009-kazanbas/source/blender/python/intern/bpy_interface.c
    branches/soc-2009-kazanbas/source/blender/python/intern/bpy_rna.c
    branches/soc-2009-kazanbas/source/blender/python/intern/bpy_rna.h

Modified: branches/soc-2009-kazanbas/source/blender/editors/mesh/editmesh.c
===================================================================
--- branches/soc-2009-kazanbas/source/blender/editors/mesh/editmesh.c	2009-06-11 11:44:47 UTC (rev 20805)
+++ branches/soc-2009-kazanbas/source/blender/editors/mesh/editmesh.c	2009-06-11 11:46:12 UTC (rev 20806)
@@ -2041,7 +2041,7 @@
 	copy_mesh_data(me, from);
 }
 
-void RNA_api_mesh_copy_transformed()
+void RNA_api_mesh_transform(Mesh *me, float **mat)
 {
 }
 

Modified: branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_object.c
===================================================================
--- branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_object.c	2009-06-11 11:44:47 UTC (rev 20805)
+++ branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_object.c	2009-06-11 11:46:12 UTC (rev 20806)
@@ -799,6 +799,12 @@
 	RNA_def_property_array(prop, 3);
 	RNA_def_property_ui_text(prop, "Lock Scale", "Lock editing of scale in the interface.");
 
+	/*
+	// error on compile
+	prop= RNA_def_float_matrix(srna, "mat", 16, NULL, 0.0f, 0.0f, "Matrix", "Transform matrix of the object.", 0.0f, 0.0f);
+	RNA_def_property_float_sdna(prop, NULL, "obmat");
+	*/
+
 	/* collections */
 	prop= RNA_def_property(srna, "constraints", PROP_COLLECTION, PROP_NONE);
 	RNA_def_property_struct_type(prop, "Constraint");

Modified: branches/soc-2009-kazanbas/source/blender/python/intern/bpy_interface.c
===================================================================
--- branches/soc-2009-kazanbas/source/blender/python/intern/bpy_interface.c	2009-06-11 11:44:47 UTC (rev 20805)
+++ branches/soc-2009-kazanbas/source/blender/python/intern/bpy_interface.c	2009-06-11 11:46:12 UTC (rev 20806)
@@ -102,6 +102,7 @@
 			{"FloatProperty", (PyCFunction)BPy_FloatProperty, METH_VARARGS|METH_KEYWORDS, ""},
 			{"IntProperty", (PyCFunction)BPy_IntProperty, METH_VARARGS|METH_KEYWORDS, ""},
 			{"BoolProperty", (PyCFunction)BPy_BoolProperty, METH_VARARGS|METH_KEYWORDS, ""},
+			{"StringProperty", (PyCFunction)BPy_StringProperty, METH_VARARGS|METH_KEYWORDS, ""},
 			{NULL, NULL, 0, NULL}
 		};
 		

Modified: branches/soc-2009-kazanbas/source/blender/python/intern/bpy_rna.c
===================================================================
--- branches/soc-2009-kazanbas/source/blender/python/intern/bpy_rna.c	2009-06-11 11:44:47 UTC (rev 20805)
+++ branches/soc-2009-kazanbas/source/blender/python/intern/bpy_rna.c	2009-06-11 11:46:12 UTC (rev 20806)
@@ -38,6 +38,7 @@
 #include "BKE_context.h"
 #include "BKE_global.h" /* evil G.* */
 #include "BKE_report.h"
+#include "BKE_utildefines.h" /* FILE_MAX */
 
 static int pyrna_struct_compare( BPy_StructRNA * a, BPy_StructRNA * b )
 {
@@ -1803,6 +1804,33 @@
 	}
 }
 
+PyObject *BPy_StringProperty(PyObject *self, PyObject *args, PyObject *kw)
+{
+	static char *kwlist[] = {"attr", "name", "description", "maxlen", "default", NULL};
+	char *id, *name="", *description="", *def="";
+	int maxlen=FILE_MAX; // XXX need greater?
+	
+	if (!PyArg_ParseTupleAndKeywords(args, kw, "s|ssis:StringProperty", kwlist, &id, &name, &description, &maxlen, &def))
+		return NULL;
+	
+	if (PyTuple_Size(args) > 0) {
+	 	PyErr_SetString(PyExc_ValueError, "all args must be keywors"); // TODO - py3 can enforce this.
+		return NULL;
+	}
+	
+	if (self) {
+		StructRNA *srna = PyCObject_AsVoidPtr(self);
+		RNA_def_string(srna, id, def, maxlen, name, description);
+		Py_RETURN_NONE;
+	} else {
+		PyObject *ret = PyTuple_New(2);
+		PyTuple_SET_ITEM(ret, 0, PyCObject_FromVoidPtr((void *)BPy_StringProperty, NULL));
+		PyTuple_SET_ITEM(ret, 1, kw);
+		Py_INCREF(kw);
+		return ret;
+	}
+}
+
 /*-------------------- Type Registration ------------------------*/
 
 static int rna_function_arg_count(FunctionRNA *func)

Modified: branches/soc-2009-kazanbas/source/blender/python/intern/bpy_rna.h
===================================================================
--- branches/soc-2009-kazanbas/source/blender/python/intern/bpy_rna.h	2009-06-11 11:44:47 UTC (rev 20805)
+++ branches/soc-2009-kazanbas/source/blender/python/intern/bpy_rna.h	2009-06-11 11:46:12 UTC (rev 20806)
@@ -76,6 +76,7 @@
 PyObject *BPy_FloatProperty(PyObject *self, PyObject *args, PyObject *kw);
 PyObject *BPy_IntProperty(PyObject *self, PyObject *args, PyObject *kw);
 PyObject *BPy_BoolProperty(PyObject *self, PyObject *args, PyObject *kw);
+PyObject *BPy_StringProperty(PyObject *self, PyObject *args, PyObject *kw);
 
 /* function for registering types */
 PyObject *pyrna_basetype_register(PyObject *self, PyObject *args);





More information about the Bf-blender-cvs mailing list