Вопрос
Я пытаюсь получить имя (строки) значка (строки), соответствующее заданному (строковому) значению запаса Gtk.
Пример
Идентификатор "gtk-go-forward" в каталоге Gtk имеет два соответствующих имени значков: "gtk-go-forward-ltr" и "gtk-go-forward-rtl". Я хотел бы получить либо:
- оба значка имен "gtk-go-forward-ltr" и "gtk-go-forward-rtl" заданы идентификатором "gtk-go-forward" ; ИЛИ
- просто имя значка "gtk-go-forward-ltr" ( "соответствующий" для моего текстового направления).
Потенциальные ограничения
Я использую API-интерфейс интроспекции gobject, а не базу C.
Обоснование (необязательно для чтения)
Я пытаюсь сделать St.Icon
для значка, указанного идентификатором запаса, но при довольно большом размере (96 пикселей).
Я могу использовать gtk_icon_set_render_icon
с прямым идентификатором "gtk-go-forward" (он выбирает версию LTR) (синтаксис - это java-код GNOME, но это не имеет отношения к quesiton, я использую API-интерфейс для интроспекции GObject):
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
});
Это даст мне значок для идентификатора запаса "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
});
Таким образом, я считаю, что мой лучший выбор при получении большого, не-нечеткого значка - найти имя значка для идентификатора запаса, а не использовать идентификатор запаса (подача gtk-go-forward
во второй метод выше дает значок "отсутствует значок", поскольку он не является допустимым именем значка).
На рисунке выше верхний значок использует первый метод (идентификатор запаса с render_icon), а нижний значок использует второй метод (используйте имя значка напрямую). Большая разница в ясности.