|  |  |  | GTK+ Reference Manual |  | 
|---|---|---|---|---|
| Top | Description | Object Hierarchy | Known Implementations | ||||
#include <gtk/gtk.h>
                    GtkBuildable;
                    GtkBuildableIface;
void                gtk_buildable_set_name              (GtkBuildable *buildable,
                                                         const gchar *name);
const gchar *       gtk_buildable_get_name              (GtkBuildable *buildable);
void                gtk_buildable_add_child             (GtkBuildable *buildable,
                                                         GtkBuilder *builder,
                                                         GObject *child,
                                                         const gchar *type);
void                gtk_buildable_set_buildable_property
                                                        (GtkBuildable *buildable,
                                                         GtkBuilder *builder,
                                                         const gchar *name,
                                                         const GValue *value);
GObject *           gtk_buildable_construct_child       (GtkBuildable *buildable,
                                                         GtkBuilder *builder,
                                                         const gchar *name);
gboolean            gtk_buildable_custom_tag_start      (GtkBuildable *buildable,
                                                         GtkBuilder *builder,
                                                         GObject *child,
                                                         const gchar *tagname,
                                                         GMarkupParser *parser,
                                                         gpointer *data);
void                gtk_buildable_custom_tag_end        (GtkBuildable *buildable,
                                                         GtkBuilder *builder,
                                                         GObject *child,
                                                         const gchar *tagname,
                                                         gpointer *data);
void                gtk_buildable_custom_finished       (GtkBuildable *buildable,
                                                         GtkBuilder *builder,
                                                         GObject *child,
                                                         const gchar *tagname,
                                                         gpointer data);
void                gtk_buildable_parser_finished       (GtkBuildable *buildable,
                                                         GtkBuilder *builder);
GObject *           gtk_buildable_get_internal_child    (GtkBuildable *buildable,
                                                         GtkBuilder *builder,
                                                         const gchar *childname);
GtkBuildable is implemented by GtkListItem, GtkBin, GtkTreeView, GtkButtonBox, GtkPaned, GtkInfoBar, GtkColorSelectionDialog, GtkVButtonBox, GtkTearoffMenuItem, GtkEntry, GtkOptionMenu, GtkImage, GtkCalendar, GtkFixed, GtkLinkButton, GtkHButtonBox, GtkInputDialog, GtkRadioButton, GtkVRuler, GtkVSeparator, GtkVBox, GtkCurve, GtkRadioToolButton, GtkHRuler, GtkToggleButton, GtkSeparatorMenuItem, GtkHScale, GtkTable, GtkTreeViewColumn, GtkImageMenuItem, GtkFileChooserButton, GtkCheckButton, GtkRadioMenuItem, GtkMenuShell, GtkStatusbar, GtkDrawingArea, GtkButton, GtkIconView, GtkNotebook, GtkUIManager, GtkTree, GtkSocket, GtkVScale, GtkProgress, GtkGammaCurve, GtkText, GtkCList, GtkAlignment, GtkMenuToolButton, GtkMenuItem, GtkPageSetupUnixDialog, GtkRecentChooserMenu, GtkToolItem, GtkHSeparator, GtkProgressBar, GtkCTree, GtkActionGroup, GtkRange, GtkAssistant, GtkFileSelection, GtkToolbar, GtkTreeItem, GtkAccelLabel, GtkPreview, GtkRecentChooserDialog, GtkExpander, GtkScale, GtkTreeStore, GtkMessageDialog, GtkSeparator, GtkLayout, GtkFontSelection, GtkCellView, GtkInvisible, GtkWindow, GtkSeparatorToolItem, GtkFileChooserWidget, GtkCheckMenuItem, GtkToolButton, GtkMisc, GtkEventBox, GtkFontButton, GtkEntryCompletion, GtkDialog, GtkHBox, GtkCombo, GtkOldEditable, GtkAspectFrame, GtkAboutDialog, GtkHScrollbar, GtkListStore, GtkScaleButton, GtkRecentChooserWidget, GtkToggleToolButton, GtkComboBox, GtkVScrollbar, GtkFrame, GtkSpinButton, GtkList, GtkLabel, GtkFontSelectionDialog, GtkTipsQuery, GtkColorSelection, GtkItem, GtkWidget, GtkIconFactory, GtkRecentAction, GtkVolumeButton, GtkMenuBar, GtkTextView, GtkArrow, GtkToggleAction, GtkRadioAction, GtkPlug, GtkHPaned, GtkBox, GtkMenu, GtkHSV, GtkAction, GtkPrintUnixDialog, GtkComboBoxEntry, GtkColorButton, GtkPixmap, GtkFileChooserDialog, GtkRuler, GtkVPaned, GtkHandleBox, GtkScrollbar, GtkContainer, GtkSizeGroup, GtkViewport and GtkScrolledWindow.
In order to allow construction from a GtkBuilder UI description, an object class must implement the GtkBuildable interface. The interface includes methods for setting names and properties of objects, parsing custom tags, 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
gtk_buildable_... functions.
typedef struct {
  GTypeInterface g_iface;
  /* virtual table */
  void          (* set_name)               (GtkBuildable  *buildable,
                                            const gchar   *name);
  const gchar * (* get_name)               (GtkBuildable  *buildable);
  void          (* add_child)              (GtkBuildable  *buildable,
					    GtkBuilder    *builder,
					    GObject       *child,
					    const gchar   *type);
  void          (* set_buildable_property) (GtkBuildable  *buildable,
					    GtkBuilder    *builder,
					    const gchar   *name,
					    const GValue  *value);
  GObject *     (* construct_child)        (GtkBuildable  *buildable,
					    GtkBuilder    *builder,
					    const gchar   *name);
  gboolean      (* custom_tag_start)       (GtkBuildable  *buildable,
					    GtkBuilder    *builder,
					    GObject       *child,
					    const gchar   *tagname,
					    GMarkupParser *parser,
					    gpointer      *data);
  void          (* custom_tag_end)         (GtkBuildable  *buildable,
					    GtkBuilder    *builder,
					    GObject       *child,
					    const gchar   *tagname,
					    gpointer      *data);
  void          (* custom_finished)        (GtkBuildable  *buildable,
					    GtkBuilder    *builder,
					    GObject       *child,
					    const gchar   *tagname,
					    gpointer       data);
  void          (* parser_finished)        (GtkBuildable  *buildable,
					    GtkBuilder    *builder);
  GObject *     (* get_internal_child)     (GtkBuildable  *buildable,
					    GtkBuilder    *builder,
					    const gchar   *childname);
} GtkBuildableIface;
The GtkBuildableIface interface contains method that are necessary to allow GtkBuilder to construct an object from a GtkBuilder UI definition.
| GTypeInterface  | the parent class | 
| 
 | Stores the name attribute given in the GtkBuilder UI definition.
  GtkWidget maps this to the "name" property, and gtk_buildable_set_name()has a fallback implementation that stores
  the name as object data. Implement this method if your object
  has some notion of "name" and it makes sense to map the XML name
  attribute to it. | 
