Manuel PHP-GTK

Tutoriel Hello World

Lorsque vous découvrez un nouveau langage, le premier programme que vous ecrivez est sans aucun doute le fameux 'hello world'. Donc, pour ne pas perdre les bonnes habitudes, le premier tutoriel de ce manuel va vous montrer comment écrire 'hello world'.

Dans ce tutoriel, nous considérons que vous connaissez déjà PHP. Ce toturiel permet de donner à l'utilisateur une approche sur la façon d'utiliser PHP-GTK et ainsi de découvrir les différents concepts.

Le but de ce programme est de créer une simple fenêtre avec l'inscription "Hello World!".

D'abord nous allons vous montrer la source du programme et ensuite commenter chacune des instructions pour donner une vision globale d'une application PHP-GTK simple.

Exemple 1.1. Source du programme Hello World en PHP-GTK

  1. <?php
  2.  
  3. if (!class_exists('gtk')) { 
  4.    if (strtoupper(substr(PHP_OS, 0,3) == 'WIN')) 
  5.    dl('php_gtk.dll');  
  6. else 
  7.    dl('php_gtk.so');  
  8. }  
  9.  
  10. function delete_event()  
  11. { 
  12.    return false;  
  13. }  
  14.  
  15. function shutdown()  
  16. { 
  17.    print("Shutting down...\n"); 
  18.    gtk::main_quit();  
  19. }  
  20.  
  21. function hello()  
  22. { 
  23.    global $window; 
  24.    print "Hello World!\n"; 
  25.    $window->destroy();  
  26. }  
  27.  
  28. $window = &new GtkWindow();  
  29. $window->connect('destroy', 'shutdown');  
  30. $window->connect('delete-event', 'delete_event');  
  31. $window->set_border_width(10);  
  32.  
  33. $button = &new GtkButton('Hello World!');  
  34. $button->connect('clicked', 'hello');  
  35. $window->add($button);  
  36.  
  37. $window->show_all();  
  38.  
  39. gtk::main();  
  40.  
  41.  
  42. ?> 

Exemple 1.2. Chargement de l'extension PHP-GTK

  1. <?php
  2.  
  3. if (!class_exists('gtk')) { 
  4.    if (strtoupper(substr(PHP_OS, 0,3) == 'WIN')) 
  5.    dl('php_gtk.dll');  
  6. else 
  7.    dl('php_gtk.so');  
  8. }  
  9.  
  10.  
  11. ?> 
les premières lignes permettent de verifier si l'extension PHP-GTK est déjà chargée et de la charger si elle ne l'est pas par l'intermédiaire de la commande dl('php_gtk.dll'); ou dl('php_gtk.so'); respectivement sous windows ou sous linux.

Exemple 1.3. la fonction delete_event()

  1. <?php
  2.  
  3. function delete_event()  
  4. { 
  5.    return false;  
  6. }  
  7.  
  8.  
  9. ?> 
la fonction delete_event() est enregistrée comme fonction événement pour le signal "delete-event". elle renvoie false, et indique ainsi à PHP-GTK d'envoyer l'événement par défaut, dans ce cas la methode destroy() . Si cette fonction renvoie true, PHP-GTK aurait stoppé le signal à ce point. Cela est utile si vous voulez écrire une fonction qui remplace la fonction destroy() - par exemple pour faire apparaitre une boite de dialogue et demander la confirmation de le fermeture d'une application (ie. la fenetre principale).

il n'est pas nécessaire de renvoyer false pour connecter le signal "delete-event" à la méthode destroy() , car par défaut la fonction renvoie false. il est possible de spécifier aucune propriété du signal "delete-event", tant que le signal destroy est utilisé d'une manière correcte, comme ici.

Exemple 1.4. la function shutdown()

  1. <?php
  2.  
  3. function shutdown()  
  4. { 
  5.    print("Shutting down...\n"); 
  6.    gtk::main_quit();  
  7. }  
  8.  
  9.  
  10. ?> 
la fonction shutdown() est enregistrée comme entraineur pour le signal destroy signal. la fonction imprime sur la console le texte "Shutting down...\n" et appelle la fonction statique gtk::main_quit() .

Exemple 1.5. la fonction hello()

  1. <?php
  2.  
  3. function hello()  
  4. { 
  5.    global $window; 
  6.    print "Hello World!\n"; 
  7.    $window->destroy();  
  8. }  
  9.  
  10.  
  11. ?> 
la fonction hello() est enregsitrée comme entraineur pour le signal "clicked" sur le bouton. On déclare $window en variable globale pour pouvoir accéder à l'objet GtkWindow crée par le script. Ensuite il imprime sur la console "Hello World" avant d'appeler la méthode destroy() sur la fenêtre,et ainsi appeler la fonction shutdown().

Une autre façon pour pourvoir accéder à l'objet $window dans la fonction hello() est d'utiliser les paramêtres personalisés.

Exemple 1.6. Créer la fenêtre

  1. <?php
  2.  
  3. $window = &new GtkWindow();  
  4. $window->connect('destroy', 'shutdown');  
  5. $window->connect('delete-event', 'delete_event');  
  6. $window->set_border_width(10);  
  7.  
  8.  
  9. ?> 
Les quatres lignes suivantes crées la fenêtre. Premièrement, il faut créer un objet GtkWindow. Une fois l'objet crée avec succés, nous appelons la méthode connect() de la fenêtre pour enregistrer la fonction shutdown() comme entraîneur pour le signal destroy et la fonction delete_event() comme entraîneur du signal "delete-event". Ensuite, il faut appeler la fonction set_border_width() pour régler la bordure de 10 pixels de largeur sur l'objet GtkWindow qui a été créé précédement.

Exemple 1.7. Ajouter un bouton

  1. <?php
  2.  
  3. $button = &new GtkButton('Hello World!');  
  4. $button->connect('clicked', 'hello');  
  5. $window->add($button);  
  6.  
  7. $window->show_all();  
  8.  
  9.  
  10. ?> 
Les trois lignes précédentes créent et configurent le bouton. Dans la première ligne du script, nous créons un widget GtkButton. L'argument du constructeur est le texte qui va etre afficher sur le bouton - dans notre cas "Hello World!". Ensuite nous appelons la méthode connect() pour enregister la fonction hello() definit précédement, comme entraîneur pour le signal "clicked". Dernièrement, nous ajoutons le bouton sur la fenêtre par l'intermédiaire en appelant la méthode add() de l'objet GtkContainer pour l'instance $window, et ensuite afficher tout ce qui est contenu dans $window (et dans les fils, $button) en appelant la méthode show_all() .

Exemple 1.8. l'appel de gtk::main

  1. <?php
  2.  
  3. gtk::main();  
  4.  
  5.  
  6. ?> 
La dernière ligne appelle la fonction statique gtk::main function. Cela indique à PHP-GTK que nous avons terminé la construction de l'interface et donc la boucle principale peut démarrer et ainsi ecouter les événements générés par les interactions et exéctuer les rappels correspondants.

Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Bretagne - php - Moto - Kit graphique