/** xgtkctree.c **/ #include gint eventDelete(GtkWidget *widget, GdkEvent *event,gpointer data); gint eventDestroy(GtkWidget *widget, GdkEvent *event,gpointer data); static GtkWidget *makeWidget(); static GtkCTreeNode *makeNode(GtkWidget *widget, GtkCTreeNode *parent,GtkCTreeNode *sibling, gint level,gint count); int main(int argc,char *argv[]) { GtkWidget *app; GtkWidget *widget; gnome_init("xgtkctree","1.0",argc,argv); app = gnome_app_new("xgtkctree","GtkCTree"); gtk_container_set_border_width(GTK_CONTAINER(app),20); gtk_signal_connect(GTK_OBJECT(app),"delete_event", GTK_SIGNAL_FUNC(eventDelete),NULL); gtk_signal_connect(GTK_OBJECT(app),"destroy", GTK_SIGNAL_FUNC(eventDestroy),NULL); widget = makeWidget(); gnome_app_set_contents(GNOME_APP(app),widget); gtk_widget_show_all(app); gtk_main(); exit(0); } gint eventDelete(GtkWidget *widget, GdkEvent *event,gpointer data) { return(FALSE); } gint eventDestroy(GtkWidget *widget, GdkEvent *event,gpointer data) { gtk_main_quit(); return(0); } static GtkWidget *makeWidget() { GtkCTreeNode *node1_1; GtkCTreeNode *node1_3; GtkWidget *widget; static gchar *titles[] = { "First Column", "Second Column" }; widget = gtk_ctree_new_with_titles(2,0,titles); node1_1 = makeNode(widget,NULL,NULL,1,1); makeNode(widget,NULL,node1_1,1,2); node1_3 = makeNode(widget,NULL,node1_1,1,3); makeNode(widget,NULL,node1_1,1,4); makeNode(widget,node1_1,NULL,2,1); makeNode(widget,node1_1,NULL,2,2); makeNode(widget,node1_3,NULL,2,1); makeNode(widget,node1_3,NULL,2,2); return(widget); } static GtkCTreeNode *makeNode(GtkWidget *widget, GtkCTreeNode *parent,GtkCTreeNode *sibling, gint level,gint count) { GtkCTreeNode *node; gchar *text[2]; gchar line1[20]; gchar line2[20]; text[0] = line1; text[1] = line2; sprintf(line1,"Level %d",level); sprintf(line2,"Number %d",count); node = gtk_ctree_insert_node(GTK_CTREE(widget), parent, sibling, text, 0, NULL,NULL,NULL,NULL, FALSE,TRUE); return(node); }