411 REFERENCE · Wikibooks
GTK+ By Example/Tree View
Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.
This chapter has been based on this work
Chapter Sections
Lists and Trees: the GtkTreeView Widget
Components: Model, Renderer, Column, View
GtkTreeModels for Data Storage: GtkListStore and GtkTreeStore
Creating a Tree View
Mapping Data to the Screen: GtkTreeViewColumn and GtkCellRenderer
Selections, Double-Clicks and Context Menus
Sorting
Editable Cells
Miscellaneous
Drag'n'Drop (DnD) **** needs revision ***
Writing Custom Models
Writing Custom Cell Renderers
Other Resources
Original License (Tree View)
Copyright (c) 2003-2004 Tim-Philipp Müller <tim at centricular dot net>
This tutorial may be redistributed and modified freely in any form, as long as all authors are given due credit for their work and all non-trivial changes by third parties are clearly marked as such either within the document (e.g. in a revision history), or at an external and publicly accessible place that is referred to in the document (such as a CVS/SVN/git repository).
Original Version Credits
Thanks to Axel C. for proof-reading the first drafts, for many suggestions, and for introducing me to the tree view widget in the first place (back then when I was still convinced that porting to Gtk+-2.x was unnecessary, Gtk+-1.2 applications looked nice, and Aristotle had already said everything about politics that needs to be said).
Harring Figueiredo shed some light on how GtkListStore and GtkTreeStore deal with pixbufs.
Ken Rastatter suggested some additional topics (with complete references even).
Both Andrej Prsa and Alan B. Canon sent me a couple of suggestions, and 'taf2', Massimo Mangoni and others spotted some typos.
Many thanks to all of them, and of course also to kris and everyone else in #gtk+.
Original Revision History
14.3. Revision History
5th January 2008
Update some broken links; remove references to external cell renderers that have been obsoleted by Gtk adding such renderers.
5th June 2005
Remove unnecessary col = gtk_tree_view_column_new() im hello world code (leftover from migration to convenience functions).
3rd February 2005
Point out that GObjects such as GdkPixbufs retrieved with gtk_tree_model_get() need to be g_object_unref()'ed after use, as gtk_tree_model_get() adds a reference.
Added explicit (gint) event->x double to int conversion to code snippet using gtk_tree_view_get_path_at_pos() to avoid compiler warnings.
9th September 2004
Fixed another mistake in tree path explanation: text did not correspond picture (s/movie clips/movie trailers/); (thanks to Benjamin Brandt for spotting it).
6th August 2004
Fixed mistake in tree path explanation (s/4th/5th/) (thanks to both Andrew Kirillov and Benjamin Brandt for spotting it).
30th April 2004
Added Hello World
31st March 2004
Fixed fatal typo in custom list code: g_assert() in custom_list_init() should be ==, not != (spotted by mmc).
Added link to Owen Taylor's mail on the GtkTreeView Drag'n'Drop API.
24th January 2004
Fixed typo in code example (remove n-th row example) (Thanks to roel for spotting it).
Changed 'Context menus' section title
19th January 2004
Expanded section on GtkTreeRowReferences, and on removing multiple rows.
8th January 2004
Added tiny section on Glade and treeviews
Added more detail to the section describing GtkTreePath, GtkTreeIter et al.
Reformatted document structure: instead of one single chapter with lots of sections, have multiple chapters (this tutorial is way to big to become part of the Gtk+ tutorial anyway); enumerate chapters and sections.
Expanded the section on tree view columns and cell renderers, with help of two diagrams by Owen Taylor (from the GUADEC 2003 Gtk+ tutorial slides).
10th December 2003
Added more information about how to remove a single row, or more specifically, the n-th row of a list store
Added a short example about how to pack icons into the tree view.
28th October 2003
Editable cells will work fine even if selection is set to GTK_SELECTION_NONE. Removed sentences that say otherwise.
23rd October 2003
fix 'jumpy' selections in custom model GtkTreeSortable interface implementation. gtk_tree_model_rows_reordered() does not seem to work like the API reference implies (see bug #124790)
added section about how to get the cell renderer a button click happened on
added section about editable cells with spin buttons (and a CellRendererSpin implementation to the examples)
10th October 2003
make custom model GtkTreeSortable implementation emit "sort-column-changed" signal when sortid is changed
fixed code typo in selection function section; added a paragraph about rule hint to 'make whole row coloured or bold' section
7th October 2003
Reformatted source code to make it fit on pages when generating ps/pdf output
Added link to PDF and docbook XML versions.