[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24597] trunk/blender/source/blender: my chnges broke 'del idprop["key"]'

Campbell Barton ideasman42 at gmail.com
Mon Nov 16 23:21:39 CET 2009


Revision: 24597
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24597
Author:   campbellbarton
Date:     2009-11-16 23:21:39 +0100 (Mon, 16 Nov 2009)

Log Message:
-----------
my chnges broke 'del idprop["key"]'
made it possible to remove properties from rna types.

eg.
 del group["someprop"]

Modified Paths:
--------------
    trunk/blender/source/blender/editors/screen/screen_context.c
    trunk/blender/source/blender/python/generic/IDProp.c
    trunk/blender/source/blender/python/generic/IDProp.h
    trunk/blender/source/blender/python/intern/bpy_rna.c

Modified: trunk/blender/source/blender/editors/screen/screen_context.c
===================================================================
--- trunk/blender/source/blender/editors/screen/screen_context.c	2009-11-16 20:50:02 UTC (rev 24596)
+++ trunk/blender/source/blender/editors/screen/screen_context.c	2009-11-16 22:21:39 UTC (rev 24597)
@@ -65,7 +65,7 @@
 			"selected_editable_objects", "selected_editable_bases",
 			"visible_bones", "editable_bones", "selected_bones", "selected_editable_bones",
 			"visible_pchans", "selected_pchans", "active_bone", "active_pchan",
-			"active_base", "active_object", "edit_object",
+			"active_base", "active_object", "object", "edit_object",
 			"sculpt_object", "vertex_paint_object", "weight_paint_object",
 			"texture_paint_object", "particle_edit_object", NULL};
 

Modified: trunk/blender/source/blender/python/generic/IDProp.c
===================================================================
--- trunk/blender/source/blender/python/generic/IDProp.c	2009-11-16 20:50:02 UTC (rev 24596)
+++ trunk/blender/source/blender/python/generic/IDProp.c	2009-11-16 22:21:39 UTC (rev 24597)
@@ -307,24 +307,17 @@
 	return NULL;
 }
 
-static int BPy_IDGroup_Map_SetItem(BPy_IDProperty *self, PyObject *key, PyObject *val)
+int BPy_Wrap_SetMapItem(IDProperty *prop, PyObject *key, PyObject *val)
 {
-	char *err;
-
-	if (self->prop->type  != IDP_GROUP) {
+	if (prop->type  != IDP_GROUP) {
 		PyErr_SetString( PyExc_TypeError, "unsubscriptable object");
 		return -1;
 	}
 
-	if (!PyUnicode_Check(key)) {
-		PyErr_SetString( PyExc_TypeError, "only strings are allowed as subgroup keys" );
-		return -1;
-	}
-
-	if (val == NULL) {
-		IDProperty *pkey = IDP_GetPropertyFromGroup(self->prop, _PyUnicode_AsString(key));
+	if (val == NULL) { /* del idprop[key] */
+		IDProperty *pkey = IDP_GetPropertyFromGroup(prop, _PyUnicode_AsString(key));
 		if (pkey) {
-			IDP_RemFromGroup(self->prop, pkey);
+			IDP_RemFromGroup(prop, pkey);
 			IDP_FreeProperty(pkey);
 			MEM_freeN(pkey);
 			return 0;
@@ -333,14 +326,27 @@
 			return -1;
 		}
 	}
+	else {
+		char *err;
 
-	err = BPy_IDProperty_Map_ValidateAndCreate(_PyUnicode_AsString(key), self->prop, val);
-	if (err) {
-		PyErr_SetString( PyExc_RuntimeError, err );
-		return -1;
+		if (!PyUnicode_Check(key)) {
+			PyErr_SetString( PyExc_TypeError, "only strings are allowed as subgroup keys" );
+			return -1;
+		}
+
+		err = BPy_IDProperty_Map_ValidateAndCreate(_PyUnicode_AsString(key), prop, val);
+		if (err) {
+			PyErr_SetString( PyExc_RuntimeError, err );
+			return -1;
+		}
+
+		return 0;
 	}
+}
 
-	return 0;
+static int BPy_IDGroup_Map_SetItem(BPy_IDProperty *self, PyObject *key, PyObject *val)
+{
+	BPy_Wrap_SetMapItem(self->prop, key, val);
 }
 
 static PyObject *BPy_IDGroup_SpawnIterator(BPy_IDProperty *self)

Modified: trunk/blender/source/blender/python/generic/IDProp.h
===================================================================
--- trunk/blender/source/blender/python/generic/IDProp.h	2009-11-16 20:50:02 UTC (rev 24596)
+++ trunk/blender/source/blender/python/generic/IDProp.h	2009-11-16 22:21:39 UTC (rev 24597)
@@ -52,6 +52,7 @@
 PyObject *BPy_Wrap_GetKeys(IDProperty *prop);
 PyObject *BPy_Wrap_GetValues(ID *id, IDProperty *prop);
 PyObject *BPy_Wrap_GetItems(ID *id, IDProperty *prop);
+int BPy_Wrap_SetMapItem(IDProperty *prop, PyObject *key, PyObject *val);
 
 
 PyObject *BPy_IDGroup_WrapData( ID *id, IDProperty *prop );

Modified: trunk/blender/source/blender/python/intern/bpy_rna.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_rna.c	2009-11-16 20:50:02 UTC (rev 24596)
+++ trunk/blender/source/blender/python/intern/bpy_rna.c	2009-11-16 22:21:39 UTC (rev 24597)
@@ -1225,35 +1225,18 @@
 	}
 
 	return BPy_IDGroup_WrapData(self->ptr.id.data, idprop);
-
-
 }
 
 static int pyrna_struct_ass_subscript( BPy_StructRNA *self, PyObject *key, PyObject *value )
 {
-	IDProperty *group;
-	char *name= _PyUnicode_AsString(key);
-	char *err;
+	IDProperty *group= RNA_struct_idproperties(&self->ptr, 1);
 
-	if(name==NULL) {
-		PyErr_SetString( PyExc_TypeError, "only strings are allowed as keys of ID properties");
-		return -1;
-	}
-
-	group= RNA_struct_idproperties(&self->ptr, 1);
-
 	if(group==NULL) {
 		PyErr_SetString(PyExc_TypeError, "id properties not supported for this type");
 		return -1;
 	}
 
-	err = BPy_IDProperty_Map_ValidateAndCreate(_PyUnicode_AsString(key), group, value);
-	if (err) {
-		PyErr_SetString( PyExc_RuntimeError, err );
-		return -1;
-	}
-
-	return 0;
+	return BPy_Wrap_SetMapItem(group, key, value);
 }
 
 static PyMappingMethods pyrna_struct_as_mapping = {





More information about the Bf-blender-cvs mailing list