获取股票ID的图标名称?

mat*_*fee 16 gtk

我正在尝试检索与给定(字符串)Gtk股票ID对应的(字符串)图标名称.

Gtk stock id'gtk-go-forward'有两个相应的图标名称,'gtk-go-forward-ltr'和'gtk-go-forward-rtl'.我想找回:

  • 给出ID"gtk-go-forward"时,两个图标名称'gtk-go-forward-ltr'和'gtk-go-forward-rtl'; 要么
  • 只是图标名称'gtk-go-forward-ltr'(我的文字方向的"适当").

潜在的限制

我正在使用gobject内省API,而不是基本C.

基本原理(可选阅读)

我正在尝试为St.Icon股票ID指定的图标制作,但尺寸较大(96像素).

我可以使用gtk_icon_set_render_icon与股票ID"GTK的奋力向前",直接像这样(它挑选LTR版)(语法是GNOME javscript但这是无关的quesiton;我使用GObject的自省API):

let style = Gtk.Widget.get_default_style();
let iconset = style.lookup_icon_set('gtk-go-forward');
let icon = new St.Icon({
    gicon: iconset.render_icon(gtkStyle, Gtk.TextDirection.LTR,
                               Gtk.StateType.NORMAL, Gtk.IconSize.DIALOG,
                               null, null),
    icon_type: St.IconType.FULLCOLOR,
    icon_size: 96
});
Run Code Online (Sandbox Code Playgroud)

这将给我一个股票ID'gtk-go-forward'的图标(它选择'gtk-go-forward-ltr'),图标非常模糊.

或者,如果我直接输入图标名称'gtk-go-forward-ltr',则图标不会模糊:

let icon = new St.Icon({
    gicon: Gio.ThemedIcon.new_with_default_fallbacks('gtk-go-forward-ltr'),
    icon_type: St.IconType.FULLCOLOR,
    icon_size: 96
});
Run Code Online (Sandbox Code Playgroud)

总而言之,我认为获得一个大的非模糊图标最好的办法是找到股票ID的图标名称,而不是使用股票ID(gtk-go-forward上面的第二种方法会产生"缺少图标"图标)因为它不是有效的图标名称).

使用库存ID的图标(顶部);  使用图标名称(底部)

在上图中,顶部图标使用第一种方法(库存ID和render_icon),底部图标使用第二种方法(直接使用图标名称).清晰度差异很大.

Tri*_*dle 7

一般股票图标名称

这个问题现在有点旧了,但是为了将来参考:最好使用"go-next"而不是"gtk-go-forward"- 这是根据Icon命名规范的正确名称,并推荐,因为GTK开发人员正计划很快弃用股票图标.

要直接回答标题中所述的问题:这是一个方便的Google Docs电子表格,为GTK股票图标提供等效的图标规范名称.

GTK图标的非模糊,大版本

至于获取默认图标的非模糊版本,我发现在GTK中以96px渲染图标的最佳方法是将其加载到a中GdkPixbuf,然后使用它而不是a GtkIcon(仅限于48px,即最大的GtkIconSize,正如j__m指出的那样).在Vala中如何执行此操作的示例(可轻松转换为JS或Python等):

var icon_theme = Gtk.IconTheme.get_default();
try {
    var pixbuf = icon_theme.load_icon("go-next", 96, Gtk.IconLookupFlags.USE_BUILTIN);
    // Do something with the pixbuf, for example use it with a CellRendererPixbuf,
    // or a GtkButton or whatever
catch (GLib.Error e) {
    GLib.critical("Could not load icon: %s", e.message);
}
Run Code Online (Sandbox Code Playgroud)

您可能还想尝试Gtk.IconLookupFlags.FORCE_SIZE和/或FORCE_SVG,特别是如果您想要真正巨大的图标.

我担心我从来没有使用过Shell Toolkit,所以我不知道你是否特别需要它St.Icon,但是在普通的GTK中,你GdkPixbuf几乎可以在任何地方使用股票图标,所以这是一个解决方法我已经发现非常有用.


j__*_*__m 1

GTK_ICON_SIZE_DIALOGGtk.IconSize.DIALOG在 Javascript 中)小于 96px。你正在渲染一个小图标,然后将其放大;自然会看起来很糟糕。

我记得,该值-1返回图标的原始大小。然后你可以使用 St.Icon 来设置你想要绘制它的大小,因为这似乎就是你想要使用它的方式。