<object class="GtkIconFactory" id="iconfactory1">
<sources>
<source stock-id="apple-red" filename="apple-red.png"/>
</sources>
</object>
<object class="GtkWindow" id="window1">
<child>
<object class="GtkButton" id="apple_button">
<property name="label">apple-red</property>
<property name="use-stock">True</property>
</object>
</child>
</object>
An icon factory manages a collection of #GtkIconSet; a #GtkIconSet manages a set of variants of a particular icon (i.e. a #GtkIconSet contains variants for different sizes and widget states). Icons in an icon factory are named by a stock ID, which is a simple string identifying the icon. Each #GtkStyle has a list of #GtkIconFactory derived from the current theme; those icon factories are consulted first when searching for an icon. If the theme doesn’t set a particular icon, GTK+ looks for the icon in a list of default icon factories, maintained by gtk.icon_factory.IconFactory.addDefault and gtk.icon_factory.IconFactory.removeDefault. Applications with icons should add a default icon factory with their icons, which will allow themes to override the icons for the application.
To display an icon, always use gtk.style.Style.lookupIconSet on the widget that will display the icon, or the convenience function gtk.widget.Widget.renderIcon. These functions take the theme into account when looking up the icon to use for a given stock ID.
GtkIconFactory as GtkBuildable # {#GtkIconFactory-BUILDER-UI}
GtkIconFactory supports a custom <sources> element, which can contain multiple <source> elements. The following attributes are allowed:
The stock id of the source, a string. This attribute is mandatory
The filename of the source, a string. This attribute is optional
The icon name for the source, a string. This attribute is optional.
Size of the icon, a #GtkIconSize enum value. This attribute is optional.
Direction of the source, a #GtkTextDirection enum value. This attribute is optional.
State of the source, a #GtkStateType enum value. This attribute is optional.