PHP GTK vol1  

PHPGTK, qu'est ce donc nous direz vous ?

Tout utilisateur féru de linux se doit de connaître le second tèrme : GTK. Par contre les utilisateurs de MS windows n'en ont peut être pas entendu parler. Et les autres, qui connaissent, ne veulent pas installer un linux pour découvrir GTK.

GTK est une librairie graphique utilisée pour la partie visuelle des applications.

A quoi ca sert ? Quel avantage a meler ces deux technologies ?
En fait PHP est principalement utilisé pour le développement web mais il peut être aussi utilisé en tant que langage de scripting pour développer des applications cliente.

Couplé avec l'extension GTK, PHP permet donc de créer une application avec une véritable interface utilisateur comme on les connaît si bien. On peut ainsi rapidement développer des « frontends » pour des applications seulement utilisables en ligne de commande.

Etape 1 : Installation et utilisation.

GTK est une extension de PHP qui n’est pas fourni par défaut.On peut l'installer sous Ms Windows et sous Linux bien entendu. Nous allons principalement détailler le premier cas en supposant que les pro linux connaitront les étapes.

Installation sous Windows

Deux solutions s’offrent à vous :

L’intérêt de la dernière solution est d’avoir un installeur typique windows et l’association d’une extension avec PHPGTK :

  • fichiers .php-gtk en mode normale

Installation sous Linux

Télécharger les sources sur http://gtk.php.net/download.php et suivre les instructions fournies sur la page.

Comment exécuter une application en PHPGTK.

Même si cela peut paraître évident, il me paraît important de le préciser. PHPGTK permet de générer une véritable application et non une page web. Donc on oublie APACHE, Firefox, MOZILLA ou IE, il suffit juste de faire un « php monfichier.php » en ligne de commande pour lancer son application.

Etape 2 : Ma première application

Placer des éléments graphiques

Contrairement à Motifs, GTK ne permet pas à la base de positionner un élément graphique à un endroit précis. Comment en HTML tout se place à la suite. Ainsi la création des éléments dans votre code déterminera la position des éléments. Vous avez aussi accès aux box (verticales et horizontales) permettant ainsi de mieux organiser votre interface graphique.
Avec les évolutions de GTK, on a maintenant accès à une fonction permettant de placer un élément à une position précise. En théorie seulement car après des essais, c’est un vrai calvaire.
Par contre, couplé avec l’extension GLADE, la mise en place des éléments graphiques devient beaucoup plus facile. Nous aborderons cette fonctionnalité plus tard.

Gérer les actions

Lorsque l’on créé un élément graphique qui interagie directement avec l’utilisateur, on a la possibilité d’associer un état de cet élément avec une fonction de notre application.
Dans le cas d’un bouton, l’état généralement géré par toute application est l’état « clicked ».
Vous découvrirez un exemple dans notre première application.

Notre application sans intérêt mise à part comprendre les bases de PHPGTK
Nous allons dans un premier temps comprendre le système pour placer des éléments graphiques et gérer les actions de l’utilisateur. Voici un aperçu de notre belle application :

 

Etape 3: Mise en place

Tout d’abord, nous devons charger le module GTK en mémoire :

Charger le module en mémoire
  1. <?php
  2. if (!class_exists('gtk')) {
  3.  if (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN')
  4.   dl('php_gtk.dll');
  5.  else
  6.   dl('php_gtk.so');
  7. }
  8. ?>

 

Puis nous déclarons les trois principales fonctions utilisées par notre application : 

Déclarations des fonctions
  1. <?php
  2. /*
  3. * Appelée quand un \"delete-event\" est déclenché. Nous retournons \"false\" pour indiquer
  4. * que l'événement doit être géré par l'application.
  5. */
  6. function DeleteEventFunction()
  7. {
  8.         return false;
  9. }
  10.  
  11. /*
  12. * Applelé quand la fenêtre principale est détruite.
  13. */
  14. function DestroyFunction()
  15. {
  16.         Gtk::main_quit();
  17. }
  18.  
  19.  
  20. /*
  21. * Appelé quand l'utilisateur appuie sur un des boutons exit
  22. */
  23. function QuitFunction()
  24. {
  25.         global        $window;
  26.         $window->destroy();
  27. }
  28. ?>

 

On créé maintenant la fenêtre principale

Création de la fenêtre
  1. <?php
  2. $window = &new GtkWindow(GTK_WINDOW_TOPLEVEL);
  3. $window->connect('destroy', 'DestroyFunction')
  4. /* on associe l'état destroy de la fenêtre avec notre fonction DestroyFunction */
  5. $window->connect('delete-event', 'DeleteEventFunction');
  6. $window->set_border_width(5);
  7. $window->set_title("Ma première application");
  8. $window->set_default_size(400, 50);
  9. $window->realize();
  10. ?>

 

On créé les groupes qui vont contenir nos objets

Création des groupes
  1. <?php
  2. $VerticalBox=&new GtkVBox();
  3. $VerticalBox->set_spacing(5);
  4. $VerticalBox->set_border_width(0);
  5. $HorizontalBox=&new GtkHBox();
  6. $HorizontalBox->set_spacing(5);
  7. $HorizontalBox->set_border_width(0);
  8. ?>

 

On créé nos trois boutons “exit”

Mise en place des boutons
  1. <?php
  2. $MyExit1Button = &new GtkButton("Exit 1");
  3. $MyExit1Button->connect('clicked', 'QuitFunction');
  4. $MyExit2Button = &new GtkButton("Exit 2");
  5. $MyExit2Button->connect('clicked', 'QuitFunction');
  6. $MyExit3Button = &new GtkButton("Exit 3");
  7. $MyExit3Button->connect('clicked', 'QuitFunction');
  8. ?>

 

On ajoute nos objets à nos groupes et les groupes à la fenêtre principale

Liaison des instances
  1. <?php
  2. $HorizontalBox->add($MyExit1Button);
  3. $HorizontalBox->add($MyExit2Button);
  4. $VerticalBox->add($HorizontalBox);
  5. $VerticalBox->add($MyExit3Button);
  6. $window->add($VerticalBox);
  7. ?>

 

On affiche la fenêtre et on démarre l’application

Lancement
  1. <?php
  2. $window->show_all();
  3. Gtk::main();
  4. ?>

 

Conclusion

Comme vous aurez pu le constater l'utilisation de PHP GTK sort du cadre du développement simple d'un site web. Cependant les possibilités sont interessantes et vous pouvez en PHP développer une application cliente. Cette première partie sera bientôt suivie d'une suite si vous le souhaitez. Dans ce cas envoyer un petit email à l'auteur pour le motiver pour la suite : [ \n Mobyone Cet e-mail est protégé contre les robots collecteurs de mails, votre navigateur doit accepter le Javascript pour le voir ]

Les applications

Gestion d'une mailling liste en PHP/GTK

Un jeu en PHP/GTK

Une liste d'applications disponibles



Les liens

Article PHP GTK

gtk en français

gtk par linux france

http://gtk.php.net/

http://gtk.php.net/docs.php

http://gtk.miester.org/docs/joe2001_03_27.2.html : Installer phpGTK sous linux.

http://gtk.miester.org/


Retour à l'accueil des articles