1*1f5207b7SJohn Levon
2*1f5207b7SJohn Levon #include <stdlib.h>
3*1f5207b7SJohn Levon #include "ast-model.h"
4*1f5207b7SJohn Levon #include "ast-inspect.h"
5*1f5207b7SJohn Levon #include "ast-view.h"
6*1f5207b7SJohn Levon
7*1f5207b7SJohn Levon static GtkWidget *
create_view_and_model(void * ptr)8*1f5207b7SJohn Levon create_view_and_model (void *ptr)
9*1f5207b7SJohn Levon {
10*1f5207b7SJohn Levon GtkTreeViewColumn *text;
11*1f5207b7SJohn Levon GtkCellRenderer *renderer;
12*1f5207b7SJohn Levon AstNode *root;
13*1f5207b7SJohn Levon GtkWidget *view;
14*1f5207b7SJohn Levon
15*1f5207b7SJohn Levon root = ast_new(NULL, 0, "", ptr, inspect_symbol_list);
16*1f5207b7SJohn Levon
17*1f5207b7SJohn Levon view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(root));
18*1f5207b7SJohn Levon
19*1f5207b7SJohn Levon g_object_unref(root); /* destroy store automatically with view */
20*1f5207b7SJohn Levon
21*1f5207b7SJohn Levon renderer = gtk_cell_renderer_text_new();
22*1f5207b7SJohn Levon text = gtk_tree_view_column_new_with_attributes("Node", renderer,
23*1f5207b7SJohn Levon "text", AST_COL_NAME,
24*1f5207b7SJohn Levon NULL);
25*1f5207b7SJohn Levon gtk_tree_view_append_column(GTK_TREE_VIEW(view), text);
26*1f5207b7SJohn Levon
27*1f5207b7SJohn Levon return view;
28*1f5207b7SJohn Levon }
29*1f5207b7SJohn Levon
30*1f5207b7SJohn Levon void
treeview_main(struct symbol_list * syms)31*1f5207b7SJohn Levon treeview_main (struct symbol_list *syms)
32*1f5207b7SJohn Levon {
33*1f5207b7SJohn Levon GtkWidget *window, *view, *scrollwin;
34*1f5207b7SJohn Levon
35*1f5207b7SJohn Levon window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
36*1f5207b7SJohn Levon gtk_window_set_default_size (GTK_WINDOW(window), 600, 800);
37*1f5207b7SJohn Levon g_signal_connect(window, "delete_event", gtk_main_quit, NULL);
38*1f5207b7SJohn Levon
39*1f5207b7SJohn Levon scrollwin = gtk_scrolled_window_new(NULL,NULL);
40*1f5207b7SJohn Levon
41*1f5207b7SJohn Levon view = create_view_and_model(syms);
42*1f5207b7SJohn Levon
43*1f5207b7SJohn Levon gtk_container_add(GTK_CONTAINER(scrollwin), view);
44*1f5207b7SJohn Levon gtk_container_add(GTK_CONTAINER(window), scrollwin);
45*1f5207b7SJohn Levon
46*1f5207b7SJohn Levon gtk_widget_show_all(window);
47*1f5207b7SJohn Levon
48*1f5207b7SJohn Levon gtk_main();
49*1f5207b7SJohn Levon }
50