Boucle principale et Evénements

Boucle principale et Evénements— Initialisation de la bibliothèque, boucle événementielle principale et événements.

Synopsis

#include <gtk/gtk.h>

gchar* gtk_set_locale (void);
void gtk_disable_setlocale (void);
PangoLanguage* gtk_get_default_language (void);
gboolean gtk_parse_args (int *argc,
char ***argv);
void gtk_init (int *argc,
char ***argv);
gboolean gtk_init_check (int *argc,
char ***argv);
gboolean gtk_init_with_args (int *argc,
char ***argv,
char *parameter_string,
GOptionEntry *entries,
char *translation_domain,
GError **error);
GOptionGroup* gtk_get_option_group (gboolean open_default_display);
void gtk_exit (gint error_code);
gboolean gtk_events_pending (void);
void gtk_main (void);
guint gtk_main_level (void);
void gtk_main_quit (void);
gboolean gtk_main_iteration (void);
gboolean gtk_main_iteration_do (gboolean blocking);
void gtk_main_do_event (GdkEvent *event);
void (*GtkModuleInitFunc) (gint *argc,
gchar ***argv);
void (*GtkModuleDisplayInitFunc) (GdkDisplay *display);
gboolean gtk_true (void);
gboolean gtk_false (void);
void gtk_grab_add (GtkWidget *widget);
GtkWidget* gtk_grab_get_current (void);
void gtk_grab_remove (GtkWidget *widget);
void gtk_init_add (GtkFunction function,
gpointer data);
void gtk_quit_add_destroy (guint main_level,
GtkObject *object);
guint gtk_quit_add (guint main_level,
GtkFunction function,
gpointer data);
guint gtk_quit_add_full (guint main_level,
GtkFunction function,
GtkCallbackMarshal marshal,
gpointer data,
GtkDestroyNotify destroy);
void gtk_quit_remove (guint quit_handler_id);
void gtk_quit_remove_by_data (gpointer data);
guint gtk_timeout_add_full (guint32 interval,
GtkFunction function,
GtkCallbackMarshal marshal,
gpointer data,
GtkDestroyNotify destroy);
guint gtk_timeout_add (guint32 interval,
GtkFunction function,
gpointer data);
void gtk_timeout_remove (guint timeout_handler_id);
guint gtk_idle_add (GtkFunction function,
gpointer data);
guint gtk_idle_add_priority (gint priority,
GtkFunction function,
gpointer data);
guint gtk_idle_add_full (gint priority,
GtkFunction function,
GtkCallbackMarshal marshal,
gpointer data,
GtkDestroyNotify destroy);
void gtk_idle_remove (guint idle_handler_id);
void gtk_idle_remove_by_data (gpointer data);
guint gtk_input_add_full (gint source,
GdkInputCondition condition,
GdkInputFunction function,
GtkCallbackMarshal marshal,
gpointer data,
GtkDestroyNotify destroy);
void gtk_input_remove (guint input_handler_id);
#define GTK_PRIORITY_REDRAW
#define GTK_PRIORITY_RESIZE
#define GTK_PRIORITY_HIGH
#define GTK_PRIORITY_INTERNAL
#define GTK_PRIORITY_DEFAULT
#define GTK_PRIORITY_LOW
guint gtk_key_snooper_install (GtkKeySnoopFunc snooper,
gpointer func_data);
gint (*GtkKeySnoopFunc) (GtkWidget *grab_widget,
GdkEventKey *event,
gpointer func_data);
void gtk_key_snooper_remove (guint snooper_handler_id);
GdkEvent* gtk_get_current_event (void);
guint32 gtk_get_current_event_time (void);
gboolean gtk_get_current_event_state (GdkModifierType *state);
GtkWidget* gtk_get_event_widget (GdkEvent *event);
void gtk_propagate_event (GtkWidget *widget,
GdkEvent *event);

Description

Avant d'utiliser GTK+, vous avez besoin de l'initialiser; l'initialisation connecte au système d'affichage de fenêtre, et analyse quelques arguments de ligne de commande. La fonction gtk_init() initialise GTK+. gtk_init() arrête l'application si une erreur survient; pour éviter cela, utilisez gtk_init_check()gtk_init_check() vous permet de récupérer d'une erreur d'intialisation de GTK+ - vous pourrez débuter votre aplication en mode texte à la place.

Comme toutes les boîtes à outils GUI, GTK+ utilise un modèle de programmation conduit pas des événements. Quand l'utilisateur ne fait rien, GTK+ se repose sur sa boucle principale et attends une entrée. Si l'utilisateur réalise une action - dire, clique de la souris- alors la boucle principale "se réveille" et délivre un événemebt à GTK+. GTK+ expédie l'événement à un ou plusieurs widgets.

