GTK ( GIMP Toolkit ) est une librairie pour créer des interfaces graphiques. Elle est placée sous la licence LPGL, ainsi vous pouvez développer des softwares ``ouverts'', des softwares gratuits, ou même des softwares commerciaux payants sans avoir à dépenser quoi que ce soit en licences ou en royalties. Elle est appelée la boîte à outils GIMP car elle a été initialement écrite pour le GNU Image Manipulation Programm ( GIMP), mais GTK a été utilisé pour un grand nombre de projets de softwares, incluant le projet GNU Network Object Model Environment ( GNOME ). GTK est basée sur GDK ( GIMP Drawing Toolkit) qui est, à la base, un ensemble de fonctions de bas-niveau qui permet d'accéder aux fonctions de gestions de fenêtres ( Xlib dans le cas du système X window). Bien qu'entièrement écrit en C, GTK est essentiellement un API orienté objet. GTK est implémenté en utilisant l'idée de classes et de rappels ( pointeurs de fonctions). L'un des avantages d'avoir une librairie écrite en C est que la plupart des langages sont capables d'avoir une interface avec les librairies C, rendant GTK disponible pour plusieurs langages, comme C-, Perl, Python, Eiffel et beaucoup d'autres ( voir la page principale du site GTK1 pour avoir une liste plus complète).
Perl est un langage de script qui rend les choses simples faciles et les choses difficiles possibles. Si vous êtes débutant en Perl, je recommande vivement les livres ``Apprendre Perl'' 2et ``Programmer en Perl''3 par O'reilly et Associés4. Ce tutoriel se concentre sur les liens entre Perl et GTK c'est pourquoi une connaissance approfondie de Perl n'est pas nécessaire, mais est préférable. Je prendrais rarement le temps d'expliquer des détails sur Perl donc si vous n'êtes pas sûr de vos compétences en Perl, ayez à portée de main votre guide de référence Perl préféré.
Gtk-Perl est un module qui vous permet d'avoir accès aux libraires GTK à partir d'un programme Perl. Il est disponible sous la licence GPL, ce qui signifie qu'il possède les mêmes restrictions et les mêmes libertés que Perl. Gtk-Perl inclut plusieurs modules ( GdkImlib, Gnome, GtkXmHTML, GtkGLArea et Glade) qui ne sont pas couverts par ce tutoriel mais qui pourraient bien être étudiés dans des tutoriaux séparés à l'avenir. Si vous souhaitez utiliser Gtk-Perl avec Glade, allez faire un petit tour du côté du site de Dermot Musgrove5. Si quelqu'un veut aider à l'élaboration de ce tutoriel, qu'il se fasse connaître. Ma seule exigence est que le style Gtk-Perl soit le même que celui que j'utilise dans ce tutoriel. Ce n'est pas que je pense avoir le Seul et Unique Style, mais parce que je pense que la cohérence est importante pour le débutant. A propos de style, je m'écarte un peu des styles Perl que l'on peut rencontrer ici où là, et j'espère que mes exemples seront lisibles et compréhensibles pour les novices en Perl, les experts et n'importe qui entre les deux.
Ce tutoriel tente de documenter aussi raisonnablement que possible Gtk-Perl, mais gardez à l'esprit, qu'il s'agit d'un tutoriel et non d'un guide de référence. Il serait bénéfique pour le lecteur qu'il ait un expérience préalable avec GTK ( de préférence en C) mais ce n'est pas une condition nécessaire. Toutefois, si vous suivez sérieusement le développement de GTK, je vous recommande d'utiliser GTK en C, tout simplement parce que la documentation GTK considère que vous utilisez le C. Si vous décidez de vous lancer, je vous conseille de vous plonger dans l'excellent GTK-Tutoriel6le plus tôt possible. La plupart de mes exemples sont directement tirés de ceux du GTK-Tutoriel ce qui facilite la comparaison entre les deux langages. Si GTK est la première interface graphique que vous utilisez, j'apprécierai beaucoup vos commentaires sur l'utilité de ce tutoriel et les parties ( s'il y en a ) qui vous ont posé problèmes.
Ce document est ``un travail en cours''. J'aimerais beaucoup savoir si vous avez eu des difficultés à apprendre Gtk-Perl à partir de ce document et j'apprécierais également toute suggestion qui vise à améliorer le document. Regardez, s'il vous plaît, le section Contribuer pour de plus amples informations. Si vous êtes un programmeur expérimenté en Gtk-Perl, faîtes-moi savoir si j'ai commis des erreurs, s'il est des éléments que j'ai délaissés ou mal expliqués. ( hey, nous sommes tous humain ! ).
Bonne question ! Les raisons pour lesquelles un programmeur choisit Gtk-Perl sont probablement les mêmes qui l'on amené à choisir Perl. Les débutants apprécient l'apprentissage progressif ( mais parfois long ) de Perl. Les programmeurs systèmes aiment la faculté de Perl à ``coller'' les systèmes et les utilités ensemble. Les ingénieurs softwares apprécient sa capacité à servir de prototype à un programme. Les utilisateurs Unix aiment ses capacités de manipulation texte. Et beaucoup de gens préfèrent tout simplement Perl au langage C et C-. Quelques soient vos raisons d'écrire un programme en Perl, Gtk-Perl vous offre un moyen facile d'y ajouter une interface GUI.
Maintenant, ne pensez pas que Gtk soit la seule boîte à outils GUI disponible en Perl. Il y en a, à ma connaissance deux autres. Il y a une interface Tk ( Perl/Tk ) documentée par un livre ( Apprendre Perl/Tk )7 et une interface Qt ( Perl/Qt ) mais qui semble ne pas avoir été mise à jour depuis un bout de temps ( peut-être abandonnée ? ). Je n'ai essayé ni l'une ni l'autre donc je ne peux commenter leurs performances.
Quand on choisit un toolkit, il faut considérer les différents langages disponibles, s'il s'agit d'une plateforme croisée, sous quelle licence il est placé et sa convivialité. Pour ma part, j'ai l'impression que de toutes les boîtes à outils disponibles en Perl, GTK est le meilleur car c'est une plateforme indépendante ( bien que je doute que Gtk-Perl fonctionne un jour sur des machines non-Unix ), sous licence GPL et décliné pour une large variété de langages.
La première chose à faire, bien sûr, est de télécharger les sources GTK et de les installer. Vous ne pouvez pas utiliser Gtk-Perl sans GTK . Vous pouvez toujours avoir la dernière version à partir du site FTP8 de GTK. Vous pouvez aussi obtenir d'autres sources d'informations sur le site GTK9 . GTK utilise GNU autoconf pour la configuration. Une fois que vous avez décompressé les archives tapez :
/configure -help
pour voir la liste des options.
Une fois que vous avez installé GTK, il vous faut Gtk-Perl. Vous pouvez le télécharger à partir du site FTP10 de GTK ou à partir du CPAN11. Une fois téléchargé, suivez les instructions données dans le fichier INSTALL. Ces deux sites ne sont pas mis à jour régulièrement, et peuvent ne pas posséder la dernière version. A l'avenir, j'essaierai de mettre à disposition la dernière version sur mon site, mais je suis actuellement limité en place par mon serveur web. A mon avis, la première version complètement utilisable de Gtk-Perl est la 0.6123, mais vous devriez plutôt prendre la dernière version disponible.
Nous allons bientôt travailler sur notre premier programme en Gtk-Perl. Avant cela, je voulais dire que tous mes programmes seront dans un bloc texte sur fond blanc ( NdT : pour la version HTML ). Cela permet de mieux lire un chapitre car on voit tout de suite où sont les programmes. De plus, je suis un fan de Emacs ( en fait XEmacs ) et j'apprécie beaucoup la coloration syntaxique. J'ai fait apparaître la coloration dans mes sources. Pour ceux qui ne connaissent pas, les commentaires sont en rouges, les mots réservés en gras, les définitions de variables en bleu, les définitions de fonctions en gras bleu, et les chaînes de caractères en vert. La coloration n'est pas parfaite mais c'est ce que je pouvais faire de mieux en quelques lignes de Perl. ( quoi, vous pensiez que j'avais fait cela à la main ? ). J'ai choisi un style de code qui est ( je pense) clair et rigide, en opposition au style laconique et peu structuré de beaucoup de codes. J'espère que ce style sera compris par les débutants sans trop d'effort.