- GdkPixbuf *pb;
-
- pb = gdk_pixbuf_new_from_inline(-1, hb_activity32, FALSE, NULL);
- gtk_icon_theme_add_builtin_icon("hb-activity", 32, pb);
-
- pb = gdk_pixbuf_new_from_inline(-1, hb_add_queue32, FALSE, NULL);
- gtk_icon_theme_add_builtin_icon("hb-add-queue", 32, pb);
-
- pb = gdk_pixbuf_new_from_inline(-1, hb_canceled16, FALSE, NULL);
- gtk_icon_theme_add_builtin_icon("hb-canceled", 16, pb);
-
- pb = gdk_pixbuf_new_from_inline(-1, hb_complete16, FALSE, NULL);
- gtk_icon_theme_add_builtin_icon("hb-complete", 16, pb);
-
- pb = gdk_pixbuf_new_from_inline(-1, hb_drawer32, FALSE, NULL);
- gtk_icon_theme_add_builtin_icon("hb-drawer", 32, pb);
-
- pb = gdk_pixbuf_new_from_inline(-1, hb_icon128, FALSE, NULL);
- gtk_icon_theme_add_builtin_icon("hb-icon", 128, pb);
-
- pb = gdk_pixbuf_new_from_inline(-1, hb_play32, FALSE, NULL);
- gtk_icon_theme_add_builtin_icon("hb-play", 32, pb);
-
- pb = gdk_pixbuf_new_from_inline(-1, hb_pref32, FALSE, NULL);
- gtk_icon_theme_add_builtin_icon("hb-pref", 32, pb);
-
- pb = gdk_pixbuf_new_from_inline(-1, hb_queue32, FALSE, NULL);
- gtk_icon_theme_add_builtin_icon("hb-queue", 32, pb);
-
- pb = gdk_pixbuf_new_from_inline(-1, hb_queue_delete16, FALSE, NULL);
- gtk_icon_theme_add_builtin_icon("hb-queue-delete", 16, pb);
-
- pb = gdk_pixbuf_new_from_inline(-1, hb_queue_job16, FALSE, NULL);
- gtk_icon_theme_add_builtin_icon("hb-queue-job", 16, pb);
-
- pb = gdk_pixbuf_new_from_inline(-1, hb_queue_pass1, FALSE, NULL);
- gtk_icon_theme_add_builtin_icon("hb-queue-pass1", 16, pb);
-
- pb = gdk_pixbuf_new_from_inline(-1, hb_queue_pass2, FALSE, NULL);
- gtk_icon_theme_add_builtin_icon("hb-queue-pass2", 16, pb);
-
- pb = gdk_pixbuf_new_from_inline(-1, hb_queue_subtitle16, FALSE, NULL);
- gtk_icon_theme_add_builtin_icon("hb-queue-subtitle", 16, pb);
-
- pb = gdk_pixbuf_new_from_inline(-1, hb_remove32, FALSE, NULL);
- gtk_icon_theme_add_builtin_icon("hb-remove", 32, pb);
-
- pb = gdk_pixbuf_new_from_inline(-1, hb_source32, FALSE, NULL);
- gtk_icon_theme_add_builtin_icon("hb-source", 32, pb);
-
- pb = gdk_pixbuf_new_from_inline(-1, hb_stop32, FALSE, NULL);
- gtk_icon_theme_add_builtin_icon("hb-stop", 32, pb);
-
- pb = gdk_pixbuf_new_from_inline(-1, hb_working0, FALSE, NULL);
- gtk_icon_theme_add_builtin_icon("hb-working0", 16, pb);
-
- pb = gdk_pixbuf_new_from_inline(-1, hb_working1, FALSE, NULL);
- gtk_icon_theme_add_builtin_icon("hb-working1", 16, pb);
-
- pb = gdk_pixbuf_new_from_inline(-1, hb_working2, FALSE, NULL);
- gtk_icon_theme_add_builtin_icon("hb-working2", 16, pb);
-
- pb = gdk_pixbuf_new_from_inline(-1, hb_working3, FALSE, NULL);
- gtk_icon_theme_add_builtin_icon("hb-working3", 16, pb);
-
- pb = gdk_pixbuf_new_from_inline(-1, hb_working4, FALSE, NULL);
- gtk_icon_theme_add_builtin_icon("hb-working4", 16, pb);
+ GHashTableIter iter;
+ gchar *name;
+ GValue *gval;
+
+ GValue *icons = ghb_resource_get("icons");
+ ghb_dict_iter_init(&iter, icons);
+ // middle (void*) cast prevents gcc warning "defreferencing type-punned
+ // pointer will break strict-aliasing rules"
+ while (g_hash_table_iter_next(
+ &iter, (gpointer*)(void*)&name, (gpointer*)(void*)&gval))
+ {
+ gint colorspace, bps, width, height, rowstride;
+ gboolean alpha;
+ ghb_rawdata_t *rd;
+ gint size;
+ GdkPixbuf *pb;
+
+ colorspace = ghb_value_int(ghb_dict_lookup(gval, "colorspace"));
+ alpha = ghb_value_boolean(ghb_dict_lookup(gval, "alpha"));
+ bps = ghb_value_int(ghb_dict_lookup(gval, "bps"));
+ width = ghb_value_int(ghb_dict_lookup(gval, "width"));
+ height = ghb_value_int(ghb_dict_lookup(gval, "height"));
+ rowstride = ghb_value_int(ghb_dict_lookup(gval, "rowstride"));
+ rd = g_value_get_boxed(ghb_dict_lookup(gval, "data"));
+ pb = gdk_pixbuf_new_from_data(
+ rd->data, colorspace, alpha, bps,
+ width, height, rowstride,
+ NULL, NULL);
+ size = gdk_pixbuf_get_height(pb);
+ gtk_icon_theme_add_builtin_icon(name, size, pb);
+ gdk_pixbuf_unref(pb);
+ }
+}