Quand les widgets reçoivent un événement, ils émettent fréquemment un ou plusieurs signaux. Les signaux  notifient à votre programme que "quelque chose d'intéressant est arrivé" en appelant les fonctions que vous avez connectées aux signaux avec g_signal_connect(). Les fonctions connectées à un signal sont souvent appelées callbacks.

Quand vos callbacks sont appelées, vous allez passer une action spécifique - par exemple quand un bouton Ouvrir es cliqué vous pouvez afficher un GtkFileSelectionDialog. Après que le callbacks ait terminé, GTK+ revient à la boucle principale pour attendre d'autres entrées.

Exemple 1. Fonction  main typique pour une application GTK+ 

int
main (int argc, char **argv)
{
/* Support d'initialisation i18n */
gtk_set_locale ();

/* Initialise l'ensemble des widgets */
gtk_init (&argc, &argv);

/* Crée la fenêtre principale */
mainwin = gtk_window_new (GTK_WINDOW_TOPLEVEL);

/* Configuration de vos éléments GUI */
...

/* Afficher la fenêtre de l'application */
gtk_widget_show_all (mainwin);

/* Entrer la boucle principale d'événements, et attendre une interaction de l'utilisateur*/
gtk_main ();

/* L'utilisateurperd son intérêt*/
return 0;
}

C'est OK pour utiliser la boucle principale de GLib à la place de gtk_main() , bien que cela implique légèrement plus de  d'écriture. Voir  GMainLoop  dans la documentation de  GLib.

Details

gtk_set_locale ()


gchar*		 gtk_set_locale		 (void);
Initialise le support d'internationalisation pour GTK+. gtk_init() faist cela automatiquement, aussi il n'y a pas vraiment de raison d'appeler cette fonction.

Si vous appelé cette fonction parce que vous avez changer la localisation arès l'initialisation de GTK+; alors cet appel peut aider quelque peu. (Noter, cependant, que le changement de localisation après l'initialisation de GTK+ peut provoquer des résulats contradictoires et que cela n'est pas vraiment supporté.)

En détail - définissez la localisation courante selon l'environnement du programme. C'est la même chose que d'appeler la fonction de la bibliothèque C setlocale (LC_ALL, "") mais aussi faites attention à la configuration sépcifique de la localisation du système de fenêtrage utilisé par GDK.
Retourne: une chaîne correspondant à la configuration locale, spécifiquement de la forme  lang_COUNTRY, où lang est un code de langage  ISO-639,  et COUNTRY est un code de pays  ISO-3166. Sur  Unix, cette  forme assortit le résultat à setlocale(); elle est aussi utilisé sur d'autres systèmes comme Windows, où la bibliothèque C retourne un résultat différentit. La chaîne appartient à GTK+ et ne devrait pas être modifiée ou libérée.

 

gtk_disable_setlocale ()


void 		gtk_disable_setlocale 		(void);

Prévient  gtk_init(), gtk_init_check(), gtk_init_with_args() et gtk_parse_args() d'un appelle automatique de setlocale (LC_ALL, ""). Vous aurez besoin d'utiliser cette fonction pour définir la localisation pour votre programme à une autre localisation que celle de l'utilisateur, ou si vous voulez définir différentes valeurs pour des catégories de localisations différentes.

La plupart des programmes ont besoin d'appeler cette fonction.

gtk_get_default_language ()


PangoLanguage* 		gtk_get_default_language 		(void);


