« Programmation GTK/Barres de progression » : différence entre les versions
m Robot : modifie Catégorie:Livre:Programmation GTK plus |
m wikifié |
||
Ligne 1 : | Ligne 1 : | ||
Les barres de progression sont utilisées pour afficher la progression d'une opération. Elles sont très simple à utiliser comme vous pourrez le constater en étudiant le code ci-dessous. Commençons d'abord par l'appel permettant de créer une nouvelle barre. |
Les barres de progression sont utilisées pour afficher la progression d'une opération. Elles sont très simple à utiliser comme vous pourrez le constater en étudiant le code ci-dessous. Commençons d'abord par l'appel permettant de créer une nouvelle barre. |
||
GtkWidget *gtk_progress_bar_new (void); |
GtkWidget *gtk_progress_bar_new (void); |
||
Maintenant que la barre est créée, nous pouvons l'utiliser. |
Maintenant que la barre est créée, nous pouvons l'utiliser. |
||
void gtk_progress_bar_update (GtkProgressBar *pbar, gfloat percentage); |
void gtk_progress_bar_update (GtkProgressBar *pbar, gfloat percentage); |
||
Le premier paramètre est la barre de progression sur laquelle on veut agir, et le second est le pourcentage « effectué », signifiant le remplissage de la barres de 0 à 100 % (réel compris entre 0 et 1). |
Le premier paramètre est la barre de progression sur laquelle on veut agir, et le second est le pourcentage « effectué », signifiant le remplissage de la barres de 0 à 100 % (réel compris entre 0 et 1). |
||
Les barres de progression sont généralement utilisées avec les délais d'expiration ou autres fonctions identiques (voir la section sur Expirations, fonctions d'E/S et d'attente) pour donner l'illusion du multi-tâches. Toutes emploient la fonction gtk_progress_bar_update de la même façon. |
Les barres de progression sont généralement utilisées avec les délais d'expiration ou autres fonctions identiques (voir la section sur Expirations, fonctions d'E/S et d'attente) pour donner l'illusion du multi-tâches. Toutes emploient la fonction <code>gtk_progress_bar_update</code> de la même façon. |
||
Voici un exemple de barre de progression mise à jour par des expirations. Ce code montre aussi comment réinitialiser une barre. |
Voici un exemple de barre de progression mise à jour par des expirations. Ce code montre aussi comment réinitialiser une barre. |
||
#include <gtk/gtk.h> |
#include <gtk/gtk.h> |
||
static int ptimer = 0; |
static int ptimer = 0; |
||
int pstat = TRUE; |
int pstat = TRUE; |
||
/* Cette fonction incrémente et met à jour la barre de progression, |
/* Cette fonction incrémente et met à jour la barre de progression, |
||
* elle la réinitialise si pstat vaut FALSE */ |
|||
gint progress (gpointer data) |
gint progress (gpointer data) |
||
{ |
{ |
||
gfloat pvalue; |
gfloat pvalue; |
||
/* récupération de la valeur courante de la barre */ |
/* récupération de la valeur courante de la barre */ |
||
pvalue = GTK_PROGRESS_BAR (data)->percentage; |
pvalue = GTK_PROGRESS_BAR (data)->percentage; |
||
if ((pvalue >= 1.0) || (pstat == FALSE)) { |
if ((pvalue >= 1.0) || (pstat == FALSE)) { |
||
pvalue = 0.0; |
pvalue = 0.0; |
||
Ligne 38 : | Ligne 38 : | ||
return TRUE; |
return TRUE; |
||
} |
} |
||
/* Cette fonction signale une réinitialisation de la barre */ |
/* Cette fonction signale une réinitialisation de la barre */ |
||
void progress_r (void) |
void progress_r (void) |
||
{ |
{ |
||
pstat = FALSE; |
pstat = FALSE; |
||
} |
} |
||
void destroy (GtkWidget *widget, gpointer *data) |
void destroy (GtkWidget *widget, gpointer *data) |
||
{ |
{ |
||
gtk_main_quit (); |
gtk_main_quit (); |
||
} |
} |
||
int main (int argc, char *argv[]) |
int main (int argc, char *argv[]) |
||
{ |
{ |
||
GtkWidget *window; |
GtkWidget *window; |
||
GtkWidget *button; |
GtkWidget *button; |
||
Ligne 77 : | Ligne 77 : | ||
/* Crée une barre, la place dans la table et l'affiche */ |
/* Crée une barre, la place dans la table et l'affiche */ |
||
pbar = gtk_progress_bar_new (); |
pbar = gtk_progress_bar_new (); |
||
gtk_table_attach_defaults(GTK_TABLE(table), pbar, 0,2,1,2); |
gtk_table_attach_defaults(GTK_TABLE(table), pbar, 0,2,1,2); |
||
Ligne 84 : | Ligne 84 : | ||
/* Configure le délai d'expiration pour gérer automatiquement la |
/* Configure le délai d'expiration pour gérer automatiquement la |
||
* mise à jour de la barre */ |
* mise à jour de la barre */ |
||
ptimer = gtk_timeout_add (100, progress, pbar); |
ptimer = gtk_timeout_add (100, progress, pbar); |
||
/* Ce bouton indique à la barre qu'elle doit se réinitialiser */ |
/* Ce bouton indique à la barre qu'elle doit se réinitialiser */ |
||
button = gtk_button_new_with_label ("Reset"); |
button = gtk_button_new_with_label ("Reset"); |
||
gtk_signal_connect (GTK_OBJECT (button), "clicked", |
gtk_signal_connect (GTK_OBJECT (button), "clicked", |
||
Ligne 108 : | Ligne 108 : | ||
return 0; |
return 0; |
||
} |
} |
||
Dans ce petit programme, il y a quatre parties concernant le fonctionnement général des barres de progression, nous les étudierons dans l'ordre de leurs appels. |
Dans ce petit programme, il y a quatre parties concernant le fonctionnement général des barres de progression, nous les étudierons dans l'ordre de leurs appels. |
||
pbar = gtk_progress_bar_new (); |
pbar = gtk_progress_bar_new (); |
||
Cet appel crée une nouvelle barre, nommée pbar. |
Cet appel crée une nouvelle barre, nommée <code>pbar</code>. |
||
ptimer = gtk_timeout_add (100, progress, pbar); |
ptimer = gtk_timeout_add (100, progress, pbar); |
||
Cet appel utilise des délais d'expiration pour permettre un intervalle de temps constant. ces délais ne sont pas nécessaires à l'utilisation des barres de progression. |
Cet appel utilise des délais d'expiration pour permettre un intervalle de temps constant. ces délais ne sont pas nécessaires à l'utilisation des barres de progression. |
||
pvalue = GTK_PROGRESS_BAR (data)->percentage; |
pvalue = GTK_PROGRESS_BAR (data)->percentage; |
||
Ce code assigne à pvalue la valeur du pourcentage de la barre. |
Ce code assigne à pvalue la valeur du pourcentage de la barre. |
||
gtk_progress_bar_update (GTK_PROGRESS_BAR (data), pvalue); |
gtk_progress_bar_update (GTK_PROGRESS_BAR (data), pvalue); |
||
Finalement, ce code met à jour la barre avec la valeur de pvalue. |
Finalement, ce code met à jour la barre avec la valeur de <code>pvalue</code>. |
||
Et c'est tout ce qu'il y a à savoir sur les barres de progression. Amusez-vous bien. |
Et c'est tout ce qu'il y a à savoir sur les barres de progression. Amusez-vous bien. |
Version du 19 avril 2007 à 19:16
Les barres de progression sont utilisées pour afficher la progression d'une opération. Elles sont très simple à utiliser comme vous pourrez le constater en étudiant le code ci-dessous. Commençons d'abord par l'appel permettant de créer une nouvelle barre.
GtkWidget *gtk_progress_bar_new (void);
Maintenant que la barre est créée, nous pouvons l'utiliser.
void gtk_progress_bar_update (GtkProgressBar *pbar, gfloat percentage);
Le premier paramètre est la barre de progression sur laquelle on veut agir, et le second est le pourcentage « effectué », signifiant le remplissage de la barres de 0 à 100 % (réel compris entre 0 et 1).
Les barres de progression sont généralement utilisées avec les délais d'expiration ou autres fonctions identiques (voir la section sur Expirations, fonctions d'E/S et d'attente) pour donner l'illusion du multi-tâches. Toutes emploient la fonction gtk_progress_bar_update
de la même façon.
Voici un exemple de barre de progression mise à jour par des expirations. Ce code montre aussi comment réinitialiser une barre.
#include <gtk/gtk.h> static int ptimer = 0; int pstat = TRUE; /* Cette fonction incrémente et met à jour la barre de progression, * elle la réinitialise si pstat vaut FALSE */ gint progress (gpointer data) { gfloat pvalue; /* récupération de la valeur courante de la barre */ pvalue = GTK_PROGRESS_BAR (data)->percentage; if ((pvalue >= 1.0) || (pstat == FALSE)) { pvalue = 0.0; pstat = TRUE; } pvalue += 0.01; gtk_progress_bar_update (GTK_PROGRESS_BAR (data), pvalue); return TRUE; }
/* Cette fonction signale une réinitialisation de la barre */ void progress_r (void) { pstat = FALSE; }
void destroy (GtkWidget *widget, gpointer *data) { gtk_main_quit (); }
int main (int argc, char *argv[]) { GtkWidget *window; GtkWidget *button; GtkWidget *label; GtkWidget *table; GtkWidget *pbar; gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_signal_connect (GTK_OBJECT (window), "delete_event", GTK_SIGNAL_FUNC (destroy), NULL); gtk_container_border_width (GTK_CONTAINER (window), 10); table = gtk_table_new(3,2,TRUE); gtk_container_add (GTK_CONTAINER (window), table); label = gtk_label_new ("Exemple de barre de progression"); gtk_table_attach_defaults(GTK_TABLE(table), label, 0,2,0,1); gtk_widget_show(label); /* Crée une barre, la place dans la table et l'affiche */ pbar = gtk_progress_bar_new (); gtk_table_attach_defaults(GTK_TABLE(table), pbar, 0,2,1,2); gtk_widget_show (pbar); /* Configure le délai d'expiration pour gérer automatiquement la * mise à jour de la barre */ ptimer = gtk_timeout_add (100, progress, pbar); /* Ce bouton indique à la barre qu'elle doit se réinitialiser */ button = gtk_button_new_with_label ("Reset"); gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (progress_r), NULL); gtk_table_attach_defaults(GTK_TABLE(table), button, 0,1,2,3); gtk_widget_show(button); button = gtk_button_new_with_label ("Annuler"); gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (destroy), NULL); gtk_table_attach_defaults(GTK_TABLE(table), button, 1,2,2,3); gtk_widget_show (button); gtk_widget_show(table); gtk_widget_show(window); gtk_main (); return 0; }
Dans ce petit programme, il y a quatre parties concernant le fonctionnement général des barres de progression, nous les étudierons dans l'ordre de leurs appels.
pbar = gtk_progress_bar_new ();
Cet appel crée une nouvelle barre, nommée pbar
.
ptimer = gtk_timeout_add (100, progress, pbar);
Cet appel utilise des délais d'expiration pour permettre un intervalle de temps constant. ces délais ne sont pas nécessaires à l'utilisation des barres de progression.
pvalue = GTK_PROGRESS_BAR (data)->percentage;
Ce code assigne à pvalue la valeur du pourcentage de la barre.
gtk_progress_bar_update (GTK_PROGRESS_BAR (data), pvalue);
Finalement, ce code met à jour la barre avec la valeur de pvalue
.
Et c'est tout ce qu'il y a à savoir sur les barres de progression. Amusez-vous bien.