comparison pidgin/gtkrequest.c @ 29853:c3b735f8f490

propagate from branch 'im.pidgin.pidgin' (head 226a30da7a9fe3b828a1fe564797b3388e6159bc) to branch 'im.pidgin.cpw.rekkanoryo.icqxstatus' (head b7c2ff532b70196eedf48de0343d06eb45e90f1f)
author Marcus Lundblad <ml@update.uu.se>
date Sun, 07 Feb 2010 19:40:49 +0000
parents a538cb73f897
children 185677f47825
comparison
equal deleted inserted replaced
29389:584ef95f0e77 29853:c3b735f8f490
1064 GtkCellRenderer *renderer; 1064 GtkCellRenderer *renderer;
1065 GtkTreeSelection *sel; 1065 GtkTreeSelection *sel;
1066 GtkTreeViewColumn *column; 1066 GtkTreeViewColumn *column;
1067 GtkTreeIter iter; 1067 GtkTreeIter iter;
1068 GList *l; 1068 GList *l;
1069 GList *icons = NULL;
1070
1071 icons = purple_request_field_list_get_icons(field);
1069 1072
1070 /* Create the scrolled window */ 1073 /* Create the scrolled window */
1071 sw = gtk_scrolled_window_new(NULL, NULL); 1074 sw = gtk_scrolled_window_new(NULL, NULL);
1072 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), 1075 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
1073 GTK_POLICY_AUTOMATIC, 1076 GTK_POLICY_AUTOMATIC,
1075 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), 1078 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
1076 GTK_SHADOW_IN); 1079 GTK_SHADOW_IN);
1077 gtk_widget_show(sw); 1080 gtk_widget_show(sw);
1078 1081
1079 /* Create the list store */ 1082 /* Create the list store */
1080 store = gtk_list_store_new(2, G_TYPE_POINTER, G_TYPE_STRING); 1083 if (icons)
1084 store = gtk_list_store_new(3, G_TYPE_POINTER, G_TYPE_STRING, GDK_TYPE_PIXBUF);
1085 else
1086 store = gtk_list_store_new(2, G_TYPE_POINTER, G_TYPE_STRING);
1081 1087
1082 /* Create the tree view */ 1088 /* Create the tree view */
1083 treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store)); 1089 treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
1084 g_object_unref(G_OBJECT(store)); 1090 g_object_unref(G_OBJECT(store));
1085 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), FALSE); 1091 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), FALSE);
1094 1100
1095 renderer = gtk_cell_renderer_text_new(); 1101 renderer = gtk_cell_renderer_text_new();
1096 gtk_tree_view_column_pack_start(column, renderer, TRUE); 1102 gtk_tree_view_column_pack_start(column, renderer, TRUE);
1097 gtk_tree_view_column_add_attribute(column, renderer, "text", 1); 1103 gtk_tree_view_column_add_attribute(column, renderer, "text", 1);
1098 1104
1105 if (icons)
1106 {
1107 renderer = gtk_cell_renderer_pixbuf_new();
1108 gtk_tree_view_column_pack_start(column, renderer, TRUE);
1109 gtk_tree_view_column_add_attribute(column, renderer, "pixbuf", 2);
1110
1111 gtk_widget_set_size_request(treeview, 200, 400);
1112 }
1113
1099 for (l = purple_request_field_list_get_items(field); l != NULL; l = l->next) 1114 for (l = purple_request_field_list_get_items(field); l != NULL; l = l->next)
1100 { 1115 {
1101 const char *text = (const char *)l->data; 1116 const char *text = (const char *)l->data;
1102 1117
1103 gtk_list_store_append(store, &iter); 1118 gtk_list_store_append(store, &iter);
1104 1119
1105 gtk_list_store_set(store, &iter, 1120 if (icons)
1121 {
1122 const char *icon_path = (const char *)icons->data;
1123 GdkPixbuf* pixbuf = NULL;
1124
1125 if (icon_path)
1126 pixbuf = gdk_pixbuf_new_from_file(icon_path, NULL);
1127
1128 gtk_list_store_set(store, &iter,
1129 0, purple_request_field_list_get_data(field, text),
1130 1, text,
1131 2, pixbuf,
1132 -1);
1133 icons = icons->next;
1134 }
1135 else
1136 gtk_list_store_set(store, &iter,
1106 0, purple_request_field_list_get_data(field, text), 1137 0, purple_request_field_list_get_data(field, text),
1107 1, text, 1138 1, text,
1108 -1); 1139 -1);
1109 1140
1110 if (purple_request_field_list_is_selected(field, text)) 1141 if (purple_request_field_list_is_selected(field, text))