Gtk应用程序

描述 [src]

class Gtk.Application : Gio.Application
  implements Gio.ActionGroup, Gio.ActionMap {
  /* No available fields */
}

用于编写应用程序的高级API

GtkApplication 支持以便捷的方式编写 GTK 应用程序的许多方面,而无需强制执行一刀切的模型。

目前,它处理 GTK 初始化、应用程序唯一性、会话管理,通过导出操作和菜单提供一些基本可脚本性和桌面外壳集成,并管理一个顶级窗口列表,其生命周期会自动与您应用程序的生命周期绑定。

虽然 GtkApplication 与纯 GtkWindow 配合良好,但建议将其与 GtkApplicationWindow 一起使用。

自动资源

GtkApplication 将自动从位于应用程序资源库路径(参见 g_application_set_resource_base_path())相对于“gtk/menus.ui”的 GtkBuilder 资源加载菜单。ID 为“menubar”的菜单被视为应用程序的菜单栏。可以通过 gtk_application_get_menu_by_id() 命名和访问其他菜单(最有趣的是子菜单),它允许动态填充菜单结构的一部分。

请注意,自动资源加载使用在构造时设置的资源库路径,如果稍后更改资源库路径,它将不起作用。

还可以使用 gtk_application_set_menubar() 手动提供菜单栏。

GtkApplication 还会通过将“icons”附加到资源库路径为默认图标主题自动设置图标搜索路径。这使您的应用程序可以轻松地将图标存储为资源。有关更多信息,请参见 gtk_icon_theme_add_resource_path()

如果在 gtk/help-overlay.ui 有一个资源,其中定义了带有 ID help_overlayGtkShortcutsWindow,则 GtkApplication 将该快捷方式窗口的一个实例与每个 GtkApplicationWindow 相关联,并设置键盘快捷键 Control+? 来打开它。若要创建一个显示快捷方式窗口的菜单项,可将该项与操作 win.show-help-overlay 相关联。

GtkApplication 还将自动将应用程序 ID 设置为默认窗口图标。使用 gtk_window_set_default_icon_name()GtkWindow:icon-name 可覆盖该行为。

一个简单的应用程序

GTK 源代码存储库中提供了一个 简单示例

GtkApplication 可选择在用户会话的会话管理器中注册(如果您设置了 GtkApplication:register-session 属性),并提供与会话生命周期相关的多种功能。

应用程序可以使用 gtk_application_inhibit() 函数阻止以各种方式结束会话。这种抑制的典型用例是长时间、不可中断的操作,例如刻录 CD 或执行磁盘备份。会话管理器可能不会遵循抑制器,但可以指望它通知用户在存在抑制器的情况下结束会话的负面后果。

另请参阅

层次结构

hierarchy this GtkApplication implements_0 GActionGroup this--implements_0 implements_1 GActionMap this--implements_1 ancestor_0 GApplication ancestor_0--this ancestor_1 GObject ancestor_1--ancestor_0

构造函数

gtk_application_new

创建新的应用程序实例。

实例方法

gtk_application_add_window

将窗口添加到应用程序。

gtk_application_get_accels_for_action

获取当前与给定操作关联的加速器。

gtk_application_get_actions_for_accel

返回加速器映射到的操作列表(可能为空)。

gtk_application_get_active_window

获取应用程序的“活动”窗口。

gtk_application_get_menu_by_id

从自动加载的资源中获取菜单。

gtk_application_get_menubar

返回应用程序菜单栏的菜单模型。

gtk_application_get_window_by_id

返回具有给定 ID 的窗口。

gtk_application_get_windows

获取与应用程序关联的窗口列表。

gtk_application_inhibit

通知会话管理器应禁止某些类型的操作。

gtk_application_list_action_descriptions

列出具有关联加速器的详细操作名称。

gtk_application_remove_window

从应用程序中移除窗口。

gtk_application_set_accels_for_action

设置零个或多个将触发给定操作的键盘加速器。

gtk_application_set_menubar

设置或取消设置应用程序窗口的菜单栏。

gtk_application_uninhibit

删除以前建立的抑制器。

GApplication (36) 继承的方法

请参阅 GApplication 以获取完整的方法列表。

GObject (43) 继承的方法

请参阅 GObject 以获取完整的方法列表。

GActionGroup (14) 继承的方法
g_action_group_action_added

在“action_group”中发出“GActionGroup::action-added”信号。

g_action_group_action_enabled_changed

在“action_group”中发出“GActionGroup::action-enabled-changed”信号。

g_action_group_action_removed

在“action_group”中发出“GActionGroup::action-removed”信号。

g_action_group_action_state_changed

在“action_group”中发出“GActionGroup::action-state-changed”信号。

g_action_group_activate_action

激活“action_group”中指定的动作。

g_action_group_change_action_state

请求将“action_group”中指定动作的状态更改为“value”。

g_action_group_get_action_enabled

检查“action_group”中指定的动作是否当前已启用。

g_action_group_get_action_parameter_type

查询在激活“action_group”中指定动作时必须提供的参数的类型。

g_action_group_get_action_state

