[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31725] trunk/blender: bugfix [#23635] property limits don't work when added via scripting\

Campbell Barton ideasman42 at gmail.com
Thu Sep 2 16:43:22 CEST 2010


Revision: 31725
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31725
Author:   campbellbarton
Date:     2010-09-02 16:43:22 +0200 (Thu, 02 Sep 2010)

Log Message:
-----------
bugfix [#23635] property limits don't work when added via scripting\
also fix for bug where soft limits could be greater then hard limits with bpy.props.* functions.

Modified Paths:
--------------
    trunk/blender/release/scripts/modules/rna_prop_ui.py
    trunk/blender/source/blender/makesrna/intern/rna_rna.c
    trunk/blender/source/blender/python/intern/bpy_props.c

Modified: trunk/blender/release/scripts/modules/rna_prop_ui.py
===================================================================
--- trunk/blender/release/scripts/modules/rna_prop_ui.py	2010-09-02 10:56:50 UTC (rev 31724)
+++ trunk/blender/release/scripts/modules/rna_prop_ui.py	2010-09-02 14:43:22 UTC (rev 31725)
@@ -84,6 +84,8 @@
         props.data_path = context_member
         del row
 
+    rna_properties = {prop.identifier for prop in rna_item.bl_rna.properties if prop.is_runtime} if items else None
+
     for key, val in items:
 
         if key == '_RNA_UI':
@@ -113,7 +115,10 @@
         if convert_to_pyobject and not hasattr(val_orig, "len"):
             row.label(text=val_draw)
         else:
-            row.prop(rna_item, '["%s"]' % key, text="")
+            if key in rna_properties:
+                row.prop(rna_item, key, text="")
+            else:
+                row.prop(rna_item, '["%s"]' % key, text="")
 
         if use_edit:
             row = split.row(align=True)

Modified: trunk/blender/source/blender/makesrna/intern/rna_rna.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_rna.c	2010-09-02 10:56:50 UTC (rev 31724)
+++ trunk/blender/source/blender/makesrna/intern/rna_rna.c	2010-09-02 14:43:22 UTC (rev 31725)
@@ -493,6 +493,13 @@
 	return prop->flag & PROP_REGISTER_OPTIONAL;
 }
 
+static int rna_Property_runtime_get(PointerRNA *ptr)
+{
+	PropertyRNA *prop= (PropertyRNA*)ptr->data;
+	return prop->flag & PROP_RUNTIME;
+}
+
+
 static int rna_BoolProperty_default_get(PointerRNA *ptr)
 {
 	PropertyRNA *prop= (PropertyRNA*)ptr->data;
@@ -1018,6 +1025,11 @@
 	RNA_def_property_clear_flag(prop, PROP_EDITABLE);
 	RNA_def_property_boolean_funcs(prop, "rna_Property_registered_optional_get", NULL);
 	RNA_def_property_ui_text(prop, "Registered Optionally", "Property is optionally registered as part of type registration");
+	
+	prop= RNA_def_property(srna, "is_runtime", PROP_BOOLEAN, PROP_NONE);
+	RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+	RNA_def_property_boolean_funcs(prop, "rna_Property_runtime_get", NULL);
+	RNA_def_property_ui_text(prop, "Read Only", "Property is editable through RNA");
 }
 
 static void rna_def_function(BlenderRNA *brna)

Modified: trunk/blender/source/blender/python/intern/bpy_props.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_props.c	2010-09-02 10:56:50 UTC (rev 31724)
+++ trunk/blender/source/blender/python/intern/bpy_props.c	2010-09-02 14:43:22 UTC (rev 31725)
@@ -26,6 +26,8 @@
 #include "bpy_rna.h"
 #include "bpy_util.h"
 
+#include "BKE_utildefines.h"
+
 #include "RNA_define.h" /* for defining our own rna */
 #include "RNA_enum_types.h"
 
@@ -294,7 +296,7 @@
 		RNA_def_property_int_default(prop, def);
 		RNA_def_property_range(prop, min, max);
 		RNA_def_property_ui_text(prop, name, description);
-		RNA_def_property_ui_range(prop, soft_min, soft_max, step, 3);
+		RNA_def_property_ui_range(prop, MAX2(soft_min, min), MIN2(soft_max, max), step, 3);
 
 		if(pyopts) {
 			if(opts & PROP_HIDDEN) RNA_def_property_flag(prop, PROP_HIDDEN);
@@ -371,7 +373,7 @@
 		if(pydef) RNA_def_property_int_array_default(prop, def);
 		RNA_def_property_range(prop, min, max);
 		RNA_def_property_ui_text(prop, name, description);
-		RNA_def_property_ui_range(prop, soft_min, soft_max, step, 3);
+		RNA_def_property_ui_range(prop, MAX2(soft_min, min), MIN2(soft_max, max), step, 3);
 
 		if(pyopts) {
 			if(opts & PROP_HIDDEN) RNA_def_property_flag(prop, PROP_HIDDEN);
@@ -448,7 +450,7 @@
 		RNA_def_property_float_default(prop, def);
 		RNA_def_property_range(prop, min, max);
 		RNA_def_property_ui_text(prop, name, description);
-		RNA_def_property_ui_range(prop, soft_min, soft_max, step, precision);
+		RNA_def_property_ui_range(prop, MAX2(soft_min, min), MIN2(soft_max, max), step, precision);
 
 		if(pyopts) {
 			if(opts & PROP_HIDDEN) RNA_def_property_flag(prop, PROP_HIDDEN);
@@ -525,7 +527,7 @@
 		if(pydef) RNA_def_property_float_array_default(prop, def);
 		RNA_def_property_range(prop, min, max);
 		RNA_def_property_ui_text(prop, name, description);
-		RNA_def_property_ui_range(prop, soft_min, soft_max, step, precision);
+		RNA_def_property_ui_range(prop, MAX2(soft_min, min), MIN2(soft_max, max), step, precision);
 
 		if(pyopts) {
 			if(opts & PROP_HIDDEN) RNA_def_property_flag(prop, PROP_HIDDEN);





More information about the Bf-blender-cvs mailing list