Bonjour,

J'utilise les cours de http://gtk.developpez.com/cours/gtk2/ pour mon apprentissage de la librairie GTK. Dans ces cours, les auteurs donnent un exemple d'utilisation d'un progressBar qui se charge lors de l'appui sur un Bouton.

Voici le code source :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <stdlib.h>
#include <gtk/gtk.h>
 
void OnButton(GtkWidget *pWidget, gpointer data);
 
int main(int argc,char **argv)
{
   GtkWidget* pWindow;
   GtkWidget *pMainVBox;
   GtkWidget *pProgress;
   GtkWidget *pButton;
 
   gtk_init(&argc,&argv);
 
   pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
   gtk_window_set_title(GTK_WINDOW(pWindow), "GtkProgressBar");
   gtk_window_set_default_size(GTK_WINDOW(pWindow), 320, 200);
   gtk_container_set_border_width(GTK_CONTAINER(pWindow), 4);
 
   pMainVBox = gtk_vbox_new(TRUE, 0);
   gtk_container_add(GTK_CONTAINER(pWindow), pMainVBox);
 
   /* Creation de la barre de progression */
   pProgress = gtk_progress_bar_new();
   gtk_box_pack_start(GTK_BOX(pMainVBox), pProgress, TRUE, FALSE, 0);
 
   pButton = gtk_button_new_from_stock(GTK_STOCK_REFRESH);
   gtk_box_pack_start(GTK_BOX(pMainVBox), pButton, TRUE, FALSE, 0);
   g_signal_connect_swapped(G_OBJECT(pButton), "clicked", G_CALLBACK(OnButton), pProgress);
 
   gtk_widget_show_all(pWindow);
 
   g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
 
   gtk_main();
 
   return EXIT_SUCCESS;
}
 
void OnButton(GtkWidget *pWidget, gpointer data)
{
   gdouble dFraction;
   gint i;
   gint iTotal = 2000;
 
   /* Initialisation */
   gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(pWidget), 0.0);
 
   /* Ici on grab sur la barre de progression pour 2 raisons : */
   /* - cela evite a GTK+ de regarder tous les evenements ce qui rend plus rapide */
   /* l'utilisation de gtk_main_iteration() */
   /* - on empeche toute action de l'utilisateur */
   gtk_grab_add(pWidget);
 
   for(i = 0 ; i < iTotal ; ++i)
   {
      dFraction = (gdouble)i / (gdouble)iTotal;
 
      /* Modification de la valeur de la barre de progression */
      gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(pWidget), dFraction);
 
      /* On donne la main a GTK+ */
      gtk_main_iteration ();
   }
 
   /* On supprime le grab sur la barre de progression */
   gtk_grab_remove(pWidget);
}
J'aimerais savoir si il est possible de créer un second Bouton qui pourrait arrêter la Progression de la ProgressBar.
J'espère avoir était le plus clair possible

Merci d'avance

PS : Est-ce normal qu'il n'y est pas de fonction rechercher sur ce Forum ?