root/usr/src/tools/smatch/src/ast-view.c

#include <stdlib.h>
#include "ast-model.h"
#include "ast-inspect.h"
#include "ast-view.h"

static GtkWidget *
create_view_and_model (void *ptr)
{
        GtkTreeViewColumn   *text;
        GtkCellRenderer *renderer;
        AstNode *root;
        GtkWidget *view;

        root = ast_new(NULL, 0, "", ptr, inspect_symbol_list);

        view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(root));

        g_object_unref(root); /* destroy store automatically with view */

        renderer = gtk_cell_renderer_text_new();
        text = gtk_tree_view_column_new_with_attributes("Node", renderer,
                                                       "text", AST_COL_NAME,
                                                       NULL);
        gtk_tree_view_append_column(GTK_TREE_VIEW(view), text);

        return view;
}

void
treeview_main (struct symbol_list *syms)
{
        GtkWidget *window, *view, *scrollwin;

        window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        gtk_window_set_default_size (GTK_WINDOW(window), 600, 800);
        g_signal_connect(window, "delete_event", gtk_main_quit, NULL);

        scrollwin = gtk_scrolled_window_new(NULL,NULL);

        view = create_view_and_model(syms);

        gtk_container_add(GTK_CONTAINER(scrollwin), view);
        gtk_container_add(GTK_CONTAINER(window), scrollwin);

        gtk_widget_show_all(window);

        gtk_main();
}