GTK+/Gnome Object Hierarchy

Table of Contents
Hierarchy Summary
GtkObject
Widgets
Canvas Items
Miscellaneous Objects

This appendix is a quick tour of the GTK+ and Gnome object hierarchy. It includes GtkObject and all subclasses from both libraries, a brief description of each, and the header files the objects are found in. It also includes screen shots of widgets, to help you find the correct widget for a given task. The testgtk and test-gnome programs that come with the GTK+ and Gnome libraries are also a good way to find widgets; many of the screenshots in this appendix are from those programs.

The specific header file containing each object is listed; however, all GTK+ header files can be included with the gtk/gtk.h convenience header. All GTK+ and Gnome headers can be included with the gnome.h header.

Some objects are described as "abstract base classes"---this means that only the subclasses of the object can be instantiated, but all of the subclasses can be manipulated through the base class's interface.

As a general rule, you should try to use the most specific object possible. That is, you could use GtkWindow for your main application window, but GnomeApp is a better choice; you could roll your own about dialog from GnomeDialog, but GnomeAbout is a better choice. This maximizes UI consistency and minimizes your effort.

Both GTK+ and Gnome come with "test" programs, called testgtk and test-gnome, respectively. These programs are used to test the widgets and other features in each library. They're also an excellent source of sample code, and a good way to browse the available widgets and find the one you need.

Hierarchy Summary


GtkBin
 |
 +GtkButton
   | 
   +GnomeColorPicker
   |
   +GnomeFontPicker
   |
   +GnomeHRef
   |
   +GtkToggleButton 
   |
   +GtkOptionMenu

