接口

GtkBuilderScope

描述 [src]

interface Gtk.BuilderScope : GObject.Object

GtkBuilderScope 是一项为 GtkBuilder 提供语言绑定支持的接口。

GtkBuilderScope 的目标是查找给定在 GtkBuilder UI 文件中的字符串的特定于编程语言的值。

主要目标受众是要将 GtkBuilder 更深入地集成到语言中的绑定。

GtkBuilderScope 实例可以用在多个 GtkBuilder 对象中,甚至可以一次使用。

默认情况下,GTK 将使用其自己的 GtkBuilderScope 实现来用于 C 语言,可通过 gtk_builder_cscope_new() 创建该语言。

如果你为语言绑定实现 GtkBuilderScope,则可能需要(部分)派生或回退到 GtkBuilderCScope,因为该类实现了对 C 符号的自动查找支持。

前提条件

为了实现 BuilderScope,你的类型必须继承GObject

接口结构

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
  );
  
}

要为 GtkBuilderScope 实现实现的虚拟函数表。每一个函数的默认实现都存在,但它们通常都会失败,因此建议实现对所有函数的 实现。

接口成员
get_type_from_name
GType (* get_type_from_name) (
    GtkBuilderScope* self,
    GtkBuilder* builder,
    const char* type_name
  )
 

尝试通过其名称查找 GType。欲知详情,请参见 gtk_builder_get_type_from_name()。C 实现将使用 g_type_from_name(),如果失败,则尝试猜测用于注册该类型的正确函数名称,然后使用 dlsym() 加载它。默认实现只会尝试 g_type_from_name(),否则将 失败。

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

尝试通过给定的函数名称查找 GType,该名称已显式指定在 GtkBuilder 文件中,比如通过 <object> 标记中的“type-func”属性。此函数极少使用。C 实现将使用 dlsym() 并将结果函数作为 GTypeFunc 调用。默认实现将失败,只返回 G_TYPE_INVALID

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

使用给定参数创建一个闭包。欲知这些参数的详情,请参见 gtk_builder_create_closure()。C 实现将尝试使用 dlsym() 找到函数名称,然后使用 g_cclosure_new() 为该符号创建一个闭包。默认实现只会失败并返回 NULL

虚拟方法

Gtk.BuilderScope.create_closure

使用给定参数创建一个闭包。欲知这些参数的详情,请参见 gtk_builder_create_closure()。C 实现将尝试使用 dlsym() 找到函数名称,然后使用 g_cclosure_new() 为该符号创建一个闭包。默认实现只会失败并返回 NULL

Gtk.BuilderScope.get_type_from_function

尝试通过给定的函数名称查找 GType,该名称已显式指定在 GtkBuilder 文件中,比如通过 <object> 标记中的“type-func”属性。此函数极少使用。C 实现将使用 dlsym() 并将结果函数作为 GTypeFunc 调用。默认实现将失败,只返回 G_TYPE_INVALID

Gtk.BuilderScope.get_type_from_name

尝试通过其名称查找 GType。欲知详情,请参见 gtk_builder_get_type_from_name()。C 实现将使用 g_type_from_name(),如果失败,则尝试猜测用于注册该类型的正确函数名称,然后使用 dlsym() 加载它。默认实现只会尝试 g_type_from_name(),否则将 失败。