接口

GioIcon

说明 [src]

interface Gio.Icon : GObject.Object

GIcon 是图标的最小接口。它提供了用于检查两个图标是否相等、散列图标以及将图标序列化为字符串并从中进行反序列化的函数。

GIcon 不提供图标的实际位图,因为这超出了 GIO 的范围,但是 GIcon 的实现可能包含图标的名称(请参见 GThemedIcon)或图标的路径(请参见 GLoadableIcon)。

要获取 GIcon 的散列,请参见 g_icon_hash()

要检查两个 GIcon 是否相等,请参见 g_icon_equal()

若要序列化 GIcon,请使用 g_icon_serialize()g_icon_deserialize()

如果您想使用 GIcon(例如,在工具包中),您必须准备好处理至少以下三种情况:GLoadableIconGThemedIconGEmblemedIcon。为其他情况(比如直接处理 GdkPixbuf)建立快速路径也有一定道理,但是 GIO 之外的所有兼容的 GIcon 实现都必须实现 GLoadableIcon

如果您的应用程序或库提供一个或多个 GIcon 实现,您需要确保您的新实现也实现 GLoadableIcon。此外,您必须提供 g_icon_serialize() 的一个实现,其提供的结果会被 g_icon_deserialize() 理解,从而生成内置图标类型之一。

前提条件

为了实现 Icon,您的类型必须继承自GObject

函数

g_icon_deserialize

反序列化先前使用 g_icon_serialize() 序列化的 GIcon

自:2.38

g_icon_new_for_string

str 生成一个 GIcon 实例。如果 str 无效,此函数可能会失败 - 请参见 g_icon_to_string() 以了解讨论。

自:2.20

实例方法

g_icon_equal

检查两个图标是否相等。

g_icon_hash

为图标获取哈希。

g_icon_serialize

GIcon 序列化到 GVariant 中。可以通过调用 g_icon_deserialize() 对返回值反向获取等效的 GIcon。由于序列化会在可能的情况下避免使用原始图标数据,因此只有在同一台机器上的进程(相对于网络)和同一文件系统命名空间内传输 GVariant 时才合理。

自:2.38

g_icon_to_string

生成 icon 的文本表示形式,该表示形式可用于序列化,例如在将 icon 传递到其他进程或将它保存到持久存储时。使用 g_icon_new_for_string() 从返回的字符串里反向获取 icon

自:2.20

接口结构

struct GioIconIface {
  GTypeInterface g_iface;
  guint (* hash) (
    GIcon* icon
  );
  gboolean (* equal) (
    GIcon* icon1,
    GIcon* icon2
  );
  gboolean (* to_tokens) (
    GIcon* icon,
    GPtrArray* tokens,
    gint* out_version
  );
  GIcon* (* from_tokens) (
    gchar** tokens,
    gint num_tokens,
    gint version,
    GError** error
  );
  GVariant* (* serialize) (
    GIcon* icon
  );
  
}

GIconIface 用于为不同系统实现 GIcon 类型。请参阅 GThemedIconGLoadableIcon,以了解如何实现此接口的示例。

接口成员
g_iface
GTypeInterface
 

父接口。

hash
guint (* hash) (
    GIcon* icon
  )
 

给定 GIcon 的哈希。

equal
gboolean (* equal) (
    GIcon* icon1,
    GIcon* icon2
  )
 

检查两个 GIcons 是否相等。

to_tokens
gboolean (* to_tokens) (
    GIcon* icon,
    GPtrArray* tokens,
    gint* out_version
  )
 

GIcon 序列化到令牌中。令牌不应包含任何空格。如果 GIcon 无法序列化,则不要进行实现。(自 2.20 起)

from_tokens
GIcon* (* from_tokens) (
    gchar** tokens,
    gint num_tokens,
    gint version,
    GError** error
  )
 

通过令牌构造一个 GIcon。如果令牌格式错误,则设置 GError。如果 GIcon 无法序列化,则不要进行实现。(自 2.20 起)

serialize
GVariant* (* serialize) (
    GIcon* icon
  )
 

GIcon 序列化到 GVariant 中。自:2.38 起。

虚拟方法

Gio.Icon.equal

检查两个图标是否相等。

Gio.Icon.hash

为图标获取哈希。

Gio.Icon.serialize

GIcon 序列化到 GVariant 中。可以通过调用 g_icon_deserialize() 对返回值反向获取等效的 GIcon。由于序列化会在可能的情况下避免使用原始图标数据,因此只有在同一台机器上的进程(相对于网络)和同一文件系统命名空间内传输 GVariant 时才合理。

自:2.38

Gio.Icon.to_tokens

icon 序列化到字符串令牌中。当调用 g_icon_new_for_string() 时,可以调用它。

自:2.20