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