Gtk.Buildable
Description: Reference for Gtk.Buildable

### Interface

# GtkBuildable

#### 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.

#### Prerequisite

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

#### Implementations

- GtkAboutDialog
- GtkActionBar
- GtkAnyFilter
- GtkAppChooserButton
- GtkAppChooserDialog
- GtkAppChooserWidget
- GtkApplicationWindow
- GtkAspectFrame
- GtkAssistant
- GtkBox
- GtkButton
- GtkCalendar
- GtkCellArea
- GtkCellAreaBox
- GtkCellView
- GtkCenterBox
- GtkCheckButton
- GtkColorButton
- GtkColorChooserDialog
- GtkColorChooserWidget
- GtkColumnView
- GtkComboBox
- GtkComboBoxText
- GtkConstraintLayout
- GtkDialog
- GtkDragIcon
- GtkDrawingArea
- GtkDropDown
- GtkEditableLabel
- GtkEmojiChooser
- GtkEntry
- GtkEntryCompletion
- GtkEveryFilter
- GtkExpander
- GtkFileChooserDialog
- GtkFileChooserWidget
- GtkFileFilter
- GtkFixed
- GtkFlowBox
- GtkFlowBoxChild
- GtkFontButton
- GtkFontChooserDialog
- GtkFontChooserWidget
- GtkFrame
- GtkGLArea
- GtkGrid
- GtkGridView
- GtkHeaderBar
- GtkIconView
- GtkImage
- GtkInfoBar
- GtkInscription
- GtkLabel
- GtkLevelBar
- GtkLinkButton
- GtkListBase
- GtkListBox
- GtkListBoxRow
- GtkListStore
- GtkListView
- GtkLockButton
- GtkMediaControls
- GtkMenuButton
- GtkMessageDialog
- GtkMultiFilter
- GtkMultiSorter
- GtkNotebook
- GtkOverlay
- GtkPageSetupUnixDialog
- GtkPaned
- GtkPasswordEntry
- GtkPicture
- GtkPopover
- GtkPopoverMenu
- GtkPopoverMenuBar
- GtkPrintUnixDialog
- GtkProgressBar
- GtkRange
- GtkRevealer
- GtkScale
- GtkScaleButton
- GtkScrollbar
- GtkScrolledWindow
- GtkSearchBar
- GtkSearchEntry
- GtkSeparator
- GtkShortcutController
- GtkShortcutLabel
- GtkShortcutsGroup
- GtkShortcutsSection
- GtkShortcutsShortcut
- GtkShortcutsWindow
- GtkSizeGroup
- GtkSpinButton
- GtkSpinner
- GtkStack
- GtkStackSidebar
- GtkStackSwitcher
- GtkStatusbar
- GtkStringList
- GtkSwitch
- GtkText
- GtkTextTagTable
- GtkTextView
- GtkToggleButton
- GtkTreeExpander
- GtkTreeStore
- GtkTreeView
- GtkTreeViewColumn
- GtkVideo
- GtkViewport
- GtkVolumeButton
- GtkWidget
- GtkWindow
- GtkWindowControls
- GtkWindowHandle

#### 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
      );

    }

The `GtkBuildableIface` interface contains methods that are necessary to allow `GtkBuilder` to construct an object from a `GtkBuilder` UI definition.

###### 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.