| 993 GtkListStore *store; |
993 GtkListStore *store; |
| 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, *ic = NULL; |
| |
999 GdkPixbuf* pixbuf; |
| |
1000 gboolean icon = purple_request_field_list_get_pixbuf(field); |
| 999 |
1001 |
| 1000 /* Create the scrolled window */ |
1002 /* Create the scrolled window */ |
| 1001 sw = gtk_scrolled_window_new(NULL, NULL); |
1003 sw = gtk_scrolled_window_new(NULL, NULL); |
| 1002 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), |
1004 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), |
| 1003 GTK_POLICY_AUTOMATIC, |
1005 GTK_POLICY_AUTOMATIC, |
| 1005 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), |
1007 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), |
| 1006 GTK_SHADOW_IN); |
1008 GTK_SHADOW_IN); |
| 1007 gtk_widget_show(sw); |
1009 gtk_widget_show(sw); |
| 1008 |
1010 |
| 1009 /* Create the list store */ |
1011 /* Create the list store */ |
| 1010 store = gtk_list_store_new(2, G_TYPE_POINTER, G_TYPE_STRING); |
1012 if (icon) |
| |
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); |
| 1011 |
1016 |
| 1012 /* Create the tree view */ |
1017 /* Create the tree view */ |
| 1013 treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store)); |
1018 treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store)); |
| 1014 g_object_unref(G_OBJECT(store)); |
1019 g_object_unref(G_OBJECT(store)); |
| 1015 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), FALSE); |
1020 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), FALSE); |
| 1024 |
1029 |
| 1025 renderer = gtk_cell_renderer_text_new(); |
1030 renderer = gtk_cell_renderer_text_new(); |
| 1026 gtk_tree_view_column_pack_start(column, renderer, TRUE); |
1031 gtk_tree_view_column_pack_start(column, renderer, TRUE); |
| 1027 gtk_tree_view_column_add_attribute(column, renderer, "text", 1); |
1032 gtk_tree_view_column_add_attribute(column, renderer, "text", 1); |
| 1028 |
1033 |
| |
1034 if(icon == TRUE) |
| |
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 |
| |
1043 if(icon == TRUE) |
| |
1044 ic = purple_request_field_list_get_icons(field); |
| |
1045 |
| 1029 for (l = purple_request_field_list_get_items(field); l != NULL; l = l->next) |
1046 for (l = purple_request_field_list_get_items(field); l != NULL; l = l->next) |
| 1030 { |
1047 { |
| 1031 const char *text = (const char *)l->data; |
1048 const char *text = (const char *)l->data; |
| 1032 |
1049 |
| 1033 gtk_list_store_append(store, &iter); |
1050 gtk_list_store_append(store, &iter); |
| 1034 |
1051 |
| 1035 gtk_list_store_set(store, &iter, |
1052 if(icon == TRUE) |
| |
1053 { |
| |
1054 const char *icon_path = (const char *)ic->data; |
| |
1055 char* filename = g_build_filename(DATADIR, icon_path, NULL); |
| |
1056 |
| |
1057 pixbuf = gdk_pixbuf_new_from_file(filename, NULL); |
| |
1058 |
| |
1059 g_free(filename); |
| |
1060 |
| |
1061 gtk_list_store_set(store, &iter, |
| |
1062 0, purple_request_field_list_get_data(field, text), |
| |
1063 1, text, |
| |
1064 2, pixbuf, |
| |
1065 -1); |
| |
1066 ic = ic->next; |
| |
1067 } |
| |
1068 else |
| |
1069 gtk_list_store_set(store, &iter, |
| 1036 0, purple_request_field_list_get_data(field, text), |
1070 0, purple_request_field_list_get_data(field, text), |
| 1037 1, text, |
1071 1, text, |
| 1038 -1); |
1072 -1); |
| 1039 |
1073 |
| 1040 if (purple_request_field_list_is_selected(field, text)) |
1074 if (purple_request_field_list_is_selected(field, text)) |