User-defined properties

From sfx
Jump to navigation Jump to search

User-defined Properties[edit]

Properties can be created and added to objects dynamically at runtime, either from within a custom Action or in response to a hook. For instance, a custom text field could be added to all Shapes when they are created in response to the object_created hook:

<source lang="python" enclose>

def add_character_name_prop(shape):

   if shape.isType("Shape"):
       if not shape.property("character_name"):
           prop = Property("character_name", "Character Name", "", {})
           shape.addProperty(prop)

import hook hook.add("object_created", add_character_name_prop)

</source>

User-defined properties can be removed using object.removeProperty.

The Property() constructor has the following signature: <source lang="python" enclose> Property(id, label, value, info=None, tooltip=None) </source>

The property type will be inferred from value. Currently supported types are boolean, number, list, and string. Depending on the type, info should also point to a dictionary containing additional information.

User-defined Properties
Property type value type info dictionary members
boolean True, False ignored
number float min=0.0, max=100.0
list integer (index) items=["Item 1", "Item 2"]
string string type=string (default),dir,path,label