Top | ![]() |
![]() |
![]() |
![]() |
GtkBuildable is implemented by GtkAboutDialog, GtkActionBar, GtkAnyFilter, GtkAppChooserButton, GtkAppChooserDialog, GtkAppChooserWidget, GtkApplicationWindow, GtkAspectFrame, GtkAssistant, GtkBox, GtkButton, GtkCalendar, GtkCellArea, GtkCellAreaBox, GtkCellView, GtkCheckButton, GtkColorButton, GtkColorChooserDialog, GtkColorChooserWidget, GtkColumnView, GtkComboBox, GtkComboBoxText, GtkConstraintLayout, GtkDialog, GtkDragIcon, GtkDrawingArea, GtkDropDown, GtkEditableLabel, GtkEmojiChooser, GtkEntry, GtkEntryCompletion, GtkEveryFilter, GtkExpander, GtkFileChooserButton, GtkFileChooserDialog, GtkFileChooserWidget, GtkFileFilter, GtkFixed, GtkFlowBox, GtkFlowBoxChild, GtkFontButton, GtkFontChooserDialog, GtkFontChooserWidget, GtkFrame, GtkGLArea, GtkGrid, GtkGridView, GtkHeaderBar, GtkIconView, GtkImage, GtkInfoBar, GtkLabel, GtkLevelBar, GtkLinkButton, 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 and GtkWindowHandle.
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.
const char *
gtk_buildable_get_buildable_id (GtkBuildable *buildable
);
Gets the ID of the buildable
object.
GtkBuilder sets the name based on the
GtkBuilder UI definition
used to construct the buildable
.
struct GtkBuildableIface { GTypeInterface g_iface; /* virtual table */ void (* set_id) (GtkBuildable *buildable, const char *id); const char * (* get_id) (GtkBuildable *buildable); /** * GtkBuildableIface::add_child: * @buildable: a #GtkBuildable * @builder: a #GtkBuilder * @child: child to add * @type: (nullable): kind of child or %NULL * * Adds a child to @buildable. @type is an optional string * describing how the child should be added. */ 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); /** * GtkBuildableIface::custom_tag_start: * @buildable: a #GtkBuildable * @builder: a #GtkBuilder used to construct this object * @child: (nullable): child object or %NULL for non-child tags * @tagname: name of tag * @parser: (out): a #GMarkupParser to fill in * @data: (out): return location for user data that will be passed in * to parser functions * * Called for each unknown element under `<child>`. * * Returns: %TRUE if an object has a custom implementation, %FALSE * if it doesn't. */ gboolean (* custom_tag_start) (GtkBuildable *buildable, GtkBuilder *builder, GObject *child, const char *tagname, GtkBuildableParser *parser, gpointer *data); /** * GtkBuildableIface::custom_tag_end: * @buildable: A #GtkBuildable * @builder: #GtkBuilder used to construct this object * @child: (nullable): child object or %NULL for non-child tags * @tagname: name of tag * @data: user data that will be passed in to parser functions * * Called at the end of each custom element handled by * the buildable. */ void (* custom_tag_end) (GtkBuildable *buildable, GtkBuilder *builder, GObject *child, const char *tagname, gpointer data); /** * GtkBuildableIface::custom_finished: * @buildable: a #GtkBuildable * @builder: a #GtkBuilder * @child: (nullable): child object or %NULL for non-child tags * @tagname: the name of the tag * @data: user data created in custom_tag_start * * Similar to gtk_buildable_parser_finished() but is * called once for each custom tag handled by the @buildable. */ void (* custom_finished) (GtkBuildable *buildable, GtkBuilder *builder, GObject *child, const char *tagname, gpointer data); void (* parser_finished) (GtkBuildable *buildable, GtkBuilder *builder); /** * GtkBuildableIface::get_internal_child: * @buildable: a #GtkBuildable * @builder: a #GtkBuilder * @childname: name of child * * Retrieves the internal child called @childname of the @buildable object. * * Returns: (transfer none): the internal child of the buildable object */ GObject * (* get_internal_child) (GtkBuildable *buildable, GtkBuilder *builder, const char *childname); };
The GtkBuildableIface interface contains method that are necessary to allow GtkBuilder to construct an object from a GtkBuilder UI definition.
Stores the id attribute given in the GtkBuilder UI definition. GtkWidget stores the name as object data. Implement this method if your object has some notion of “ID” and it makes sense to map the XML id attribute to it. |
||
The getter corresponding to |
||
Adds a child. The |
||
Sets a property of a buildable object.
It is normally not necessary to implement this, |
||
Constructs a child of a buildable that has been specified as “constructor” in the UI definition. This can be used to reference 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 |
||
Called for the end tag of each custom element that is
handled by the buildable (see |
||
Called for each custom tag handled by the buildable
when the builder finishes parsing (see |
||
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 |
struct GtkBuildableParser { /* Called for open tags <foo bar="baz"> */ void (*start_element) (GtkBuildableParseContext *context, const char *element_name, const char **attribute_names, const char **attribute_values, gpointer user_data, GError **error); /* Called for close tags </foo> */ void (*end_element) (GtkBuildableParseContext *context, const char *element_name, gpointer user_data, GError **error); /* Called for character data */ /* text is not nul-terminated */ void (*text) (GtkBuildableParseContext *context, const char *text, gsize text_len, gpointer user_data, GError **error); /* Called on error, including one set by other * methods in the vtable. The GError should not be freed. */ void (*error) (GtkBuildableParseContext *context, GError *error, gpointer user_data); gpointer padding[4]; };