Often I complain that GTK+ documentation (non-reference) is non-existent. The few GTK+ books that were ever written are now old and most of their included source code does not even compile anymore. All hail “Foundations of GTK+ Development” by Andrew Krause.The book, published under the “open source” series by Apress, features over 600 pages and has a suggested retail price of $50 (although it can be easily found for $32). The book starts by explaining the need for the creation of GTK+ 10 years ago and the libraries and frameworks it needs in order to function.
To follow the book you will need some good C knowledge. The author writes in a well-paced manner, along with explanations, source code, screenshots and hints’n’tips. We had no problem following the source code examples and exercises at the end of the book.
Andrew Krause is known for having developed OpenLDev, a GPL’ed IDE. Not surprisingly, most of the book’s content is very UI-driven. The book starts by explaining the widget hierarchy of GTK+, signals and callbacks, events and then the widgets: buttons, container widgets, dialogs, tree and text views, menus and toolbars and even offers a primer to dynamic UIs and custom widgets. In the midst of all this you will be introduced to GLib’s functions, data structures, memory management, and pipes among other things.
Towards the end of the book you will find a GTK+ appendix which will help you easily find indexed information about widgets, properties, events, signals etc.
The book is very valuable for taking the new programmer by the hand to introduce him to GTK+ in a top-down approach, but at the same time it doesn’t take him far enough. The truth is, many new developers would also require a primer on Gnome libs, not just GTK+. And if that’s beyond the scope of the book, a primer to explain how to setup and write simple programs in gtkmm, C# or pyGTK would have also been useful.
Overall, we highly recommend getting this book if you must write your application in GTK+ but have given up trying to make sense of it by reading just the reference. Additionally, it offers a good guide for existing GTK+ developers who would like to expand their knowledge of the toolkit. As long as you understand some C, this book is a must-have.