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 69 70 71
| #include <gtk/gtk.h>
#include <gdk/gdk.h>
#include <stdio.h>
int annuler = 0;
int stop = 0;
gpointer threadwhile(gpointer data) {
GtkButton * b = (GtkButton*) data;
int count = 0;
char buffer[100];
while(1) {
if(stop == 1) break;
printf("\n test %d",count);
sprintf(buffer,"test %d",count);
gdk_threads_enter();
gtk_button_set_label(b,buffer);
gdk_threads_leave();
count ++;
}
annuler = 0;
stop = 0;
return FALSE;
}
void on_button_clicked(GtkButton * button, gpointer data) {
if(annuler == 1) stop = 1;
else {
g_thread_new(NULL,threadwhile,button);
annuler = 1;
}
}
GtkWidget * create_window1() {
GtkWidget * window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window1), "test gtk3");
GtkWidget * vbox12 = gtk_vbox_new (FALSE, 0);
gtk_widget_show (vbox12);
gtk_container_add (GTK_CONTAINER (window1), vbox12);
GtkWidget * button = gtk_button_new();
gtk_button_set_label(GTK_BUTTON(button),"compile");
g_signal_connect ((gpointer) button, "clicked",
G_CALLBACK (on_button_clicked),
NULL);
gtk_widget_show (button);
gtk_container_add (GTK_CONTAINER (vbox12), button);
return window1;
}
int main(int argc, char *argv[]) {
gdk_threads_init ();
gdk_threads_enter ();
gtk_init (&argc, &argv);
GtkWidget * window1 = create_window1 ();
gtk_widget_show (window1);
g_signal_connect ((gpointer) window1, "destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_main ();
gdk_threads_leave();
} |
Partager