## GtkBuildable GtkBuildable — Interface for objects that can be built by GtkBuilder |

## Functions

void | gtk_buildable_set_name ()
const gchar * | gtk_buildable_get_name ()
void | gtk_buildable_add_child ()
void | gtk_buildable_set_buildable_property ()
GObject * | gtk_buildable_construct_child ()
gboolean | gtk_buildable_custom_tag_start ()
void | gtk_buildable_custom_tag_end ()
void | gtk_buildable_custom_finished ()
void | gtk_buildable_parser_finished ()
GObject * | gtk_buildable_get_internal_child ()

## Types and Values

| GtkBuildable
struct | GtkBuildableIface

## Object Hierarchy

        GInterface
        ╰── GtkBuildable

## Prerequisites

GtkBuildable requires GObject.

## Known Implementations

GtkBuildable is implemented by GtkAboutDialog, GtkAccelLabel, GtkAction, GtkActionBar, GtkActionGroup, GtkAlignment, GtkAppChooserButton, GtkAppChooserDialog, GtkAppChooserWidget, GtkApplicationWindow, GtkArrow, GtkAspectFrame, GtkAssistant, GtkBin, GtkBox, GtkButton, GtkButtonBox, GtkCalendar, GtkCellArea, GtkCellAreaBox, GtkCellView, GtkCheckButton, GtkCheckMenuItem, GtkColorButton, GtkColorChooserDialog, GtkColorChooserWidget, GtkColorSelection, GtkColorSelectionDialog, GtkComboBox, GtkComboBoxText, GtkContainer, GtkDialog, GtkDrawingArea, GtkEntry, GtkEntryCompletion, GtkEventBox, GtkExpander, GtkFileChooserButton, GtkFileChooserDialog, GtkFileChooserWidget, GtkFileFilter, GtkFixed, GtkFlowBox, GtkFlowBoxChild, GtkFontButton, GtkFontChooserDialog, GtkFontChooserWidget, GtkFontSelection, GtkFontSelectionDialog, GtkFrame, GtkGLArea, GtkGrid, GtkHBox, GtkHButtonBox, GtkHPaned, GtkHSV, GtkHScale, GtkHScrollbar, GtkHSeparator, GtkHandleBox, GtkHeaderBar, GtkIconFactory, GtkIconView, GtkImage, GtkImageMenuItem, GtkInfoBar, GtkInvisible, GtkLabel, GtkLayout, GtkLevelBar, GtkLinkButton, GtkListBox, GtkListBoxRow, GtkListStore, GtkLockButton, GtkMenu, GtkMenuBar, GtkMenuButton, GtkMenuItem, GtkMenuShell, GtkMenuToolButton, GtkMessageDialog, GtkMisc, GtkModelButton, GtkNotebook, GtkOffscreenWindow, GtkOverlay, GtkPageSetupUnixDialog, GtkPaned, GtkPlacesSidebar, GtkPlug, GtkPopover, GtkPopoverMenu, GtkPrintUnixDialog, GtkProgressBar, GtkRadioAction, GtkRadioButton, GtkRadioMenuItem, GtkRadioToolButton, GtkRange, GtkRecentAction, GtkRecentChooserDialog, GtkRecentChooserMenu, GtkRecentChooserWidget, GtkRecentFilter, GtkRevealer, GtkScale, GtkScaleButton, GtkScrollbar, GtkScrolledWindow, GtkSearchBar, GtkSearchEntry, GtkSeparator, GtkSeparatorMenuItem, GtkSeparatorToolItem, GtkShortcutsGroup, GtkShortcutsSection, GtkShortcutsShortcut, GtkShortcutsWindow, GtkSizeGroup, GtkSocket, GtkSpinButton, GtkSpinner, GtkStack, GtkStackSidebar, GtkStackSwitcher, GtkStatusbar, GtkSwitch, GtkTable, GtkTearoffMenuItem, GtkTextTagTable, GtkTextView, GtkToggleAction, GtkToggleButton, GtkToggleToolButton, GtkToolButton, GtkToolItem, GtkToolItemGroup, GtkToolPalette, GtkToolbar, GtkTreeStore, GtkTreeView, GtkTreeViewColumn, GtkUIManager, GtkVBox, GtkVButtonBox, GtkVPaned, GtkVScale, GtkVScrollbar, GtkVSeparator, GtkViewport, GtkVolumeButton, GtkWidget and GtkWindow.

## Includes

    #include <gtk/gtk.h>

## Description

GtkBuildable allows objects to extend and customize their deserialization from GtkBuilder UI descriptions. 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 format or run any extra routines at deserialization time.

## Functions

