1. KeyError: 'the length of IDProperty names is limited to 31 
characters'object['x'*32] = 'why not make the limit 32 or 64?, 31 is an odd 
number - not possible to use md5sum hashes either as a workaround'
2. inner single quotes are invalid## this failslayout.prop( object, 
"['my-custom-prop']" )              # a better warning should be printed, or 
single quotes should be supported## this works - double quotes must be 
usedlayout.prop( object, '["my-custom-prop"]' )
3. dicts are allowed, but layout.prop(...) can not show each subkey on its 
own## (the dict can be viewed as a string from Custom Properties Panel, but 
thats not very useful for the user) ##object['x'] = {'a':1, 'b':2}box.prop( 
object, '["x"]["a"]' )               # error: rna_uiItemR: property not found: 
Object.["x"]["a"]box.prop( object, '["x"]' )          # this also fails

4. booleans not supported by custom propertiesobject['my-custom-prop'] = True   
        # converted to 1 without any warninglayout.prop( object, 
'["my-custom-prop"]', toggle=True )    # toggle is ignored, numeric entry is 
displayed instead
## workaround ##class mypanel(bpy.types.Panel): bl_space_type = 'PROPERTIES'    
bl_region_type = 'WINDOW'       bl_context = "object"   bl_label = "toggle 
custom prop example" @classmethod    def poll(cls, context): return True     
def draw(self, context):                layout = self.layout            ob = 
context.active_object              tag = 'my-custom-prop'          if tag not 
in ob.keys(): ob[tag] = True         v = ob[tag]             if v: icon = 
'CHECKBOX_HLT'             else: icon = 'CHECKBOX_DEHLT'           op = 
layout.operator( 'toggle_prop', text=tag, icon=icon )              op.propname 
= tag
class toggle_prop_op(bpy.types.Operator):                       '''operator: 
prop toggle helper'''      bl_idname = "toggle_prop"       bl_label = "toggle"  
                   bl_options = {'REGISTER', 'UNDO'}       propname = 
StringProperty(name="property name", description="...", maxlen=32, default="")  
     @classmethod    def poll(cls, context): return True     def invoke(self, 
context, event):               ob = context.active_object              ob[ 
self.propname ] = not ob[ self.propname ]           return {'FINISHED'}


_______________________________________________
Bf-committers mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-committers

Reply via email to