GTK (GIMP Toolkit) a été d'abord développé pour être une boîte à outils pour GIMP (General Image Manipulation Program). GTK est construit sur GDK (GIMP Drawing Kit) qui est, avant tout, une encapsulation des fonctions Xlib. On l'appelle « GIMP toolkit » car il fut créé pour développer GIMP, mais il est désormais utilisé dans plusieurs projets de logiciels libres. Les auteurs sont :
petm@xcf.berkeley.edu
spencer@xcf.berkeley.edu
jmacd@xcf.berkeley.edu
GTK est essentiellement une interface de programmation (API) orientée objet. Bien qu'il soit entièrement écrit en C, il est implanté en utilisant la notion de classes et de fonctions de rappel (pointeurs de fonctions).
Un troisième composant, appelé glib, remplace certains appels standard et comporte quelques fonctions supplémentaires pour gérer les listes chaînées, etc. Les fonctions de remplacement sont utilisées pour accroître la portabilité de GTK car certaines de ces fonctions, comme g_strerror(), ne sont pas disponibles ou ne sont pas standard sur d'autres Unix. D'autres comportent des améliorations par rapport aux versions de la libc : g_malloc(), par exemple, facilite le débuggage.
Ce didacticiel tente de décrire du mieux possible GTK, mais il n'est pas exhaustif. Il suppose une bonne connaissance du langage C, et de la façon de créer des programmes C. Il serait très précieux au lecteur d'avoir déjà une expérience de la programmation X, mais cela n'est pas nécessaire. Si l'apprentissage de GTK marque vos débuts dans l'approche des widgets, n'hésitez pas à faire des commentaires sur ce didacticiel et sur les problèmes qu'il vous a posé. Il y a aussi une API C++ pour GTK (GTK--), si vous préférez utiliser ce langage, consultez plutôt la documentation qui la concerne. Une encapsulation en Objective C et des liaisons Guile sont également disponibles, mais ne seront pas abordées ici.
J'apprécierais beaucoup avoir un écho des problèmes que vous avez rencontré pour apprendre GTK à partir de ce document. De plus, toute suggestion sur son amélioration est la bienvenue.