robot_designer_plugin.core.property module
- class robot_designer_plugin.core.property.PropertyGroupHandlerBase[source]
Bases:
objectBase class for wraps a
bpy.types.PropertyGroup-derived class object. Blender uses those classes as templates to dynamically generate properties for existing types (such asbpy.types.Objectorbpy.types.Bone) This, however, makes developing cumbersome. Dynamically created properties are usually accessed by:context.current_object.plugin.propertygroup1.propertygroup2.property
which cannot be resolved during programming time (as it is dynamically generated and aggregated to the blender objects. Using this wrapper class, you can build a delegation class structure that is known during programming and, therefore, for code completion and static analysis.
Example:
class GuiProperties(PropertyGroupHandlerBase): def __init__(self): self.selected_mesh = PropertyHandler(StringProperty(name="meshName")) class GlobalProperties(PropertyGroupHandlerBase): def __init__(self): self.gui_properties = GuiProperties() global_properties = GlobalProperties() global_properties.register(bpy.types.Scene)
When calling the
register()method, the plugin core creates the class templates for Blender dynamically and registeres them to the software.- register(btype, parent=[])[source]
Register the wrapped property group to blender. This needs only be called for property groups directly assigned to a blender type. Nested groups are automatically registered.
Todo
Register should use the standard registration mechanism of PluginManager. Right now, however, this would break the current registration process. This will be done once the properties for the robot designer have been clarified and migrated to this representation.
@param btype: Blender type (e.g.
bpy.types.Objectorbpy.types.Bone) @param parent: For traversing nested groups @return: Reference to the generatedbpy.types.PropertyGroup-derived class (not used by the user).
- class robot_designer_plugin.core.property.PropertyHandler(property)[source]
Bases:
objectWraps a Blender property factory functions (e.g.,
bpy.props.StringProperty(),bpy.props.FloatProperty()orbpy.props.IntProperty()). Use it in aPropertyGroupHandlerBaseinstance. E.g.:class GuiProperties(PropertyGroupHandlerBase): def __init__(self): self.selected_mesh = PropertyHandler(StringProperty(name="meshName"))
- get(obj)[source]
Resolves and returns the registered property given a reference to the (correct) object type.
In the example in
PropertyGroupWrapper:mesh name = global_properties.gui_properties.selected_mesh.get(context.scene)
- Parameters
obj – A Blender object with additional properties defined by the wrapper classes.
- Returns
The property.
- prop(obj, layout, *args, **kwargs)[source]
Resolves and renders a registered property on a GUI
bpy.types.UILayoutobject given a reference to the (correct) object type.In the example in
PropertyGroupWrapper:def draw(context, layout): global_properties.gui_properties.selected_mesh.prop(context.scene)
Additional positional arguments and keyword arguments are passed to
bpy.types.UIlayout.prop()- Parameters
obj – A Blender object with additional properties defined by the wrapper classes.
layout – A
bpy.types.UIlayoutreference.
- prop_search(obj, layout, *args, **kwargs)[source]
Resolves and renders a
bpy.types.UIlayout.prop_search()connected to a registered property on a GUIbpy.types.UILayoutobject given a reference to the (correct) object type.In the example in
PropertyGroupWrapper:def draw(context, layout): global_properties.gui_properties.selected_mesh.prop_search(context.scene, layout, bpy.data,'objects', icon='VIEWZOOM', text='')
Additional positional arguments and keyword arguments are passed to
bpy.types.UIlayout.prop()- Parameters
obj – A Blender object with additional properties defined by the wrapper classes.
layout – A
bpy.types.UIlayoutreference.