[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