« Programmation GTK/Théorie des signaux et des rappels » : différence entre les versions

Contenu supprimé Contenu ajouté
m revert
DannyS712 (discussion | contributions)
m <source> -> <syntaxhighlight> (phab:T237267)
Ligne 5 :
 
Ce passage du contrôle est réalisé en utilisant le concept de « signal ». Lorsqu'un événement survient, comme l'appui sur un bouton, le signal approprié sera « émis » par le widget qui a été pressé. C'est de cette façon que GTK réalise la plupart de son travail. Pour qu'un bouton réalise une action, on configure un gestionnaire de signal pour capturer ces signaux et appeler la fonction adéquate. Ceci est fait en utilisant une fonction comme :
<sourcesyntaxhighlight lang="C">
gint gtk_signal_connect (GtkObject *object,
gchar *name,
GtkSignalFunc func,
gpointer func_data);
</syntaxhighlight>
</source>
Où le premier paramètre est le widget qui émettra le signal, et le deuxième est le nom du signal que l'on souhaite intercepter. Le troisième paramètre est la fonction que l'on veut appeler quand le signal est capturé, et le quatrième sont les données que l'on souhaite passer à cette fonction.
 
La fonction spécifiée par le troisième paramètre s'appelle une « fonction de rappel » et doit être de la forme :
<sourcesyntaxhighlight lang="C">
void callback_func(GtkWidget *widget, gpointer callback_data);
</syntaxhighlight>
</source>
Où le premier paramètre sera un pointeur vers le widget qui a émis le signal, et le second un pointeur vers les données passées par le dernier paramètre de la fonction <code>gtk_signal_connect()</code> décrite plus haut.
 
Un autre appel utilisé dans l'exemple « Bonjour tout le monde » est :
<sourcesyntaxhighlight lang="C">
gint gtk_signal_connect_object (GtkObject *object,
gchar *name,
GtkSignalFunc func,
GtkObject *slot_object);
</syntaxhighlight>
</source>
<code>gtk_signal_connect_object()</code> est la même chose que <code>gtk_signal_connect()</code> sauf que la fonction de rappel utilise un seul paramètre : un pointeur vers un objet GTK. Lorsqu'on utilise cette fonction pour connecter des signaux, le rappel doit être de cette forme :
<sourcesyntaxhighlight lang="C">
void callback_func (GtkObject *object);
</syntaxhighlight>
</source>
Où l'objet est d'ordinaire un widget. En général, on ne configure pas de rappels pour gtk_signal_connect_object. D'habitude, ceux-ci sont utilisés pour appeler une fonction GTK acceptant un simple widget ou objet comme paramètre, comme dans notre exemple.