comparison pidgin/gtkrequest.c @ 29845:9a5d98ddca8d

propagate from branch 'im.pidgin.pidgin' (head 2ee32f4f1f50a3e3c9038487554b4cfa22507df0) to branch 'im.pidgin.cpw.rekkanoryo.icqxstatus' (head a9b19faa48d45e5536c6c2f66dd309f37f52bcce)
author Richard Laager <rlaager@wiktel.com>
date Wed, 26 Nov 2008 22:11:44 +0000
parents 245f3432a5ab
children 93cb9f54df45
comparison
equal deleted inserted replaced
24488:a6a6a6c19058 29845:9a5d98ddca8d
994 GtkCellRenderer *renderer; 994 GtkCellRenderer *renderer;
995 GtkTreeSelection *sel; 995 GtkTreeSelection *sel;
996 GtkTreeViewColumn *column; 996 GtkTreeViewColumn *column;
997 GtkTreeIter iter; 997 GtkTreeIter iter;
998 GList *l; 998 GList *l;
999 GList *icons = NULL;
1000
1001 icons = purple_request_field_list_get_icons(field);
999 1002
1000 /* Create the scrolled window */ 1003 /* Create the scrolled window */
1001 sw = gtk_scrolled_window_new(NULL, NULL); 1004 sw = gtk_scrolled_window_new(NULL, NULL);
1002 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), 1005 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
1003 GTK_POLICY_AUTOMATIC, 1006 GTK_POLICY_AUTOMATIC,
1005 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), 1008 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
1006 GTK_SHADOW_IN); 1009 GTK_SHADOW_IN);
1007 gtk_widget_show(sw); 1010 gtk_widget_show(sw);
1008 1011
1009 /* Create the list store */ 1012 /* Create the list store */
1010 store = gtk_list_store_new(2, G_TYPE_POINTER, G_TYPE_STRING); 1013 if (icons)
1014 store = gtk_list_store_new(3, G_TYPE_POINTER, G_TYPE_STRING, GDK_TYPE_PIXBUF);
1015 else
1016 store = gtk_list_store_new(2, G_TYPE_POINTER, G_TYPE_STRING);
1011 1017
1012 /* Create the tree view */ 1018 /* Create the tree view */
1013 treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store)); 1019 treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
1014 g_object_unref(G_OBJECT(store)); 1020 g_object_unref(G_OBJECT(store));
1015 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), FALSE); 1021 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), FALSE);
1024 1030
1025 renderer = gtk_cell_renderer_text_new(); 1031 renderer = gtk_cell_renderer_text_new();
1026 gtk_tree_view_column_pack_start(column, renderer, TRUE); 1032 gtk_tree_view_column_pack_start(column, renderer, TRUE);
1027 gtk_tree_view_column_add_attribute(column, renderer, "text", 1); 1033 gtk_tree_view_column_add_attribute(column, renderer, "text", 1);
1028 1034
1035 if (icons)
1036 {
1037 renderer = gtk_cell_renderer_pixbuf_new();
1038 gtk_tree_view_column_pack_start(column, renderer, TRUE);
1039 gtk_tree_view_column_add_attribute(column, renderer, "pixbuf", 2);
1040
1041 gtk_widget_set_size_request(treeview, 200, 400);
1042 }
1043
1029 for (l = purple_request_field_list_get_items(field); l != NULL; l = l->next) 1044 for (l = purple_request_field_list_get_items(field); l != NULL; l = l->next)
1030 { 1045 {
1031 const char *text = (const char *)l->data; 1046 const char *text = (const char *)l->data;
1032 1047
1033 gtk_list_store_append(store, &iter); 1048 gtk_list_store_append(store, &iter);
1034 1049
1035 gtk_list_store_set(store, &iter, 1050 if (icons)
1051 {
1052 const char *icon_path = (const char *)icons->data;
1053 char* filename;
1054 GdkPixbuf* pixbuf = NULL;
1055
1056 if (icon_path)
1057 {
1058 filename = g_build_filename(DATADIR, icon_path, NULL);
1059 pixbuf = gdk_pixbuf_new_from_file(filename, NULL);
1060 g_free(filename);
1061 }
1062
1063 gtk_list_store_set(store, &iter,
1064 0, purple_request_field_list_get_data(field, text),
1065 1, text,
1066 2, pixbuf,
1067 -1);
1068 icons = icons->next;
1069 }
1070 else
1071 gtk_list_store_set(store, &iter,
1036 0, purple_request_field_list_get_data(field, text), 1072 0, purple_request_field_list_get_data(field, text),
1037 1, text, 1073 1, text,
1038 -1); 1074 -1);
1039 1075
1040 if (purple_request_field_list_is_selected(field, text)) 1076 if (purple_request_field_list_is_selected(field, text))