pidgin/gtkrequest.c

branch
cpw.rekkanoryo.icqxstatus
changeset 29749
a2ea4aa93b31
parent 29686
f9dee36112d0
parent 29304
6a941ac152e3
child 29750
0fd6122b1088
equal deleted inserted replaced
29730:770b86501b61 29749:a2ea4aa93b31
1062 GtkCellRenderer *renderer; 1062 GtkCellRenderer *renderer;
1063 GtkTreeSelection *sel; 1063 GtkTreeSelection *sel;
1064 GtkTreeViewColumn *column; 1064 GtkTreeViewColumn *column;
1065 GtkTreeIter iter; 1065 GtkTreeIter iter;
1066 GList *l; 1066 GList *l;
1067 GList *icons = NULL;
1068
1069 icons = purple_request_field_list_get_icons(field);
1067 1070
1068 /* Create the scrolled window */ 1071 /* Create the scrolled window */
1069 sw = gtk_scrolled_window_new(NULL, NULL); 1072 sw = gtk_scrolled_window_new(NULL, NULL);
1070 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), 1073 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
1071 GTK_POLICY_AUTOMATIC, 1074 GTK_POLICY_AUTOMATIC,
1073 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), 1076 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),
1074 GTK_SHADOW_IN); 1077 GTK_SHADOW_IN);
1075 gtk_widget_show(sw); 1078 gtk_widget_show(sw);
1076 1079
1077 /* Create the list store */ 1080 /* Create the list store */
1078 store = gtk_list_store_new(2, G_TYPE_POINTER, G_TYPE_STRING); 1081 if (icons)
1082 store = gtk_list_store_new(3, G_TYPE_POINTER, G_TYPE_STRING, GDK_TYPE_PIXBUF);
1083 else
1084 store = gtk_list_store_new(2, G_TYPE_POINTER, G_TYPE_STRING);
1079 1085
1080 /* Create the tree view */ 1086 /* Create the tree view */
1081 treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store)); 1087 treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
1082 g_object_unref(G_OBJECT(store)); 1088 g_object_unref(G_OBJECT(store));
1083 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), FALSE); 1089 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), FALSE);
1092 1098
1093 renderer = gtk_cell_renderer_text_new(); 1099 renderer = gtk_cell_renderer_text_new();
1094 gtk_tree_view_column_pack_start(column, renderer, TRUE); 1100 gtk_tree_view_column_pack_start(column, renderer, TRUE);
1095 gtk_tree_view_column_add_attribute(column, renderer, "text", 1); 1101 gtk_tree_view_column_add_attribute(column, renderer, "text", 1);
1096 1102
1103 if (icons)
1104 {
1105 renderer = gtk_cell_renderer_pixbuf_new();
1106 gtk_tree_view_column_pack_start(column, renderer, TRUE);
1107 gtk_tree_view_column_add_attribute(column, renderer, "pixbuf", 2);
1108
1109 gtk_widget_set_size_request(treeview, 200, 400);
1110 }
1111
1097 for (l = purple_request_field_list_get_items(field); l != NULL; l = l->next) 1112 for (l = purple_request_field_list_get_items(field); l != NULL; l = l->next)
1098 { 1113 {
1099 const char *text = (const char *)l->data; 1114 const char *text = (const char *)l->data;
1100 1115
1101 gtk_list_store_append(store, &iter); 1116 gtk_list_store_append(store, &iter);
1102 1117
1103 gtk_list_store_set(store, &iter, 1118 if (icons)
1119 {
1120 const char *icon_path = (const char *)icons->data;
1121 GdkPixbuf* pixbuf = NULL;
1122
1123 if (icon_path)
1124 pixbuf = gdk_pixbuf_new_from_file(icon_path, NULL);
1125
1126 gtk_list_store_set(store, &iter,
1127 0, purple_request_field_list_get_data(field, text),
1128 1, text,
1129 2, pixbuf,
1130 -1);
1131 icons = icons->next;
1132 }
1133 else
1134 gtk_list_store_set(store, &iter,
1104 0, purple_request_field_list_get_data(field, text), 1135 0, purple_request_field_list_get_data(field, text),
1105 1, text, 1136 1, text,
1106 -1); 1137 -1);
1107 1138
1108 if (purple_request_field_list_is_selected(field, text)) 1139 if (purple_request_field_list_is_selected(field, text))

mercurial