This would be for GtkButton. The parent of the object (if any) is shown, then the object itself (possibly highlighted or in bold), then the immediate children of the object, if any. The second element that might be nice: some of the objects are "immature" or "unstable", which is a sort of mild warning suggesting to programmers that they may not want to use the object. It might be nice to have some sort of icon or margin text used to mark those objects.


 GtkObject
  |
  +GtkWidget
  | |
  | +GtkContainer
  | | |
  | | +GtkBin
  | | | |
  | | | +GtkWindow
  | | | | |
  | | | | +GnomeDialog
  | | | | | |
  | | | | | +GnomeAbout
  | | | | | |
  | | | | | +GnomeMessageBox
  | | | | | |
  | | | | | +GnomePropertyBox
  | | | | | |
  | | | | | `GnomeScores
  | | | | |
  | | | | +GnomeApp
  | | | | |
  | | | | +GtkDialog
  | | | | | |
  | | | | | +GnomeFontSelector
  | | | | | |
  | | | | | `GtkInputDialog
  | | | | |
  | | | | +GtkColorSelectionDialog
  | | | | |
  | | | | +GtkFileSelection
  | | | | |
  | | | | +GtkFontSelectionDialog
  | | | | |
  | | | | `GtkPlug
  | | | |
  | | | +GtkButton
  | | | | |
  | | | | +GnomeColorPicker
  | | | | |
  | | | | +GnomeFontPicker
  | | | | |
  | | | | +GnomeHRef
  | | | | |
  | | | | +GtkToggleButton
  | | | | | |
  | | | | | `GtkCheckButton
  | | | | |   |
  | | | | |   `GtkRadioButton
  | | | | |
  | | | | `GtkOptionMenu
  | | | |                      
  | | | +GnomeDockItem
  | | | |
  | | | +GtkAlignment
  | | | |
  | | | +GtkFrame
  | | | | |
  | | | | `GtkAspectFrame
  | | | |
  | | | +GtkItem
  | | | | |
  | | | | +GtkMenuItem
  | | | | | |
  | | | | | +GtkCheckMenuItem
  | | | | | | |
  | | | | | | `GtkRadioMenuItem
  | | | | | |
  | | | | | +GtkPixmapMenuItem
  | | | | | |
  | | | | | `GtkTearoffMenuItem
  | | | | |
  | | | | +GtkListItem
  | | | | |
  | | | | `GtkTreeItem
  | | | |
  | | | +GtkEventBox
  | | | |
  | | | +GtkHandleBox
  | | | |
  | | | +GtkScrolledWindow
  | | | |
  | | | `GtkViewport
  | | |
  | | +GtkBox
  | | | |
  | | | +GtkHBox
  | | | | |
  | | | | +GnomeAppBar
  | | | | |
  | | | | +GnomeDateEdit
  | | | | |
  | | | | +GtkCombo
  | | | | | |
  | | | | | `GnomeEntry
  | | | | |
  | | | | +GnomeFileEntry
  | | | | |
  | | | | +GnomeNumberEntry
  | | | | |
  | | | | +GnomeProcBar
  | | | | |
  | | | | `GtkStatusbar
  | | | |
  | | | +GtkVBox
  | | | | |
  | | | | +GnomeCalculator
  | | | | |
  | | | | +GnomeGuru
  | | | | |
  | | | | +GnomeIconEntry
  | | | | |
  | | | | +GnomeIconSelection
  | | | | |
  | | | | +GnomeLess
  | | | | |
  | | | | +GnomePaperSelector
  | | | | |
  | | | | +GnomePixmapEntry
  | | | | |
  | | | | +GnomeSpell
  | | | | |
  | | | | +GtkColorSelection
  | | | | |
  | | | | `GtkGammaCurve
  | | | |
  | | | `GtkButtonBox
  | | |   |
  | | |   +GtkHButtonBox
  | | |   |
  | | |   `GtkVButtonBox
  | | |
  | | +GtkLayout
  | | | |
  | | | `GnomeCanvas
  | | |   |
  | | |   `GnomeIconList
  | | |
  | | +GnomeDockBand
  | | |
  | | +GnomeDock
  | | |
  | | +GtkCList
  | | | |
  | | | `GtkCTree
  | | |
  | | +GtkFixed
  | | |
  | | +GtkNotebook
  | | | |
  | | | `GtkFontSelection
  | | |
  | | +GtkPaned
  | | | |
  | | | +GtkHPaned
  | | | |
  | | | `GtkVPaned
  | | |
  | | +GtkList
  | | |
  | | +GtkMenuShell
  | | | |
  | | | +GtkMenuBar
  | | | |
  | | | `GtkMenu
  | | |
  | | +GtkPacker
  | | |
  | | +GtkSocket
  | | |
  | | +GtkTable
  | | | |
  | | | `GtkTed
  | | |
  | | +GtkToolbar
  | | |
  | | `GtkTree
  | |
  | +GnomeAnimator
  | |
  | +GnomePixmap
  | | |
  | | `GnomeStock
  | |
  | +GtkMisc
  | | |
  | | +GtkLabel
  | | | |
  | | | +GtkAccelLabel
  | | | |
  | | | +GtkClock
  | | | |
  | | | `GtkTipsQuery
  | | |
  | | +GtkArrow
  | | |
  | | +GtkImage
  | | |
  | | `GtkPixmap
  | |
  | +GtkCalendar
  | |
  | +GtkDrawingArea
  | | |
  | | `GtkCurve
  | |
  | +GtkDial
  | |
  | +GtkEditable
  | | |
  | | +GtkEntry
  | | | |
  | | | `GtkSpinButton
  | | |
  | | `GtkText
  | |
  | +GtkRuler
  | | |
  | | +GtkHRuler
  | | |
  | | `GtkVRuler
  | |
  | +GtkRange
  | | |
  | | +GtkScale
  | | | |
  | | | +GtkHScale
  | | | |
  | | | `GtkVScale
  | | |
  | | `GtkScrollbar
  | |   |
  | |   +GtkHScrollbar
  | |   |
  | |   `GtkVScrollbar
  | |
  | +GtkSeparator
  | | |
  | | +GtkHSeparator
  | | |
  | | `GtkVSeparator
  | |
  | +GtkPreview
  | |
  | +GtkProgress
  | | |
  | | `GtkProgressBar
  | | 
  | `ZvtTerm
  |
  +GnomeCanvasItem
  | |
  | +GnomeCanvasRE
  | | |
  | | +GnomeCanvasEllipse
  | | |
  | | `GnomeCanvasRect
  | |
  | +GnomeCanvasGroup
  | |
  | +GnomeCanvasImage
  | |
  | +GnomeCanvasLine
  | |
  | +GnomeCanvasPolygon
  | |
  | +GnomeCanvasText
  | |
  | +GnomeCanvasWidget
  | |
  | `GnomeIconTextItem
  |
  +GnomeClient
  |
  +GnomeDEntryEdit
  |
  +GnomeDockLayout
  |
  +GnomeMDIChild
  | |
  | `GnomeMDIGenericChild
  |
  +GnomeMDI
  |
  +GtkData
  | |
  | +GtkAdjustment
  | |
  | `GtkTooltips
  |
  `GtkItemFactory