Interface

GtkBuilderScope

Description [src]

interface Gtk.BuilderScope : GObject.Object

GtkBuilderScope is an interface to provide language binding support to GtkBuilder.

The goal of GtkBuilderScope is to look up programming-language-specific values for strings that are given in a GtkBuilder UI file.

The primary intended audience is bindings that want to provide deeper integration of GtkBuilder into the language.

A GtkBuilderScope instance may be used with multiple GtkBuilder objects, even at once.

By default, GTK will use its own implementation of GtkBuilderScope for the C language which can be created via gtk_builder_cscope_new().

If you implement GtkBuilderScope for a language binding, you may want to (partially) derive from or fall back to a GtkBuilderCScope, as that class implements support for automatic lookups from C symbols.

Prerequisite

In order to implement BuilderScope, your type must inherit fromGObject.

Implementations

Interface structure

struct GtkBuilderScopeInterface {
  GType (* get_type_from_name) (
    GtkBuilderScope* self,
    GtkBuilder* builder,
    const char* type_name
  );
  GType (* get_type_from_function) (
    GtkBuilderScope* self,
    GtkBuilder* builder,
    const char* function_name
  );
  GClosure* (* create_closure) (
    GtkBuilderScope* self,
    GtkBuilder* builder,
    const char* function_name,
    GtkBuilderClosureFlags flags,
    GObject* object,
    GError** error
  );
  
}

The virtual function table to implement for GtkBuilderScope implementations. Default implementations for each function do exist, but they usually just fail, so it is suggested that implementations implement all of them.

Interface members
get_type_from_name
GType (* get_type_from_name) (
    GtkBuilderScope* self,
    GtkBuilder* builder,
    const char* type_name
  )
 

Try to lookup a GType via the its name. See gtk_builder_get_type_from_name() for more details. The C implementation will use g_type_from_name() and if that fails try to guess the correct function name for registering the type and then use dlsym() to load it. The default implementation just tries g_type_from_name() and otherwise fails.

get_type_from_function
GType (* get_type_from_function) (
    GtkBuilderScope* self,
    GtkBuilder* builder,
    const char* function_name
  )
 

Try to lookup a GType via the given function name, specified explicitly in a GtkBuilder file, like via the “type-func” attribute in the <object> tag. This function is very rarely used. The C implementation will use dlsym() and call the resulting function as a GTypeFunc. The default implementation will fail and just return G_TYPE_INVALID.

create_closure
GClosure* (* create_closure) (
    GtkBuilderScope* self,
    GtkBuilder* builder,
    const char* function_name,
    GtkBuilderClosureFlags flags,
    GObject* object,
    GError** error
  )
 

Create a closure with the given arguments. See gtk_builder_create_closure() for more details on those. The C implementation will try to use dlsym() to locate the function name and then g_cclosure_new() to create a closure for the symbol. The default implementation just fails and returns NULL.

Virtual methods

Gtk.BuilderScope.create_closure

Create a closure with the given arguments. See gtk_builder_create_closure() for more details on those. The C implementation will try to use dlsym() to locate the function name and then g_cclosure_new() to create a closure for the symbol. The default implementation just fails and returns NULL.

Gtk.BuilderScope.get_type_from_function

Try to lookup a GType via the given function name, specified explicitly in a GtkBuilder file, like via the “type-func” attribute in the <object> tag. This function is very rarely used. The C implementation will use dlsym() and call the resulting function as a GTypeFunc. The default implementation will fail and just return G_TYPE_INVALID.

Gtk.BuilderScope.get_type_from_name

Try to lookup a GType via the its name. See gtk_builder_get_type_from_name() for more details. The C implementation will use g_type_from_name() and if that fails try to guess the correct function name for registering the type and then use dlsym() to load it. The default implementation just tries g_type_from_name() and otherwise fails.