py error fix and minor changes to rna info class
authorCampbell Barton <ideasman42@gmail.com>
Mon, 21 Dec 2009 23:14:16 +0000 (23:14 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Mon, 21 Dec 2009 23:14:16 +0000 (23:14 +0000)
release/scripts/modules/rna_info.py
release/scripts/op/object.py

index 8e1d16a46cdc70e30d22eb96f4670ee50ba2f2fa..1de750a4ff21b4ddbd0cdb906110941f5e3b01b0 100644 (file)
 
 import bpy
 
+def range_str(val):
+    if val < -10000000:        return '-inf'
+    if val >  10000000:        return 'inf'
+    if type(val)==float:
+        return '%g'  % val
+    else:
+        return str(val)
 
 class InfoStructRNA:
     global_lookup = {}
@@ -43,7 +50,7 @@ class InfoStructRNA:
     def build(self):
         rna_type = self.bl_rna
         parent_id = self.identifier
-        self.properties[:] = [GetInfoPropertyRNA(rna_prop, parent_id) for rna_prop in rna_type.properties.values()]
+        self.properties[:] = [GetInfoPropertyRNA(rna_prop, parent_id) for rna_id, rna_prop in rna_type.properties.items() if rna_id != "rna_type"]
         self.functions[:] = [GetInfoFunctionRNA(rna_prop, parent_id) for rna_prop in rna_type.functions.values()]
 
     def getNestedProperties(self, ls = None):
@@ -84,12 +91,20 @@ class InfoPropertyRNA:
         rna_prop = self.bl_prop
 
         self.enum_items = []
-        self.min = -1
-        self.max = -1
+        self.min = getattr(rna_prop, "hard_min", -1)
+        self.max = getattr(rna_prop, "hard_max", -1)
         self.array_length = getattr(rna_prop, "array_length", 0)
 
         self.type = rna_prop.type.lower()
-        self.fixed_type = GetInfoStructRNA(rna_prop.fixed_type) # valid for pointer/collections
+        fixed_type = getattr(rna_prop, "fixed_type", "")
+        if fixed_type:
+            self.fixed_type = GetInfoStructRNA(fixed_type) # valid for pointer/collections
+        else:
+            self.fixed_type = None
+            
+        if self.type == "enum":
+            self.enum_items[:] = rna_prop.items.keys()
+
         self.srna = GetInfoStructRNA(rna_prop.srna) # valid for pointer/collections
 
     def __repr__(self):
@@ -347,9 +362,11 @@ def BuildRNAInfo():
 
     for rna_info in InfoStructRNA.global_lookup.values():
         rna_info.build()
-
-    for rna_info in InfoStructRNA.global_lookup.values():
-        print(rna_info)
+        for prop in rna_info.properties:
+            prop.build()
+        
+    #for rna_info in InfoStructRNA.global_lookup.values():
+    #    print(rna_info)
 
     return InfoStructRNA.global_lookup, InfoFunctionRNA.global_lookup, InfoPropertyRNA.global_lookup
 
index 6a7b735e04b16675baaa9ea40743f4a24b3c2827..2ecd7b31b34b2ac40a533d317a7f8414e855d105 100644 (file)
@@ -87,8 +87,8 @@ class SubdivisionSet(bpy.types.Operator):
             default=1, min=0, max=100, soft_min=0, soft_max=6)
 
     def poll(self, context):
-        ob = context.active_object
-        return (ob and ob.type == 'MESH')
+        obs = context.selected_editable_objects
+        return (obs is not None)
 
     def execute(self, context):
         level = self.properties.level