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