[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53122] trunk/blender/source/blender/ windowmanager: functions to make a string representation of a property & assignment.

Campbell Barton ideasman42 at gmail.com
Tue Dec 18 15:11:23 CET 2012


Revision: 53122
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53122
Author:   campbellbarton
Date:     2012-12-18 14:11:19 +0000 (Tue, 18 Dec 2012)
Log Message:
-----------
functions to make a string representation of a property & assignment.

Modified Paths:
--------------
    trunk/blender/source/blender/windowmanager/WM_api.h
    trunk/blender/source/blender/windowmanager/intern/wm_operators.c

Modified: trunk/blender/source/blender/windowmanager/WM_api.h
===================================================================
--- trunk/blender/source/blender/windowmanager/WM_api.h	2012-12-18 14:05:54 UTC (rev 53121)
+++ trunk/blender/source/blender/windowmanager/WM_api.h	2012-12-18 14:11:19 UTC (rev 53122)
@@ -56,6 +56,7 @@
 struct wmOperator;
 struct rcti;
 struct PointerRNA;
+struct PropertyRNA;
 struct EnumPropertyItem;
 struct MenuType;
 struct wmDropBox;
@@ -257,6 +258,8 @@
 
 		/* operator as a python command (resultuing string must be freed) */
 char		*WM_operator_pystring(struct bContext *C, struct wmOperatorType *ot, struct PointerRNA *opptr, int all_args);
+char		*WM_prop_pystring(struct PointerRNA *ptr, struct PropertyRNA *prop, int index);
+char		*WM_prop_pystring_assign(struct bContext *C, struct PointerRNA *ptr, struct PropertyRNA *prop, int index);
 void		WM_operator_bl_idname(char *to, const char *from);
 void		WM_operator_py_idname(char *to, const char *from);
 

Modified: trunk/blender/source/blender/windowmanager/intern/wm_operators.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_operators.c	2012-12-18 14:05:54 UTC (rev 53121)
+++ trunk/blender/source/blender/windowmanager/intern/wm_operators.c	2012-12-18 14:11:19 UTC (rev 53122)
@@ -560,6 +560,51 @@
 	return cstring;
 }
 
+char *WM_prop_pystring(PointerRNA *ptr, PropertyRNA *prop, int index)
+{
+	char *id_path;
+	char *data_path = NULL;
+
+	char *ret;
+
+	if (!ptr->id.data) {
+		return NULL;
+	}
+
+
+	/* never fails */
+	id_path = RNA_path_from_ID_python(ptr->id.data);
+
+	data_path = RNA_path_from_ID_to_property(ptr, prop);
+
+	if ((index == -1) || (RNA_property_array_check(prop) == FALSE)) {
+		ret = BLI_sprintfN("%s.%s",
+		                   id_path, data_path);
+	}
+	else {
+		ret = BLI_sprintfN("%s.%s[%d]",
+		                   id_path, data_path, index);
+	}
+
+	return ret;
+}
+
+char *WM_prop_pystring_assign(bContext *C, PointerRNA *ptr, PropertyRNA *prop, int index)
+{
+	char *lhs = WM_prop_pystring(ptr, prop, index);
+	char *rhs = RNA_property_as_string(C, ptr, prop, index);
+	char *ret;
+
+	if (!lhs) {
+		return NULL;
+	}
+
+	ret = BLI_sprintfN("%s = %s", lhs, rhs);
+	MEM_freeN(lhs);
+	MEM_freeN(rhs);
+	return ret;
+}
+
 void WM_operator_properties_create_ptr(PointerRNA *ptr, wmOperatorType *ot)
 {
 	RNA_pointer_create(NULL, ot->srna, NULL, ptr);




More information about the Bf-blender-cvs mailing list