接口
GioActionGroup
描述 [src]
interface Gio.ActionGroup : GObject.Object
GActionGroup
表示一组 动作。
动作可以用结构化方式公开功能,无论是从一个程序部分到另一个程序部分,还是对外界。动作组通常与 GMenuModel
一起使用,后者提供额外的表示数据,以向用户显示动作,例如在 菜单中。
与 GActionGroup
中的动作交互的主要方式是使用 g_action_group_activate_action()
激活它们。激活动作可能需要 GVariant
参数。可以借助 g_action_group_get_action_parameter_type()
询问所需的参数类型。动作可能被禁用,请参见 g_action_group_get_action_enabled()
。激活禁用动作没有任何 作用。
动作可以可选地采用 GVariant
形式的状态。可以使用 g_action_group_get_action_state()
询问动作的当前状态。激活有状态动作可能会更改其状态,但也可以通过调用 g_action_group_change_action_state()
来设置状态。
一个典型的示例是文本编辑应用程序,它有一个选项可以将当前字体更改为“粗体”。表示此选项的理想方法是有状态动作,并带有布尔状态。激活该动作将切换 状态。
组中的每个操作都有一个唯一名称(它是字符串)。除 g_action_group_list_actions()
以外的所有方法调用都将操作的名称作为参数。
GActionGroup
API 被视为操作组的“公开”API。此处调用与“外部力量”(例如:UI、导入 D-Bus 消息等)应当对操作执行的交互完全相同。“内部”API(即:旨在仅供操作组实现访问的)位于子类中。这就是您会发现(例如)g_action_group_get_action_enabled()
但不会发现等效 set_action_enabled()
方法的原因。
响应对个别操作的状态更改,将发出操作组信号。
GActionGroup
的实现应当提供虚拟函数 g_action_group_list_actions()
和 g_action_group_query_action()
的实现。其他虚拟函数不应当实现——其“包装器”实际上是通过调用 g_action_group_query_action()
来实现的。
先决条件
要实现 ActionGroup,您的类型必须继承自GObject
。
实例方法
g_action_group_action_enabled_changed
针对 action_group
发出 GActionGroup::action-enabled-changed
信号。
since: 2.28
g_action_group_action_state_changed
针对 action_group
发出 GActionGroup::action-state-changed
信号。
since: 2.28
接口结构
struct GioActionGroupInterface {
GTypeInterface g_iface;
gboolean (* has_action) (
GActionGroup* action_group,
const gchar* action_name
);
gchar** (* list_actions) (
GActionGroup* action_group
);
gboolean (* get_action_enabled) (
GActionGroup* action_group,
const gchar* action_name
);
const GVariantType* (* get_action_parameter_type) (
GActionGroup* action_group,
const gchar* action_name
);
const GVariantType* (* get_action_state_type) (
GActionGroup* action_group,
const gchar* action_name
);
GVariant* (* get_action_state_hint) (
GActionGroup* action_group,
const gchar* action_name
);
GVariant* (* get_action_state) (
GActionGroup* action_group,
const gchar* action_name
);
void (* change_action_state) (
GActionGroup* action_group,
const gchar* action_name,
GVariant* value
);
void (* activate_action) (
GActionGroup* action_group,
const gchar* action_name,
GVariant* parameter
);
void (* action_added) (
GActionGroup* action_group,
const gchar* action_name
);
void (* action_removed) (
GActionGroup* action_group,
const gchar* action_name
);
void (* action_enabled_changed) (
GActionGroup* action_group,
const gchar* action_name,
gboolean enabled
);
void (* action_state_changed) (
GActionGroup* action_group,
const gchar* action_name,
GVariant* state
);
gboolean (* query_action) (
GActionGroup* action_group,
const gchar* action_name,
gboolean* enabled,
const GVariantType** parameter_type,
const GVariantType** state_type,
GVariant** state_hint,
GVariant** state
);
}
GActionGroup
的虚拟函数表。
接口成员
g_iface |
|
无可用说明。 |
|
has_action |
|
|
|
list_actions |
|
|
|
get_action_enabled |
|
get_action_parameter_type |
|
get_action_state_type |
|
get_action_state_hint |
|
get_action_state |
|
change_action_state |
|
activate_action |
|
虚拟函数指针 |
|
action_added |
|
类 closure,用于 |
|
action_removed |
|
类 closure,用于 |
|
action_enabled_changed |
|
类 closure,用于 |
|
action_state_changed |
|
类 closure,用于 |
|
query_action |
|
虚拟函数指针 |
虚拟方法
Gio.ActionGroup.action_enabled_changed
针对 action_group
发出 GActionGroup::action-enabled-changed
信号。
since: 2.28
Gio.ActionGroup.action_state_changed
针对 action_group
发出 GActionGroup::action-state-changed
信号。
since: 2.28