static void draw_stats_tree(void *psp) { stats_tree *st = (stats_tree *)psp; GString *s; s= stats_tree_format_as_str(st, ST_FORMAT_PLAIN, stats_tree_get_default_sort_col(st), stats_tree_is_default_sort_DESC(st)); printf("%s", s->str); g_string_free(s, TRUE); }
static void draw_gtk_tree(void *psp) { stats_tree *st = (stats_tree *)psp; stat_node *child; int count; gint sort_column = GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID; GtkSortType order = GTK_SORT_DESCENDING; for (count = 0; count<st->num_columns; count++) { gtk_tree_view_column_set_title(gtk_tree_view_get_column(GTK_TREE_VIEW(st->pr->tree),count), stats_tree_get_column_name(count)); } gtk_tree_sortable_get_sort_column_id (GTK_TREE_SORTABLE (st->pr->store), &sort_column, &order); gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (st->pr->store), GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID, GTK_SORT_DESCENDING); for (child = st->root.children; child; child = child->next ) { draw_gtk_node(child); if ( (!(child->st_flags&ST_FLG_DEF_NOEXPAND)) && child->pr->iter && st->pr->store ) { gtk_tree_view_expand_row(GTK_TREE_VIEW(st->pr->tree), gtk_tree_model_get_path(GTK_TREE_MODEL(st->pr->store),child->pr->iter), FALSE); } } if ((sort_column==GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID)|| (sort_column==GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID)) { sort_column= stats_tree_get_default_sort_col(st)+N_RESERVED_COL; order= stats_tree_is_default_sort_DESC(st)?GTK_SORT_DESCENDING:GTK_SORT_ASCENDING; } /* Only call this once the entire list is drawn - else Gtk seems */ /* to get sorting order wrong (sorting broken when new nodes are */ /* added after setting sort column.) Also for performance. */ gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (st->pr->store), sort_column, order); }