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

Implementations

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
  )
 

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.

get_id
const char* (* get_id) (
    GtkBuildable* buildable
  )
 

The getter corresponding to set_id. Implement this if you implement set_id.

add_child
void (* add_child) (
    GtkBuildable* buildable,
    GtkBuilder* builder,
    GObject* child,
    const char* type
  )
 

Adds a child. The type parameter can be used to differentiate the kind of child. GtkWidget implements this to add event controllers to the widget, GtkNotebook uses the type to distinguish between page labels (of type “page-label”) and normal children.

set_buildable_property
void (* set_buildable_property) (
    GtkBuildable* buildable,
    GtkBuilder* builder,
    const char* name,
    const GValue* value
  )
 

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 GtkWidget:visible property) until the whole interface is created.

construct_child
GObject* (* construct_child) (
    GtkBuildable* buildable,
    GtkBuilder* builder,
    const char* name
  )
 

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.

custom_tag_start
gboolean (* custom_tag_start) (
    GtkBuildable* buildable,
    GtkBuilder* builder,
    GObject* child,
    const char* tagname,
    GtkBuildableParser* parser,
    gpointer* data
  )
 

Implement this if the buildable needs to parse content below <child>. To handle an element, the implementation must fill in the parser and user_data and return TRUE. GtkWidget implements this to parse accessible attributes specified in <accessibility> elements. Note that user_data must be freed in custom_tag_end or custom_finished.

custom_tag_end
void (* custom_tag_end) (
    GtkBuildable* buildable,
    GtkBuilder* builder,
    GObject* child,
    const char* tagname,
    gpointer data
  )
 

Called for the end tag of each custom element that is handled by the buildable (see custom_tag_start).

custom_finished
void (* custom_finished) (
    GtkBuildable* buildable,
    GtkBuilder* builder,
    GObject* child,
    const char* tagname,
    gpointer data
  )
 

Called for each custom tag handled by the buildable when the builder finishes parsing (see custom_tag_start).

parser_finished
void (* parser_finished) (
    GtkBuildable* buildable,
    GtkBuilder* builder
  )
 

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 GtkWidget:visible property here.

get_internal_child
GObject* (* get_internal_child) (
    GtkBuildable* buildable,
    GtkBuilder* builder,
    const char* childname
  )
 

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.

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

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.

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

The getter corresponding to set_id. Implement this if you implement set_id.

Gtk.Buildable.get_internal_child

Retrieves the internal child called childname of the buildable object.

Gtk.Buildable.parser_finished

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 GtkWidget:visible property here.

Gtk.Buildable.set_buildable_property

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 GtkWidget:visible property) until the whole interface is created.

Gtk.Buildable.set_id

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.