查询“action_group”中指定动作的当前状态。

g_action_group_get_action_state_hint

请求有关“action_group”中指定动作的状态的有效值范围的提示。

g_action_group_get_action_state_type

查询“action_group”中指定动作的状态的类型。

g_action_group_has_action

检查指定的动作是否存在于“action_group”之中。

g_action_group_list_actions

列出“action_group”中包含的动作。

g_action_group_query_action

查询“action_group”中指定动作的所有方面。

GActionMap (5)继承的方法
g_action_map_add_action

将动作添加到“action_map”。

g_action_map_add_action_entries

一个便捷函数,用于创建多个“GSimpleAction”实例并将它们添加到“GActionMap”。

g_action_map_lookup_action

在“action_map”中查找名称为“action_name”的动作。

g_action_map_remove_action

从动作映射中删除指定的动作。

g_action_map_remove_action_entries

从“GActionMap”中移除动作。这被认为是 g_action_map_add_action_entries() 的反向操作。

属性

Gtk.Application:active-window

应用程序当前获得焦点的窗口。

Gtk.Application:menubar

要用于应用程序菜单栏的菜单模型。

Gtk.Application:register-session

将此属性设置为真以在会话管理器中进行注册。

Gtk.Application:screensaver-active

如果是,则 GTK 认为屏幕保护程序当前已激活。

GApplication (9)继承的属性
Gio.Application:action-group

应用程序导出的动作组。

Gio.Application:application-id

应用程序的唯一标识符。

Gio.Application:flags

指定应用程序行为的标志。

Gio.Application:inactivity-timeout

空闲后保持活动的时长(以毫秒为单位)。

Gio.Application:is-busy

如果应用程序当前通过 g_application_mark_busy() 或 g_application_bind_busy_property() 标记为繁忙,则为真。

Gio.Application:is-registered

是否已调用 g_application_register()。

Gio.Application:is-remote

此应用程序实例是否是远程的。

Gio.Application:resource-base-path

应用程序的基本资源路径。

Gio.Application:version

应用程序的可读版本号。

信号

Gtk.Application::query-end

会话管理器即将结束会话时发出。

Gtk.Application::window-added

将窗口添加到应用程序时发出。

Gtk.Application::window-removed

从应用程序中移除窗口时发出。

GApplication (7) 继承的信号
GApplication::activate

激活发生时,会在主要实例上发出 ::activate 信号。请参阅 g_application_activate()。

GApplication::command-line

没有在本地处理命令行时,会在主要实例上发出 ::command-line 信号。请参阅 g_application_run() 和 GApplicationCommandLine 文档,了解更多信息。

GApplication::handle-local-options

解析命令行选项后,会在本地实例上发出 ::handle-local-options 信号。

GApplication::name-lost

新的实例接管时,仅在已注册的主要实例上发出 ::name-lost 信号。仅当应用程序使用 G_APPLICATION_ALLOW_REPLACEMENT 标志时,才会发生这种情况。

GApplication::open

有要打开的文件时,会在主要实例上发出 ::open 信号。请参阅 g_application_open(),了解更多信息。

GApplication::shutdown

在主循环终止后,仅在已注册的主要实例上发出 ::shutdown 信号。

GApplication::startup

注册后,会在主要实例上立即发出 ::startup 信号。请参阅 g_application_register()。

GObject (1) 继承的信号
GObject::notify

通过 g_object_set_property()、g_object_set() 等方法设置对象某个属性值时,会在该对象上发出 notify 信号。

GActionGroup (4) 继承的信号
GActionGroup::action-added

表示刚刚向该组添加了一个新操作。此信号在操作添加且现在可见后发出。

GActionGroup::action-enabled-changed

表示已命名的操作的已启用状态已发生更改。

GActionGroup::action-removed

表示该操作即将从该组中移除。此信号在移除操作之前发出,因此操作仍然可见,并且可以从信号处理程序中进行查询。

GActionGroup::action-state-changed

表示已命名的操作的状态已更改。

类结构

struct GtkApplicationClass {
  GApplicationClass parent_class;
  void (* window_added) (
    GtkApplication* application,
    GtkWindow* window
  );
  void (* window_removed) (
    GtkApplication* application,
    GtkWindow* window
  );
  
}

无可用描述。

类成员
parent_class: GApplicationClass

父类。

window_added: void (* window_added) ( GtkApplication* application, GtkWindow* window )

通过 gtk_application_add_window() 将 GtkWindow 添加到应用程序时发出的信号。

window_removed: void (* window_removed) ( GtkApplication* application, GtkWindow* window )

由于被销毁或通过 gtk_application_remove_window() 显示删除 GtkWindow 而从应用程序中移除 GtkWindow 时发出的信号。

虚拟方法

Gtk.ApplicationClass.window_added

通过 gtk_application_add_window() 将 GtkWindow 添加到应用程序时发出的信号。

Gtk.ApplicationClass.window_removed

由于被销毁或通过 gtk_application_remove_window() 显示删除 GtkWindow 而从应用程序中移除 GtkWindow 时发出的信号。