### gtk_buildable_set_name ()

    void
    gtk_buildable_set_name (GtkBuildable *buildable,
                            const gchar *name);

Sets the name of the `buildable` object.

#### Parameters

buildable | a GtkBuildable |
name | name to set |

Since: 2.12

### gtk_buildable_get_name ()

    const gchar *
    gtk_buildable_get_name (GtkBuildable *buildable);

Gets the name of the `buildable` object.

GtkBuilder sets the name based on the GtkBuilder UI definition used to construct the `buildable` .

#### Parameters

buildable | a GtkBuildable |

#### Returns

the name set with `gtk_buildable_set_name()`

Since: 2.12

### gtk_buildable_add_child ()

    void
    gtk_buildable_add_child (GtkBuildable *buildable,
                             GtkBuilder *builder,
                             GObject *child,
                             const gchar *type);

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

#### Parameters

buildable | a GtkBuildable |
builder | a GtkBuilder |
child | child to add |
type | kind of child or `NULL`. | [allow-none]

Since: 2.12

### gtk_buildable_set_buildable_property ()

    void
    gtk_buildable_set_buildable_property (GtkBuildable *buildable,
                                          GtkBuilder *builder,
                                          const gchar *name,
                                          const GValue *value);

Sets the property name `name` to `value` on the `buildable` object.

#### Parameters

buildable | a GtkBuildable |
builder | a GtkBuilder |
name | name of property |
value | value of property |

Since: 2.12

### gtk_buildable_construct_child ()

    GObject *
    gtk_buildable_construct_child (GtkBuildable *buildable,
                                   GtkBuilder *builder,
                                   const gchar *name);

Constructs a child of `buildable` with the name `name` .

GtkBuilder calls this function if a “constructor” has been specified in the UI definition.

#### Parameters

buildable | A GtkBuildable |
builder | GtkBuilder used to construct this object |
name | name of child to construct |

#### Returns

the constructed child.

[transfer full]

Since: 2.12

### gtk_buildable_custom_tag_start ()

    gboolean
    gtk_buildable_custom_tag_start (GtkBuildable *buildable,
                                    GtkBuilder *builder,
                                    GObject *child,
                                    const gchar *tagname,
                                    GMarkupParser *parser,
                                    gpointer *data);

This is called for each unknown element under <child>.

#### Parameters

buildable | a GtkBuildable |
builder | a GtkBuilder used to construct this object |
child | child object or `NULL` for non-child tags. | [allow-none]
tagname | name of tag |
parser | a GMarkupParser to fill in. | [out]
data | return location for user data that will be passed in to parser functions. | [out]

#### Returns

`TRUE` if a object has a custom implementation, `FALSE` if it doesn't.

Since: 2.12

### gtk_buildable_custom_tag_end ()

    void
    gtk_buildable_custom_tag_end (GtkBuildable *buildable,
                                  GtkBuilder *builder,
                                  GObject *child,
                                  const gchar *tagname,
                                  gpointer *data);

This is called at the end of each custom element handled by the buildable.

#### Parameters

buildable | A GtkBuildable |
builder | GtkBuilder used to construct this object |
child | child object or `NULL` for non-child tags. | [allow-none]
tagname | name of tag |
data | user data that will be passed in to parser functions. | [type gpointer]

Since: 2.12

### gtk_buildable_custom_finished ()

    void
    gtk_buildable_custom_finished (GtkBuildable *buildable,
                                   GtkBuilder *builder,
                                   GObject *child,
                                   const gchar *tagname,
                                   gpointer data);

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

#### Parameters

buildable | a GtkBuildable |
builder | a GtkBuilder |
child | child object or `NULL` for non-child tags. | [allow-none]
tagname | the name of the tag |
data | user data created in custom_tag_start |

Since: 2.12

### gtk_buildable_parser_finished ()

    void
    gtk_buildable_parser_finished (GtkBuildable *buildable,
                                   GtkBuilder *builder);

Called when the builder finishes the parsing of a GtkBuilder UI definition. Note that this will be called once for each time `gtk_builder_add_from_file()` or `gtk_builder_add_from_string()` is called on a builder.

#### Parameters

buildable | a GtkBuildable |
builder | a GtkBuilder |

Since: 2.12

### gtk_buildable_get_internal_child ()

    GObject *
    gtk_buildable_get_internal_child (GtkBuildable *buildable,
                                      GtkBuilder *builder,
                                      const gchar *childname);

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

#### Parameters

buildable | a GtkBuildable |
builder | a GtkBuilder |
childname | name of child |

#### Returns

the internal child of the buildable object.

[transfer none]

Since: 2.12