| 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)) |