Différences entre les versions de « Programmation GTK+/Barres de progression »

m
wikifié
m (wikifié)
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 <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.
 
#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;
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;
/* 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);
/* 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",
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 <code>pbar</code>.
 
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 <code>pvalue</code>.
 
Et c'est tout ce qu'il y a à savoir sur les barres de progression. Amusez-vous bien.
31

modifications