You need some programming experience to take advantage of this book. If you were starting from scratch, the book would require an especially large and sturdy binding to contain all of the pages, and you probably wouldn't be able to lift it.
To be more specific, you should have:
Firm programming experience in C, including pointers, dynamically allocated data structures, and pointers to functions. You should also be familiar with enumeration types and bit fields [Kernighan].
A solid grasp of pointers to pointers ( ** types), where to use them, and how to extract and use the address of a pointer.
Understanding of C macros and the C preprocessor.
Fundamental understanding of Unix: processes, libraries, search paths, and so on.
Practical Unix experience, including how to use a text editor, shell scripts, and make .
Basic familiarity with GNOME (as a user). You should know how GNOME 2.0 applications look and feel and how to work with graphical user elements such as control panels and dialog boxes.
In addition, some understanding of GUI programming is helpful. Knowledge of what callbacks (event handlers) are and how they work goes a long way. This isn't absolutely necessary, but you'll probably need a little more time to work through the book if you have never touched a user-interface API.
You do not need experience in:
GTK+ or GNOME programming.
Programming languages other than C.
Model-View-Controller (MVC) programming.
This book's content lies somewhere between a tutorial and a reference. To keep it from becoming too bloated, some restrictions were imposed:
This book does not contain a complete API reference. In particular, you won't find seldom-used or obsolete functions and classes here.
This book omits certain implementation details, such as data structures and libraries and functions that are purely internal or pertain only to further development of GNOME libraries. If you are interested in this sort of thing, have a look at Appendix D for information on how to obtain the GNOME source code. This software is distributed as open source under GNU LGPL [FSF 1999] and GPL [FSF 1991].
To make more space for the most frequently used classes and functions, this book includes some reference material for obscure API components , but no examples.
You won't see how to go from an idea to a complete, robust, elegant GUI application in excruciating detail. This is a book on GNOME as a tool for building applications; its goal is not software engineering. The programming examples are meant to demonstrate classes and functions, not full applications.