### Interface

# Gtk Buildable

#### Description [src]

    interface Gtk.Buildable : GObject.Object

`GtkBuildable` allows objects to extend and customize their deserialization from ui files.

The interface includes methods for setting names and properties of objects, parsing custom tags and constructing child objects.

The `GtkBuildable` interface is implemented by all widgets and many of the non-widget objects that are provided by GTK. The main user of this interface is `GtkBuilder`. There should be very little need for applications to call any of these functions directly.

An object only needs to implement this interface if it needs to extend the `GtkBuilder` XML format or run any extra routines at deserialization time.

#### Instance methods

###### gtk_buildable_get_buildable_id

Gets the ID of the `buildable` object.

#### Interface structure

    struct GtkBuildableIface {
      GTypeInterface g_iface;
      void (* set_id) (
        GtkBuildable* buildable,
        const char* id
      );
      const char* (* get_id) (
        GtkBuildable* buildable
      );
      void (* add_child) (
        GtkBuildable* buildable,
        GtkBuilder* builder,
        GObject* child,
        const char* type
      );
      void (* set_buildable_property) (
        GtkBuildable* buildable,
        GtkBuilder* builder,
        const char* name,
        const GValue* value
      );
      GObject* (* construct_child) (
        GtkBuildable* buildable,
        GtkBuilder* builder,
        const char* name
      );
      gboolean (* custom_tag_start) (
        GtkBuildable* buildable,
        GtkBuilder* builder,
        GObject* child,
        const char* tagname,
        GtkBuildableParser* parser,
        gpointer* data
      );
      void (* custom_tag_end) (
        GtkBuildable* buildable,
        GtkBuilder* builder,
        GObject* child,
        const char* tagname,
        gpointer data
      );
      void (* custom_finished) (
        GtkBuildable* buildable,
        GtkBuilder* builder,
        GObject* child,
        const char* tagname,
        gpointer data
      );
      void (* parser_finished) (
        GtkBuildable* buildable,
        GtkBuilder* builder
      );
      GObject* (* get_internal_child) (
        GtkBuildable* buildable,
        GtkBuilder* builder,
        const char* childname
      );

    }

###### Interface members

`g_iface` |
    GTypeInterface
| The parent class.
`set_id` |
    void (* set_id) (
        GtkBuildable* buildable,
        const char* id
      )
| No description available.
`get_id` |
    const char* (* get_id) (
        GtkBuildable* buildable
      )
| No description available.
`add_child` |
    void (* add_child) (
        GtkBuildable* buildable,
        GtkBuilder* builder,
        GObject* child,
        const char* type
      )
| No description available.
`set_buildable_property` |
    void (* set_buildable_property) (
        GtkBuildable* buildable,
        GtkBuilder* builder,
        const char* name,
        const GValue* value
      )
| No description available.
`construct_child` |
    GObject* (* construct_child) (
        GtkBuildable* buildable,
        GtkBuilder* builder,
        const char* name
      )
| No description available.
`custom_tag_start` |
    gboolean (* custom_tag_start) (
        GtkBuildable* buildable,
        GtkBuilder* builder,
        GObject* child,
        const char* tagname,
        GtkBuildableParser* parser,
        gpointer* data
      )
| No description available.
`custom_tag_end` |
    void (* custom_tag_end) (
        GtkBuildable* buildable,
        GtkBuilder* builder,
        GObject* child,
        const char* tagname,
        gpointer data
      )
| No description available.
`custom_finished` |
    void (* custom_finished) (
        GtkBuildable* buildable,
        GtkBuilder* builder,
        GObject* child,
        const char* tagname,
        gpointer data
      )
| No description available.
`parser_finished` |
    void (* parser_finished) (
        GtkBuildable* buildable,
        GtkBuilder* builder
      )
| No description available.
`get_internal_child` |
    GObject* (* get_internal_child) (
        GtkBuildable* buildable,
        GtkBuilder* builder,
        const char* childname
      )
| No description available.

#### Virtual methods

###### Gtk.Buildable.add_child

Adds a child to `buildable`. `type` is an optional string describing how the child should be added.

###### Gtk.Buildable.construct_child

No description available.

###### Gtk.Buildable.custom_finished

Similar to gtk_buildable_parser_finished() but is called once for each custom tag handled by the `buildable`.

###### Gtk.Buildable.custom_tag_end

Called at the end of each custom element handled by the buildable.

###### Gtk.Buildable.custom_tag_start

Called for each unknown element under `<child>`.

###### Gtk.Buildable.get_id

No description available.

###### Gtk.Buildable.get_internal_child

Retrieves the internal child called `childname` of the `buildable` object.

###### Gtk.Buildable.parser_finished

No description available.

###### Gtk.Buildable.set_buildable_property

No description available.

###### Gtk.Buildable.set_id

No description available.