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
- <?php
-
- if (!class_exists('gtk')) {
- if (strtoupper(substr(PHP_OS, 0,3) == 'WIN'))
- dl('php_gtk.dll');
- else
- dl('php_gtk.so');
- }
-
- function delete_event()
- {
- return false;
- }
-
- function shutdown()
- {
- print("Shutting down...\n");
- gtk::main_quit();
- }
-
- function hello()
- {
- global $window;
- print "Hello World!\n";
- $window->destroy();
- }
-
- $window = &new GtkWindow();
- $window->connect('destroy', 'shutdown');
- $window->connect('delete-event', 'delete_event');
- $window->set_border_width(10);
-
- $button = &new GtkButton('Hello World!');
- $button->connect('clicked', 'hello');
- $window->add($button);
-
- $window->show_all();
-
- gtk::main();
-
-
- ?>
Exemple 1.2. Chargement de l'extension PHP-GTK
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()
- <?php
-
- function delete_event()
- {
- return false;
- }
-
-
- ?>
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()
- <?php
-
- function shutdown()
- {
- print("Shutting down...\n");
- gtk::main_quit();
- }
-
-
- ?>
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()
- <?php
-
- function hello()
- {
- global $window;
- print "Hello World!\n";
- $window->destroy();
- }
-
-
- ?>
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
- <?php
-
- $window = &new GtkWindow();
- $window->connect('destroy', 'shutdown');
- $window->connect('delete-event', 'delete_event');
- $window->set_border_width(10);
-
-
- ?>
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
- <?php
-
- $button = &new GtkButton('Hello World!');
- $button->connect('clicked', 'hello');
- $window->add($button);
-
- $window->show_all();
-
-
- ?>
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
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.