| 
 | The getter corresponding to set_name. Implement this
  if you implementset_name. | 
| 
 | Adds a child. The typeparameter can be used to 
  differentiate the kind of child. GtkContainer implements this
  to add add a child widget to the container, GtkNotebook uses
  thetypeto distinguish between page labels (of type "page-label")
  and normal children. | 
| 
 | Sets a property of a buildable object.
  It is normally not necessary to implement this, g_object_set_property()is used by default. GtkWindow implements this to delay showing itself
  (i.e. setting the "visible" property) until the whole interface
  is created. | 
| 
 | Constructs a child of a buildable that has been specified as "constructor" in the UI definition. GtkUIManager implements this to reference to a widget created in a <ui> tag which is outside of the normal GtkBuilder UI definition hierarchy. A reference to the constructed object is returned and becomes owned by the caller. | 
| 
 | Implement this if the buildable needs to parse 
  content below <child>. To handle an element, the implementation
  must fill in the parserstructure anduser_dataand returnTRUE.
  GtkWidget implements this to parse keyboard accelerators specified
  in <accelerator> elements. GtkContainer implements it to map
  properties defined via <packing> elements to child properties.
  Note thatuser_datamust be freed incustom_tag_endorcustom_finished. | 
| 
 | Called for the end tag of each custom element that is
  handled by the buildable (see custom_tag_start). | 
| 
 | Called for each custom tag handled by the buildable
  when the builder finishes parsing (see custom_tag_start) | 
| 
 | Called when a builder finishes the parsing of a UI definition. It is normally not necessary to implement this, unless you need to perform special cleanup actions. GtkWindow sets the "visible" property here. | 
| 
 | Returns an internal child of a buildable. 
  GtkDialog implements this to give access to its vbox, making
  it possible to add children to the vbox in a UI definition.
  Implement this if the buildable has internal children that may
  need to be accessed from a UI definition. | 
void gtk_buildable_set_name (GtkBuildable *buildable, const gchar *name);
Sets the name of the buildable object.
| 
 | a GtkBuildable | 
| 
 | name to set | 
Since 2.12
const gchar * gtk_buildable_get_name (GtkBuildable *buildable);
Gets the name of the buildable object. 
GtkBuilder sets the name based on the the 
GtkBuilder UI definition 
used to construct the buildable.
| 
 | a GtkBuildable | 
| Returns : | the name set with gtk_buildable_set_name() | 
Since 2.12
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.
| 
 | a GtkBuildable | 
| 
 | a GtkBuilder | 
| 
 | child to add | 
| 
 | kind of child or NULL | 
Since 2.12
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.
| 
 | a GtkBuildable | 
| 
 | a GtkBuilder | 
| 
 | name of property | 
| 
 | value of property | 
Since 2.12
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.
| 
 | A GtkBuildable | 
| 
 | GtkBuilder used to construct this object | 
| 
 | name of child to construct | 
| Returns : | the constructed child | 
Since 2.12
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>.
| 
 | a GtkBuildable | 
| 
 | a GtkBuilder used to construct this object | 
| 
 | child object or NULLfor non-child tags | 
| 
 | name of tag | 
| 
 | a GMarkupParser structure to fill in | 
| 
 | return location for user data that will be passed in to parser functions | 
| Returns : | TRUEif a object has a custom implementation,FALSEif it doesn't. | 
Since 2.12
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.
| 
 | A GtkBuildable | 
| 
 | GtkBuilder used to construct this object | 
| 
 | child object or NULLfor non-child tags | 
| 
 | name of tag | 
| 
 | user data that will be passed in to parser functions | 
Since 2.12
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.
| 
 | a GtkBuildable | 
| 
 | a GtkBuilder | 
| 
 | child object or NULLfor non-child tags | 
| 
 | the name of the tag | 
| 
 | user data created in custom_tag_start | 
Since 2.12
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.
| 
 | a GtkBuildable | 
| 
 | a GtkBuilder | 
Since 2.12
GObject * gtk_buildable_get_internal_child (GtkBuildable *buildable, GtkBuilder *builder, const gchar *childname);
Get the internal child called childname of the buildable object.
| 
 | a GtkBuildable | 
| 
 | a GtkBuilder | 
| 
 | name of child | 
| Returns : | the internal child of the buildable object | 
Since 2.12