static GtkWidget * create_emblem_widget (CajaEmblemSidebar *emblem_sidebar, const char *name) { GtkWidget *ret; const char *display_name; char *keyword; GdkPixbuf *pixbuf; CajaIconInfo *info; info = caja_icon_info_lookup_from_name (name, CAJA_ICON_SIZE_STANDARD); pixbuf = caja_icon_info_get_pixbuf_at_size (info, CAJA_ICON_SIZE_STANDARD); display_name = caja_icon_info_get_display_name (info); keyword = caja_emblem_get_keyword_from_icon_name (name); if (display_name == NULL) { display_name = keyword; } ret = create_emblem_widget_with_pixbuf (emblem_sidebar, keyword, display_name, pixbuf); g_free (keyword); g_object_unref (info); return ret; }
static void nautilus_emblem_sidebar_populate (NautilusEmblemSidebar *emblem_sidebar) { GList *icons, *l, *widgets; GtkWidget *emblem_widget; char *name; char *path; GdkPixbuf *erase_pixbuf; erase_pixbuf = NULL; path = nautilus_pixmap_file ("erase.png"); if (path != NULL) { erase_pixbuf = gdk_pixbuf_new_from_file (path, NULL); } g_free (path); if (erase_pixbuf != NULL) { emblem_widget = create_emblem_widget_with_pixbuf (emblem_sidebar, ERASE_EMBLEM_KEYWORD, _("Erase"), erase_pixbuf); gtk_container_add (GTK_CONTAINER (emblem_sidebar->details->emblems_table), emblem_widget); } icons = nautilus_emblem_list_available (); l = icons; widgets = NULL; while (l != NULL) { name = (char *)l->data; l = l->next; if (!nautilus_emblem_should_show_in_list (name)) { continue; } emblem_widget = create_emblem_widget (emblem_sidebar, name); widgets = g_list_prepend (widgets, emblem_widget); } eel_g_list_free_deep (icons); /* sort the emblems by display name */ widgets = g_list_sort (widgets, emblem_widget_sort_func); l = widgets; while (l != NULL) { gtk_container_add (GTK_CONTAINER (emblem_sidebar->details->emblems_table), l->data); l = l->next; } g_list_free (widgets); gtk_widget_show_all (emblem_sidebar->details->emblems_table); }