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
| #include <gtk/gtk.h>
typedef struct {
GtkWidget *window;
GtkWidget *secondwindow;
} GlobalData;
void
button_clicked_event_CB (GtkButton *button, GlobalData *data)
{
static gboolean flag = TRUE; // Bascule
if (flag)
{
gtk_window_iconify (GTK_WINDOW (data->secondwindow));
gtk_button_set_label (button, "Deiconify second window");
}
else
{
gtk_window_deiconify (GTK_WINDOW (data->secondwindow));
gtk_button_set_label (button, "Iconify second window");
}
flag = !flag;
}
void
destroy_event_CB (GtkWidget *object, GlobalData *data)
{
gtk_widget_destroy (data->secondwindow);
gtk_main_quit ();
}
gint
main(int argc, gchar **argv)
{
GlobalData data;
GtkWidget *button;
gtk_init (&argc, &argv);
data.window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (data.window), "Principal window");
button = gtk_button_new_with_label ("Iconify second window");
gtk_container_add (GTK_CONTAINER(data.window), button);
data.secondwindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (data.secondwindow), "Second window");
gtk_widget_set_size_request (data.secondwindow, 200, 200);
// Affectation des différents signaux
g_signal_connect (G_OBJECT(data.window), "destroy", G_CALLBACK (destroy_event_CB), &data);
g_signal_connect (G_OBJECT(button), "clicked", G_CALLBACK (button_clicked_event_CB), &data);
// Affichage du tout.
gtk_widget_show_all(data.window);
gtk_widget_show_all (data.secondwindow);
// Boucle principale
gtk_main();
return 0;
} |
Partager