pidgin/gtkrequest.c

branch
cpw.rekkanoryo.icqxstatus
changeset 24928
04d4108346e6
parent 24816
bd870d9ff0ab
parent 24927
953887517fb7
child 26657
1067482b6de1
equal deleted inserted replaced
24840:515332720e8d 24928:04d4108346e6
993 GtkCellRenderer *renderer; 993 GtkCellRenderer *renderer;
994 GtkTreeSelection *sel; 994 GtkTreeSelection *sel;
995 GtkTreeViewColumn *column; 995 GtkTreeViewColumn *column;
996 GtkTreeIter iter; 996 GtkTreeIter iter;
997 GList *l; 997 GList *l;
998 GList *icons = NULL;
999
1000 icons = purple_request_field_list_get_icons(field);
998 1001
999 /* Create the scrolled window */ 1002 /* Create the scrolled window */
1000 sw = gtk_scrolled_window_new(NULL, NULL); 1003 sw = gtk_scrolled_window_new(NULL, NULL);
1001 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), 1004 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
1002 GTK_POLICY_AUTOMATIC, 1005 GTK_POLICY_AUTOMATIC,
1004 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), 1007 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
1005 GTK_SHADOW_IN); 1008 GTK_SHADOW_IN);
1006 gtk_widget_show(sw); 1009 gtk_widget_show(sw);
1007 1010
1008 /* Create the list store */ 1011 /* Create the list store */
1009 store = gtk_list_store_new(2, G_TYPE_POINTER, G_TYPE_STRING); 1012 if (icons)
1013 store = gtk_list_store_new(3, G_TYPE_POINTER, G_TYPE_STRING, GDK_TYPE_PIXBUF);
1014 else
1015 store = gtk_list_store_new(2, G_TYPE_POINTER, G_TYPE_STRING);
1010 1016
1011 /* Create the tree view */ 1017 /* Create the tree view */
1012 treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store)); 1018 treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
1013 g_object_unref(G_OBJECT(store)); 1019 g_object_unref(G_OBJECT(store));
1014 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), FALSE); 1020 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), FALSE);
1023 1029
1024 renderer = gtk_cell_renderer_text_new(); 1030 renderer = gtk_cell_renderer_text_new();
1025 gtk_tree_view_column_pack_start(column, renderer, TRUE); 1031 gtk_tree_view_column_pack_start(column, renderer, TRUE);
1026 gtk_tree_view_column_add_attribute(column, renderer, "text", 1); 1032 gtk_tree_view_column_add_attribute(column, renderer, "text", 1);
1027 1033
1034 if (icons)
1035 {
1036 renderer = gtk_cell_renderer_pixbuf_new();
1037 gtk_tree_view_column_pack_start(column, renderer, TRUE);
1038 gtk_tree_view_column_add_attribute(column, renderer, "pixbuf", 2);
1039
1040 gtk_widget_set_size_request(treeview, 200, 400);
1041 }
1042
1028 for (l = purple_request_field_list_get_items(field); l != NULL; l = l->next) 1043 for (l = purple_request_field_list_get_items(field); l != NULL; l = l->next)
1029 { 1044 {
1030 const char *text = (const char *)l->data; 1045 const char *text = (const char *)l->data;
1031 1046
1032 gtk_list_store_append(store, &iter); 1047 gtk_list_store_append(store, &iter);
1033 1048
1034 gtk_list_store_set(store, &iter, 1049 if (icons)
1050 {
1051 const char *icon_path = (const char *)icons->data;
1052 GdkPixbuf* pixbuf = NULL;
1053
1054 if (icon_path)
1055 pixbuf = gdk_pixbuf_new_from_file(icon_path, NULL);
1056
1057 gtk_list_store_set(store, &iter,
1058 0, purple_request_field_list_get_data(field, text),
1059 1, text,
1060 2, pixbuf,
1061 -1);
1062 icons = icons->next;
1063 }
1064 else
1065 gtk_list_store_set(store, &iter,
1035 0, purple_request_field_list_get_data(field, text), 1066 0, purple_request_field_list_get_data(field, text),
1036 1, text, 1067 1, text,
1037 -1); 1068 -1);
1038 1069
1039 if (purple_request_field_list_is_selected(field, text)) 1070 if (purple_request_field_list_is_selected(field, text))

mercurial