#include static void fill_model (GtkListStore *store) { GdkPixbuf *pixbuf; int i; char *str; GtkTreeIter iter; pixbuf = gdk_pixbuf_new_from_file ("gnome-textfile.png", NULL); for (i = 0; i < 20; i++) { str = g_strdup_printf ("Icon %d", i); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, 0, pixbuf, 1, 5*i, 2, str, -1); g_free (str); } } int main (int argc, char *argv[]) { GtkWidget *window, *box, *iconview, *menubar; GtkWidget *scrolledwin, *menuitem; GtkListStore *store; GtkCellRenderer *renderer; gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); box = gtk_hbox_new (FALSE, 0); scrolledwin = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwin), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); menubar = gtk_menu_bar_new (); gtk_menu_bar_set_pack_direction (GTK_MENU_BAR (menubar), GTK_PACK_DIRECTION_BTT); gtk_menu_bar_set_child_pack_direction (GTK_MENU_BAR (menubar), GTK_PACK_DIRECTION_BTT); iconview = gtk_icon_view_new (); gtk_icon_view_set_selection_mode (GTK_ICON_VIEW (iconview), GTK_SELECTION_MULTIPLE); gtk_container_add (GTK_CONTAINER (window), box); gtk_box_pack_start (GTK_BOX (box), menubar, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX (box), scrolledwin, TRUE, TRUE, 0); gtk_container_add (GTK_CONTAINER (scrolledwin), iconview); menuitem = gtk_image_menu_item_new_with_label ("One"); gtk_menu_shell_append (GTK_MENU_SHELL (menubar), menuitem); gtk_label_set_angle (GTK_LABEL (GTK_BIN (menuitem)->child), 90); gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), gtk_menu_new ()); menuitem = gtk_image_menu_item_new_with_label ("Two"); gtk_menu_shell_append (GTK_MENU_SHELL (menubar), menuitem); gtk_label_set_angle (GTK_LABEL (GTK_BIN (menuitem)->child), 90); gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), gtk_menu_new ()); menuitem = gtk_image_menu_item_new_with_label ("Three"); gtk_menu_shell_append (GTK_MENU_SHELL (menubar), menuitem); gtk_label_set_angle (GTK_LABEL (GTK_BIN (menuitem)->child), 90); gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem), gtk_menu_new ()); store = gtk_list_store_new (3, GDK_TYPE_PIXBUF, G_TYPE_INT, G_TYPE_STRING); fill_model (store); gtk_icon_view_set_model (GTK_ICON_VIEW (iconview), GTK_TREE_MODEL (store)); renderer = gtk_cell_renderer_pixbuf_new (); g_object_set (renderer, "follow-state", TRUE, NULL); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (iconview), renderer, FALSE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (iconview), renderer, "pixbuf", 0, NULL); renderer = gtk_cell_renderer_progress_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (iconview), renderer, FALSE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (iconview), renderer, "value", 1, NULL); renderer = gtk_cell_renderer_text_new (); g_object_set (renderer, "editable", TRUE, NULL); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (iconview), renderer, FALSE); gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (iconview), renderer, "text", 2, NULL); gtk_widget_show_all (window); gtk_main (); return 0; }