La programmation des applications avec interface graphique est également nommée programmation événementielle. Contrairement à un programme séquentiel qui traite un ensemble de tâches puis s'arrête, le programme événementiel attend les ordres de l'utilisateur, un clic de souris, la frappe d'une touche, etc. pour exécuter ce qui est demandé et se replace en attente.
Dans un premier temps, lorsque l'utilisateur interagit avec l'application par l'entremise d'un contrôle (un bouton sur lequel on clique, une fenêtre que l'on ferme, etc.), ce dernier émet un signal (par exemple "destroy" lorsque l'on ferme une fenêtre). Chaque contrôle est associé à un ou plusieurs signaux et permet donc ainsi de programmer toutes les actions possibles.
Ce signal va ensuite être intercepté par une boucle évènementielle qui va vérifier qu'une action spécifique à ce signal et ce contrôle a bien été définie. Si tel est le cas, la fonction associée sera exécutée. Ce type de fonction s'appelle fonction "callback" en anglais qu'on peut traduire par fonction ou procédure de rappel.
Il faut donc créer une fonction de rappel pour chacun des évènements susceptible d'avoir lieu pendant l'exécution du programme et associer (ou connecter) cette fonction à un signal.
La première étape consiste donc à créer une fonction de rappel. Dans la majorité des cas, une fonction de rappel sera de cette forme :
 procedure nom_de_la_fonction(widget : PGtkwidget; data : pgpointer);
Le paramètre codice_1 est le contrôle qui a émis le signal, et codice_2 est une donnée supplémentaire qui peut être utilisée.
Ensuite, pour connecter un signal à une fonction de rappel, Gtk+ utilise une fonction de la bibliothèque GLib qui est :
 function g_signal_connect(instance : gpointer; detailed_signal : Pgchar; 
 c_handler : TGCallback; data : gpointer) : gulong;
Le premier paramètre codice_3, correspond au contrôle qui émet le signal. Cependant, la variable demandée par codice_4 étant de type codice_5 (correspond à codice_6 du Pascal) et le contrôle de type codice_7, il faut convertir ce dernier pour ne pas provoquer d'erreur lors de la compilation. Pour cela Gtk+ (ou dans ce cas GLib) fournit une fonction de conversion (codice_8) qui sera à utiliser à chaque utilisation de cette fonction.
Le second paramètre codice_9, est le signal qui doit être intercepté par la boucle évènementielle. Dans ce livre, certains signaux seront utilisés dans les exemples, mais la rubrique « En savoir plus » donnera une liste complète des signaux qui peuvent être émis par un contrôle.
Le troisième paramètre codice_10, définit la fonction de rappel à associer au signal. Cette fois encore, il faudra utiliser une fonction de conversion qui est codice_11.
Le dernier paramètre codice_2, permet de spécifier une donnée quelconque à laquelle la fonction de rappel peut avoir accès pour effectuer son travail correctement.
Une fois que les signaux sont connectés, il faut lancer la boucle évènementielle en appelant cette fonction :
 procedure gtk_main;
Cela aura pour effet de faire entrer Gtk+ dans une boucle infinie qui ne pourra être stoppée que par l'appel de la fonction de fin de boucle qui est :
 procedure gtk_main_quit;
Ces fonctions correspondent au minimum nécessaire afin de pouvoir créer une application Gtk+ correcte. D'autres fonctions permettent une utilisation avancée des signaux et de la boucle évènementielle et sont traitées dans le chapitre GSignal du livre.
Un exemple simple de mise en place d'un signal "destroy" émis par une fenêtre quand elle se ferme, est fourni dans le chapitre GtkWindow.

Enseignement de l'anglais/Futur Test
Exercice 1.
Transposez au futur simple (will) :
Exercice 2.
Traduisez en employant la structure appropriée :
Solutions.
Retour Anglais : FuturRetour Enseignement de l'anglais

Enseignement de l'anglais/Formules de politesse

Lettres.
Au début, quand on ne sait pas à qui l'on s'adresse :
Quand on s'adresse à quelqu'un dont on connaît le nom :
À la fin :
Retour Enseignement de l'anglais

Enseignement de l'anglais/Passif
Temps.
Retour Enseignement de l'anglais

Livre de cuisine/Recettes du Nord
Livre de cuisine/Potjevleesch
Le nom de ce plat flamand signifie «pot de viandes». Il est originaire de Dunkerque. Il s'agit de morceaux de viandes de poulet, lapin et veau, froides et prises dans de la gelée. Les frites sont placées sur l'ensemble de manière à faire fondre la gelée!
Ingrédients.
Pour 6 personnes :
Préparation.
15 minutes

Programmation GTK2 en Pascal/Le placement des contrôles

Le placement des contrôles visuels avec Gtk+ peut paraître de prime abord complexe. Mais quand on a bien compris la logique du système, cela ne pose pas de problèmes particuliers.
La particularité de Gtk+.
De nombreuses API de gestion d'interface graphique fonctionne en positionnant le contrôle visuel de manière très précise en indiquant les coordonnées en pixels. Gtk+ ne fonctionne pas ainsi. À la création d'un contrôle, on lui fournit un ensemble de paramètres généraux et c'est Gtk+ qui va précisément s'occuper du positionnement, de la largeur, etc.
Les avantages sont une application qui s'adapte très bien à la taille de la fenêtre et donc à son redimensionnement, à la taille de l'écran, aux thèmes Gtk+, etc.
Les conteneurs.
Afin de placer un contrôle visuel de base comme un bouton, ou un champ de saisie dans une fenêtre, on va utiliser des conteneurs. Des conteneurs spéciaux existent qui regroupent les contrôles de manière verticale ou bien horizontale, il s'agit des codice_1 et des codice_2.
L'empilement des conteneurs.
On peut placer un ou plusieurs conteneurs dans un autre conteneur. C'est d'ailleurs ce qu'on fait quand on place un codice_1 par exemple dans une fenêtre. La fenêtre est un conteneur.
Cette combinaison va nous permettre de définir des interfaces très complexes.
Voici ci-dessus un exemple relativement simple. On peut bien entendu imbriquer plusieurs codice_4 l'une dans l'autre.

Programmation GTK2 en Pascal/Bibliographie

Pascal.
Voir le livre Programmation Pascal.