### Interface

# Clutter Scriptable

since: 13

#### Description [src]

    interface Clutter.Scriptable : GObject.Object

Override the UI definition parsing

The `ClutterScriptable` interface exposes the UI definition parsing process to external classes. By implementing this interface, a class can override the UI definition parsing and transform complex data types into `GObject` properties, or allow custom properties.

Available since: 13

#### Prerequisite

In order to implement Scriptable, your type must inherit from`GObject`.

#### Implementations

- ClutterActor
- ClutterClone
- ClutterInterval
- ClutterKeyframeTransition
- ClutterPropertyTransition
- ClutterScrollActor
- ClutterStage
- ClutterText
- ClutterTimeline
- ClutterTransition
- ClutterTransitionGroup

#### Instance methods

###### clutter_scriptable_get_id

Retrieves the id of `scriptable` set using `clutter_scriptable_set_id()`.

since: 13

###### clutter_scriptable_parse_custom_node

Parses the passed JSON node. The implementation must set the type of the passed `GValue` pointer using g_value_init().

since: 13

###### clutter_scriptable_set_custom_property

Overrides the common properties setting. The underlying virtual function should be used when implementing custom properties.

since: 13

###### clutter_scriptable_set_id

Sets `id_` as the unique Clutter script it for this instance of `ClutterScriptableIface`.

since: 13

#### Interface structure

    struct ClutterScriptableIface {
      void (* set_id) (
        ClutterScriptable* scriptable,
        const gchar* id_
      );
      const gchar* (* get_id) (
        ClutterScriptable* scriptable
      );
      gboolean (* parse_custom_node) (
        ClutterScriptable* scriptable,
        ClutterScript* script,
        GValue* value,
        const gchar* name,
        JsonNode* node
      );
      void (* set_custom_property) (
        ClutterScriptable* scriptable,
        ClutterScript* script,
        const gchar* name,
        const GValue* value
      );

    }

Interface for implementing “scriptable” objects. An object implementing this interface can override the parsing and properties setting sequence when loading a UI definition data with `ClutterScript`.

###### Interface members

`set_id` |
    void (* set_id) (
        ClutterScriptable* scriptable,
        const gchar* id_
      )
| No description available.
`get_id` |
    const gchar* (* get_id) (
        ClutterScriptable* scriptable
      )
| No description available.
`parse_custom_node` |
    gboolean (* parse_custom_node) (
        ClutterScriptable* scriptable,
        ClutterScript* script,
        GValue* value,
        const gchar* name,
        JsonNode* node
      )
| No description available.
`set_custom_property` |
    void (* set_custom_property) (
        ClutterScriptable* scriptable,
        ClutterScript* script,
        const gchar* name,
        const GValue* value
      )
| No description available.

#### Virtual methods

###### Clutter.Scriptable.get_id

Retrieves the id of `scriptable` set using `clutter_scriptable_set_id()`.

since: 13

###### Clutter.Scriptable.parse_custom_node

Parses the passed JSON node. The implementation must set the type of the passed `GValue` pointer using g_value_init().

since: 13

###### Clutter.Scriptable.set_custom_property

Overrides the common properties setting. The underlying virtual function should be used when implementing custom properties.

since: 13

###### Clutter.Scriptable.set_id

Sets `id_` as the unique Clutter script it for this instance of `ClutterScriptableIface`.

since: 13