Retourne le  PangoLanguage  pour la langue courante qui est actuellement en action. (Notez que ceci peut changer tout au long de la vie de l'application.) La langue par défaut est dérivée de la localisation courante. Cecid détermine, par exemple, si GTK+ utilise le sens d'écriture de la droite vers la gauche ou de la gauche vers la droite.

Cette fonction est équivalente à  pango_language_get_default(). Voir cette fonction dans le détail.

Retourne : La langue par défaut en tant que  PangoLanguage, ne doit pas être libérée.

gtk_parse_args ()


gboolean 		gtk_parse_args 		(int *argc,char ***argv);

Analyse les arguments de la ligne de commande, et initialise les attributs globaux de GTK+, mais n'ouvre pas réellement de connexion à un affichage. (Voir gdk_display_open(), gdk_get_display_arg_name())

Tous les argumesnts utilisés par GTK+ ou GDK sont supprimés du tableau et argc et argv mis à jour en conséquence.

Vous ne devez pas appeler cette fonction explicitement si vous avez utilisé gtk_init(), ou gtk_init_check().

argc :  pointeur sur le nombre d'arguments de ligne de commande.
argv :  pointeur sur le tableau des arguments de ligne de commande.
Retourne : TRUE  si l'initialisation a réussi, autrement FALSE.

gtk_init ()


void 		gtk_init 		(int *argc,char ***argv);

Appelez cette fonction avant d'appeler n'importe quelle autre fonction dans vos application GUI. Elle initialisera tout ce qui est nécessaire pour faire fonctionner la boîte à outils et analyser certaines options standards de ligne de commande. argc et argv are ajustés en conséquence ainsi votre propre code ne verra jamais ces arguments standards.

Notez qu'il y a des méthodes alternatives pour initialiser GTK+ : vous pouvez appeller gtk_parse_args(), gtk_init_check(), gtk_init_with_args() ou g_option_context_parse() avec l'option de groupe retournée par  gtk_get_option_group(), vous n'avez pas à appeler  gtk_init().

Note

Cette fonction terminera votre programme si elle est incapable d'initialiser GUI pour n'importe quelle raison. Si vous voulez que votre programme passe à une interface texte vous pouvez appeler gtk_init_check()  à la place.

Note

argc : Adresse du paramètre  argc de votre fontion main(). Changé si des arguments étaient manipulés.
argv : Adresse du paramètre argv de main(). Tous les paramètres  admis par  gtk_init() sont vidés avant le retour.

gtk_init_check ()


gboolean 		gtk_init_check 		(int *argc,char ***argv);

Cette fonction fait le même travail que gtk_init() avec un seul changement : elle ne termine pas le programme si GUI ne peut pas être initialisé.A la place elle retourne FALSE après l'erreur.

De cette façon l'application peut passer à d'autres méthodes de communication avec l'utilisateur - par exemple une interface de commandes en ligne.

argc : Adresse d u paramètre argc de votre fonction main(). Changé si des arguments étaient manipulés.
argv : Adresse du paramètre argv de main(). Tous les paramètres  admis par  gtk_init() sont vidés avant le retour.
Retourne : TRUE si le  GUI a été initialisé avec succès, FALSE autrement.

gtk_init_with_args ()

gboolean 		gtk_init_with_args 		(int *argc,
char ***argv,
char *parameter_string,
GOptionEntry *entries,
char *translation_domain,
GError **error);

Cette fonction fait le même travail que gtk_init_check(). En plus, elle vous permet d'ajouter vos propre options de commande en ligne, et elle génère automatiquement  une sortie --help bien composée. Notez que votre programme terminé après la rédaction du rapport d'aide.
argc : pointeur sur le nombre d'arguments de commande en ligne.
argv : pointeur sur le tableau  des arguments de commande en ligne.
parameter_string : chaîne qui est affichées dans la première ligne de la sortie --help , après  programname [OPTION...]
entries : un tableau terminé par  NULL de GOptionEntrys  décrivant les options de votre programme.
translation_domain : domaine de traduction à utiliser pour traduire la sortie  --help pour les otions dans entries avec gettext(), ou NULL
error : localisation de retour pour des erreurs
Retourne : TRUE si le  GUI a été initialisé avec succès, FALSE autrement.

Depuis  2.6


gtk_get_option_group ()

GOptionGroup* 		gtk_get_option_group 		(gboolean open_default_display);

Retourne un GOptionGroup pour les arguments de commande en ligne reconnu par GTK+ et GDK. Vous devez ajouter ce groupe à votre  GOptionContext avec g_option_context_add_group(), si vous avez utilisé  g_option_context_parse() pour analyser vos arguments de commande en ligne.

open_default_display : pour ouvrir l'affichage par par défaut quand les arguments de commande en ligne sont analysés.
Retourne : un GOptionGroup pour les arguments de commande reconnus pas GTK+

Depuis  2.6


gtk_exit ()


void 		gtk_exit 		(gint error_code);

Attention

gtk_exit est désapprouvée et devrait ne pas être utilisée dans les codes nouvellement écrits. Utilisez la fonction standard exit()à la place.

Elle termine le programme et retourne le code de sortie à l'appelant. Cette fonction arrête le GUI et lébère toutes les ressources allouées pour GTK+.

error_code : Valeur retournée à passer à l'appelant. Elle dépend du système cible mais au final sur les système Unix la valeur 0 signifie succès.

gtk_events_pending ()


gboolean 		gtk_events_pending 		(void);

Regarde si aucun événement n'est en attente. Celà peut être utilisé pour mettre à jour le GUI et appeler des arrêts etc.
 tout en faisant des opérations intensives sur le temps. 

Exemple 1. Mise à jour de  GUI pendanr une longue opération.

	/* déroulement de l'opération */
...
while (gtk_events_pending ())
gtk_main_iteration ();
...
/*l'opération se poursuit */

Retourne : TRUE si des événements sont en attente , FALSE autrement.

gtk_main ()


void 		gtk_main		 (void);

Exécute la boucle principale jusqu'à ce que l gtk_main_quit() soit appelé. You can nest calls to gtk_main(). In that case gtk_main_quit() will make the innermost invocation of the main loop return.

gtk_main_level ()


guint 		gtk_main_level 		(void);

Demande  le niveau d'emboîtement de la boucle principale. Cela peut être utile quand on appelle gtk_quit_add().

Retourne : Le niveau d'emboîtement de l'appel courant de la boucle principale.

gtk_main_quit ()


void gtk_main_quit (void);

Fait en sorte que l'appel de la boucle principale le plus profond retourne quand elle reprends le contrôle.

gtk_main_iteration ()


gboolean		 gtk_main_iteration 		(void);

exécute une seule itération de la boucle principale; Si aucun événement n'est attendu pour être traîté GTK+ bloquera le prochain événement noté. Si vous ne voulez pas bloquer, regardez gtk_main_iteration_do() ou contrôlez d'abord si des événements sont en attente avec gtk_events_pending().
Retourne : TRUE si gtk_main_quit() a été appelée pour une boucle principale "profonde" (innermost).

gtk_main_iteration_do ()

gboolean gtk_main_iteration_do (gboolean blocking);

Exécute une seule itération de la boucle principale. Si aucun événement n'est  disponible soit elle retourne ou bloque selon la valeur de blocking.

blocking : TRUE si vous voulez que GTK+ bloque si aucun événement est en attente.
Returns : TRUE si gtk_main_quit() a été appelée pour une boucle princiapale profonde (innermost).

gtk_main_do_event ()


void gtk_main_do_event (GdkEvent *event);

Traite un seule événement GDK. Elle est publique pour permettre uniquement le filtrage des événements entre GDK et GTK+. Vous n'aurez pas  besoin habituellement d'appeler cette fonction directement.

Même si vous ne devez pas appeler cette fonction directement, vous pouvez vouloir savoir exactement  comment les événements sont manipulés. Voici ce que cette fonction fait avec les événements : 


  1. Compresse les événements entrer/ quitter notifiés. Si l'événement passé construit une paire entrée/ quitter avec l'événement qui suit (jetez un coup d'oeil à GDK) les deux événements  sont jetés.   This is to avoid a backlog of (de-)highlighting widgets crossed by the pointer.

  2. Trouve le widget auquel appartient l'événement. Si le widget ne peut pas être déterminé l'événement est jeté à moins qu'il appartienne à la transaction INCR. Dans ce cas il est passé à gtk_selection_incr_event().

  3. Après que l'événement soit passé dans une pile vous pouvez obtenir le handle (manipulateur) courant de l'événement avec  gtk_get_current_event().

  4. L'événement est envoyé au widget. Si une interception est active tous les événements pour les widgets qui ne sont pas dans le contenant du widget d'interception sont envoyés au dernier plan avec quelques exceptions:

    • La suppression et la destruction d'événements sont déjà envoyées au  widget d'événement pour des raisons évidentes.

    • Événements qui sont reliés  directement à la représentation visuelle du widget d'événement.

    • les événements laissés sont fournis au widget d'événements si un événement d'entrée lui a été délivré avant sans événement quitter.
    • Les événements glisser ne sont pas redirectionnés parceque  it is unclear what the semantics of that would be.

    Un autre point d'intérêt est que tous les événements de touche sont passés en premier à travers les fonctions espionnes de touches s'il y en a. Lisez la description de  gtk_key_snooper_install() si vous avez besoin de ce dispositif.

  5. Après avoir terminé de délivrer l'événement est supprimé de la pile d'événements.

event :  Un événement à traiter (normalement), passé par GDK

GtkModuleInitFunc ()


void		 (*GtkModuleInitFunc) 		(gint *argc,gchar ***argv);

Chaque  module  GTK+ doit avoir une fonction gtk_module_init() avec ce prototype. Cette fonction est appelée après avoir charger le module avec  argc et argv nettoyés de tous arguments que GTK+ a manipulé lui même. 

argc : Pointeur sur le nombre d'arguments  restant  après  gtk_init().
argv : pointe sur le vecteur d'arguments.

GtkModuleDisplayInitFunc ()


void (*GtkModuleDisplayInitFunc) (GdkDisplay *display);

display :

Depuis 2.2


gtk_true ()

gboolean gtk_true (void);

Cette fonction est faite pour renvoyer TRUE.  Cela peut être utile par exemple si vous voulez inhiber la suppression d'une fenêtre. Ien sûr vous ne  devrez pas faire cela si l'utilisateur s'attend a une réaction à la suite d'un clic sur l'icône de fermeture de la fenêtre.

Exemple 3. Une fenêtre persistante.

##include <gtk/gtk.h>

int
main (int argc, char **argv)
{
GtkWidget *win, *but;

gtk_init( &argc, &argv );

win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
g_signal_connect (win, "delete-event",
G_CALLBACK (gtk_true), NULL);
g_signal_connect (win, "destroy",
G_CALLBACK (gtk_main_quit), NULL);
but = gtk_button_new_with_label ("Close yourself. I mean it!");
g_signal_connect_swapped (but, "clicked",
G_CALLBACK (gtk_object_destroy), win);
gtk_container_add (GTK_CONTAINER (win), but);

gtk_widget_show_all (win);
gtk_main ();
return 0;
}
Retourne : TRUE

gtk_false ()


gboolean gtk_false (void);

Analogue à gtk_true() cette fonction ne fait rien d'autre que de retourner  FALSE.

Returns : FALSE

gtk_grab_add ()


void		 gtk_grab_add		 (GtkWidget *widget);

Fait du widget le widget d'interception courant. Cela signifie que l'interaction avec les autres widgets de l'application  sont bloqués ainsi que la souris , les événements du clavier sont délivés à ce widget.

widget : Le widget qui intercepte les événements du clavier et du pointeur.(?)

gtk_grab_get_current ()


GtkWidget*	 gtk_grab_get_current 	(void);

Cherche l'interception courante du groupe de fenêtre par défaut;
Retourne :  Le widget qui  intercepte  ou NULL   si il n'y a pas d'interceteur actif.

gtk_grab_remove ()

void 		gtk_grab_remove 	(GtkWidget *widget);

Supprime l'interception depuis un widget donné. Vous devez aparier les appels à gtk_grab_add() et gtk_grab_remove().
widget : Le widget dont la reception s'arrête.

gtk_init_add ()


void 		gtk_init_add 		(GtkFunction function,gpointer data);

Déclare une fonction pour qu'elle soit appelée quand une boucle principale commence.
function : Fonction à appeler quand gtk_main() est appelée à nouveau.
data : Données à passer à cette fonction.

gtk_quit_add_destroy ()


void 		gtk_quit_add_destroy 		(guint main_level,GtkObject *object);

Déclenche la destruction d'un object  au cas où la boucle principale au niveau main_level est quittée.
main_level : Niveau de la boucle principale qui doit déclencher la destruction.
object : Objet détruit.

gtk_quit_add ()


guint 		gtk_quit_add		 (guint main_level,
GtkFunction function,
gpointer data);

Déclare une fonction pour qu'elle soit appelée quand une instance de la boucle principale est laissée.

main_level : Niveau auquel   la fonction doit être appelée. Vous pouvez passer 0 ici pour obtenir l'exécution de la fonction à la fin de la boucle principale courante.
function : Fonction appellée. Dois retourner 0 pour être supprimé de la liste des manipulateurs (handlers). Autrement cette fonction ppeut encore être appelée.
data : Pointeur à passer pendant l'appel de  function.
Returns : Un handle pour  for this quit handler (vous en avez besoin pour  gtk_quit_remove()) ou 0 si vous avez passé un pointeur  NULL dans  function.

gtk_quit_add_full ()

guint 			gtk_quit_add_full 			(guint main_level,
GtkFunction function,
GtkCallbackMarshal marshal,
gpointer data,
GtkDestroyNotify destroy);

Déclare une fonction à appeler quand une instance de la boucle principale se termine. En comparaison de gtk_quit_add() cette fonction ajoute le dispositif pour passer un trieur (marshaller) et  une fonction appélée quand le manipulateur de sortie (quit handler) est libéré.

Le premier peut être utilisé pour exécuter un code interprété à la place d'une fonction compilée tant dis que le dernier peut être utiliser pour libérer les informations placées dans data (vous pouvez faire cela aussi bien dans function)... Aussi cette fonction sera beaucoup plus utilisée par les wrappers (programme d'adaptation à GTK+) de GTK+ pour des  langages autres que le C.
main_level : Niveau de terminaison pour lequel  la fonction doit être appelée.Vous pouvez passer 0 ici pour que la fonction s'exécute à la fin de la boucle principale courante.
function : Fonction à appeler. Elle doit retourner 0 pour être supprimée de la liste des handlers de sortie. Sinon la fonction pourrait être encore  appelée.
marshal : Le trieur utilisé. Si il n'est pas NULL, function est ignoré.
data : Pointeur passé quand function est appelé.
destroy : Fonction à appeler pour détruire  data. Prend data comme argument.
Returns : Un handle pour ce manipulateur de sortie (vous en avez besoin pour  gtk_quit_remove()) ou 0  si vous avez passé un pointeur  NULL dans function.

gtk_quit_remove ()


void 		gtk_quit_remove 		(guint quit_handler_id);

Supprime un handler de sortie identifié par ses identifiants.

quit_handler_id : Identifiant pour le handler retourné quand il est installé.

gtk_quit_remove_by_data ()


void 		gtk_quit_remove_by_data 		(gpointer data);

Supprime un handler de sortie identifié par son champ data.

data : Le pointeur passé comme data à gtk_quit_add() ou gtk_quit_add_full().

gtk_timeout_add_full ()


guint 			gtk_timeout_add_full 			(guint32 interval,
GtkFunction function,
GtkCallbackMarshal marshal,
gpointer data,
GtkDestroyNotify destroy);

Attention

gtk_timeout_add_full est dépréciée depuis la version 2.4 et ne doit pas être utilisée dans du code nouvellement écrit. Utilisez  g_timeout_add_full() à la place.

Déclare une fonction qui doit être appelée périodiquement. Cette fonction sera appelée de façon répétée après un interval en millisecondes jusqu'à ce qu'elle retourne FALSE , à ce moment le timeout est détruit et ne sera plus appelé.

interval : Le temps entre deux appels de fonctions, en millisecondes (1/1000ème de secondes.)
function : La fonction à appeler périodiquement.
marshal : Le triseur ( marshaller) à utiliser à la place de la focntion (si non NULL).
data : Les données à passer à la fonction.
destroy : Fonction à appeler quand le timeout est détruit ou  NULL.
Returns : Un identifiant unique pour l'événement source.

gtk_timeout_add ()


guint 			gtk_timeout_add 			(guint32 interval,
GtkFunction function,
gpointer data);

Attention

gtk_timeout_add est dépréciée depuis la version 2.4 et ne doit pas être utilisée dans un code nouvellement écrit. Utilisez  g_timeout_add() à la place.

Déclare une fonction à appeler  périodiquement. La fonction sera appelée de façon répétée après  interval en  millisecondes jusqu'à ce qu'elle retourne s FALSE , à ce moment le  timeout est détruit et ne sera plus appelé.

interval : Le temps entre deux appels de fonctions, en millisecondes (1/1000ème de secondes.)
function : La fonction à appeler périodiquement.
data : Les données à passer à la fonction.
Returns : Un identifiant unique pour l'événement source.

gtk_timeout_remove ()


void gtk_timeout_remove (guint timeout_handler_id);

Attention

gtk_timeout_remove  est dépréciée depuis la version 2.4 et ne doit pas être utilisée dans un code nouvellement écrit. Utilisez  g_source_remove() à la place.

Supprime le timeout donné, détruisant toutes les informations le concernant.

timeout_handler_id : L'idendifiant retourné quand le timeout est installé.

gtk_idle_add ()


guint 			gtk_idle_add 				(GtkFunction function,
gpointer data);

Attention

gtk_idle_add est dépréciée depuis la version 2.4 et ne doit pas être utilisée dans un code nouvellement écrit. Utilisez g_idle_add() à la place.

Fait en sorte que la boucle principale appelle la fonction donnée si  aucun événement de haute priorité n' attend d'être effectué. La priorité par défaut est GTK_PRIORITY_DEFAULT, ce qui est assez bas.

function : La fonction à appeler
data : Information à passer à la fonction
Retourne : Un seul handle pour cet enregistrement.

gtk_idle_add_priority ()


guint 			gtk_idle_add_priority 			(gint priority,
GtkFunction function,
gpointer data);

Attention

gtk_idle_add_priority est dépréciée depuis la version 2.4 et ne doit pas être utilisée dans un code nouvellement écrit. Utilisez g_idle_add_full() à la place.

Comme gtk_idle_add() cette fonction vous permet d'avoir un appel de fonction quand la boucle d'événements est ralentie. La différence est que vous pouvez donner une priorité différente avec GTK_PRIORITY_DEFAULT à la fonction ralentie.

priority : La priorité qui ne doit pas être au dessus de  G_PRIORITY_HIGH_IDLE. Notez que vous interfererez avec GTK+ si vous utilisez une priorité au dessus de  GTK_PRIORITY_RESIZE.
function : La fonction à appeler.
data : Donnée à passer à cette fonction.
Returns : Un identifiant unique pour la source d'événement.

gtk_idle_add_full ()


guint 			gtk_idle_add_full 			(gint priority,
GtkFunction function,
GtkCallbackMarshal marshal,
gpointer data,
GtkDestroyNotify destroy);

Attention

gtk_idle_add_full est dépréciée depuis la version 2.4 et ne doit pas être utilisée dans un code nouvellement écrit. Utilisez g_idle_add_full() à la place.

Comme gtk_idle_add() cette fonction vous permet d'avoir un appel de fonction quand la boucle d'événement est ralentie. La différence est que vous pouvez donner une priorité différente avec GTK_PRIORITY_DEFAULT  à la fonction ralentie.

priority : La priorité qui ne doit pas être au dessus de G_PRIORITY_HIGH_IDLE. Notez que vous interfererez avec GTK+ si vous utilisez une priorité au dessus de GTK_PRIORITY_RESIZE.
function : La fonction à appeler.
marshal : Le trieur (marshaller ) à utiliser à la place de la fonction (si  non-NULL).
data : Donnée à passer à cette fonction.
destroy : Fonction à appaeler quand le timeout est détruit ou  NULL.
Returns : Un identifiant unique pour la source d'événement.

gtk_idle_remove ()


void gtk_idle_remove (guint idle_handler_id);

Attention

gtk_idle_remove est dépréciée depuis la version 2.4 et ne doit pas être utilisée dans un code nouvellement écrit. Utilisez g_source_remove() à la place.

Supprime la fonction ralentie avec l'identifiant donné.

idle_handler_id : Identifié la fonction ralentie à annuler.

gtk_idle_remove_by_data ()


void gtk_idle_remove_by_data (gpointer data);

Attention

gtk_idle_remove_by_data est dépréciée depuis la version 2.4 et ne doit pas être utilisée dans un code nouvellement écrit. Utilisez g_idle_remove_by_data() à la place.

Supprime l'identifiant de la fonction ralentie en utilisant les données.

data :  supprime la fonction ralentie qui est enregistrée avec ces données utilsateurs.

gtk_input_add_full ()


guint 			gtk_input_add_full 			(gint source,
GdkInputCondition condition,
GdkInputFunction function,
GtkCallbackMarshal marshal,
gpointer data,
GtkDestroyNotify destroy);

Attention

gtk_input_add_full est dépréciée depuis la version 2.4 et ne doit pas être utilisée dans un code nouvellement écrit. Utilisez g_io_add_watch_full() à la place.

Déclare une fonction à appeler quand une condition devient vraie sur un descripteur de fichier.

source : Descripteur de dossier.
condition : la condition.
function : La fonction à appeler
marshal : Le trieur ( marshaller) à utiliser à la place de la fonction (si non-NULL).
data : Donnée passée callback à la function.
destroy : function callback à appeler avec  data  quand le handler d'entrée est supprimé, ou NULL.
Retourne : Un seul identifiant pour l'événement source; pour être utilisé avec gtk_input_remove().

gtk_input_remove ()


void gtk_input_remove (guint input_handler_id);

Attention

gtk_input_remove est dépréciée depuis la version 2.4 et ne doit pas être utilisée dans un code nouvellement écrit. Utilisez g_source_remove() à la place.

Supprime ma fonction avec l'identifiant donné.

input_handler_id : Identifie la fonction à supprimer.

GTK_PRIORITY_REDRAW


#define GTK_PRIORITY_REDRAW (G_PRIORITY_HIGH_IDLE + 20)

Attention

GTK_PRIORITY_REDRAW  a été dépréciée depuis la version 2.4 et ne doit plus être utilisé dans un code nouvellement écrit. Cette macro est dépréciée. Vous devez utiliserGDK_PRIORITY_REDRAW à la place.

Utilisez cette priorité pour redessiner des éléments relatifs. Elle est utilisée de façon interne par GTK+ en attendant le redessinement. Cette priorité est plus faible que  GTK_PRIORITY_RESIZE  pour éviter de redessiner un widget juste avant son redimensionnement (et donc le redessiner encore une fois.). 


GTK_PRIORITY_RESIZE


#define GTK_PRIORITY_RESIZE (G_PRIORITY_HIGH_IDLE + 10)

Utilisez cette priorité pour redimensionner un élément relatif. Elle est utiliser par GTK+ pour calculer la taille des widgets. Cette priorité est plus forte que  GTK_PRIORITY_REDRAW pour éviter le redimensionnement d'un widget qui vient juste d'être redessiné.


GTK_PRIORITY_HIGH


#define GTK_PRIORITY_HIGH G_PRIORITY_HIGH

Attention

GTK_PRIORITY_HIGH  a été dépréciée depuis la version 2.4 et ne doit plus être utilisé dans un code nouvellement écrit. Cette macro est dépréciée. Vous devez utiliser G_PRIORITY_HIGH à la place.

Utilisez ceci pour des timeouts de haute priorité. Cette priorité n'est jamais utilisée dans GTK+ ainsi tout ce qui est exécuté avec cette priorité devra être exécuté avant tout ce qui est dans la boîte à outils.


GTK_PRIORITY_INTERNAL


#define GTK_PRIORITY_INTERNAL GTK_PRIORITY_REDRAW

Attention

GTK_PRIORITY_INTERNAL est dépréciée et ne doit pas être utilisée pour du code nouvellement écrit.

Cette priorité concerne les éléments internes de GTK+. Ne l'utilisez pas dans vos applications.


GTK_PRIORITY_DEFAULT


#define GTK_PRIORITY_DEFAULT G_PRIORITY_DEFAULT_IDLE

Attention

GTK_PRIORITY_DEFAULT a été dépréciée depuis la version 2.4 et ne doit plus être utilisé dans un code nouvellement écrit. Cette macro est dépréciée. Vous devez utiliser G_PRIORITY_DEFAULT_IDLE à la place.

Priorité par défaut pour les fonctions lentes.


GTK_PRIORITY_LOW


#define GTK_PRIORITY_LOW G_PRIORITY_LOW

Attention

GTK_PRIORITY_LOW GTK_PRIORITY_DEFAULT a été dépréciée depuis la version 2.4 et ne doit plus être utilisé dans un code nouvellement écrit. Cette macro est dépréciée. Vous devez utiliser G_PRIORITY_LOW à la place.

Priorité pour tous les tâches de fond très importantes.


gtk_key_snooper_install ()


guint 			gtk_key_snooper_install 		(GtkKeySnoopFunc snooper,
gpointer func_data);

Installe une fonction espionne de touche qui sera appelée pour tous les événements de touche avant qu'ils soient délivrés normalement.

snooper : un GtkKeySnoopFunc.
func_data : Donnée à passer à  snooper.
Retourne : un identifiant unique pour l'espion de touche à utiliser avec gtk_key_snooper_remove().

GtkKeySnoopFunc ()


gint 			(*GtkKeySnoopFunc) 			(GtkWidget *grab_widget,
GdkEventKey *event,
gpointer func_data);

Fonction espionne de touche qui est appelée avant qu'un événement normal soit délivré. Elles peuvent être utilisées pour implémenter la minipulation d'événements liés à des définitions de touches.

grab_widget : le widget pour lequel l'événement a été délivré.
event : L'événement de touche.
func_data : la  func_data fournie à gtk_key_snooper_install().
Retourne : TRUE pour arrêter  une autre mise en action d' event, FALSE  pour continuer

gtk_key_snooper_remove ()


void 		gtk_key_snooper_remove 			(guint snooper_handler_id);

Suprime la fonction espionne de touche avec l'identifiant donné.Removes the key snooper function with the given id.

snooper_handler_id : Identifie l'espion de touche à supprimer.

gtk_get_current_event ()


GdkEvent* 		gtk_get_current_event 		(void);

Obtient une copie de l'événement courant mis en action par GTK+. Par exemple, si vous obtenez un signal "clicked" provenant de GtkButton, l'événement courant sera le GdkEventButton  qui aura déclenché le signal "clicked". L'événement retourné doit être l ibéré avec  gdk_event_free(). S'il n'y a pas d'événement courant, la fonction retourne NULL.

Retourne : une copie de l'événement courant, ou  NULL  s'il n'y a pas d'événement courant.

gtk_get_current_event_time ()


guint32 		gtk_get_current_event_time 		(void);

S'il y a une événement courant et qu'il a "timestamp" , retourne ce "timestamp" , autrement GDK_CURRENT_TIME.

Retourne : Le "timestamp" de l'événement courant, ou GDK_CURRENT_TIME.

gtk_get_current_event_state ()


gboolean 		gtk_get_current_event_state		 (GdkModifierType *state);

S'il y a un événement courant et qu'il a un champ d'état , met ce champ d'état dans  state  et retourne TRUE, autrement retourne FALSE.

state : un endroit pour placer l'état de l'événement courant
Retourne : TRUE s'il y a un évenement courant et s'il a un champ d'état.

gtk_get_event_widget ()


GtkWidget* 		gtk_get_event_widget		 (GdkEvent *event);

Si event est NULL ou l'événement n'est pas associé à un widget, retourne  NULL, autrement retourne le widget qui reçoit à l'origine l'événement.

event : un GdkEvent
Retourne : Le widget qui reçoit à l'origine event , ou NULL

gtk_propagate_event ()


void 			gtk_propagate_event			 (GtkWidget *widget,
GdkEvent *event);

Envoie un événement au widget, propageant l'événement aux widgets parents si l'événement n'est pas traité. Les événementsreçus par GTK+ depuis GDK commencent normalement par gtk_main_do_event().Dépendant du type d'événement, de l'existance de boîtes de dialogue modale, d'interceptions? etc...,  les événements peuvent être propagés; si c'est le cas  cette fonction est utilisée. gtk_propagate_event()  appelle gtk_widget_event() sur chaque widget sur lesquels elle décide d'envoyer l'événement. Ainsi gtk_widget_event() est la fonction de niveau le plus bas; elle imite simplement l'événement et éventuellement un signal sur le widget spécifique à l'événement.  gtk_propagate_event() est de niveau légèrement supérieur, et  gtk_main_do_event() a le niveau le plus haut.

Ceci dit, vous ne devriez pas avoir à utiliser ces fonctions, All that said, you most likely don't want to use any of these functions; la  synthésisation  d'événements est rarement nécessaire.  Consider asking on the mailing list for better ways to achieve your goals. Par exemple, utilisez  gdk_window_invalidate_rect() ou gtk_widget_queue_draw() à la place de faire ce qui a été exposé plus haut.

widget : un GtkWidget
event : un événenemt.

Voir Aussi

Voir le manuel de GLib, spécialement  GMainLoop et les fonctions de connexion de signal comme  g_signal_connect().