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
| #include <gtk/gtk.h>
static gboolean delete_event_signal (GtkWidget *widget, gpointer data);
static void response_event_handler (GtkWidget *widget, gint response_id, gpointer data);
int
main (int argc,
char *argv[])
{
GtkWidget *window;
GtkWidget *dialog;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size (GTK_WINDOW(window), 320, 200);
/* Cette boite de dialogue doit être affichée lorsque l'on clique sur la
* croix rouge de la fenetre. Sinon, elle est cachée.
*/
dialog = gtk_message_dialog_new (NULL,
GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_QUESTION,
GTK_BUTTONS_YES_NO,
"Voulez vous vraiment quitter\nl'application ?", NULL);
g_signal_connect (dialog, "response", G_CALLBACK(response_event_handler), NULL);
g_signal_connect (window, "delete-event", G_CALLBACK(delete_event_signal), NULL);
gtk_widget_show (window);
gtk_main ();
return 0;
}
static gboolean
delete_event_signal (GtkWidget *widget, gpointer data)
{
/* La croix rouge a été cliquée, j'affiche le message */
gtk_widget_show_all (GTK_WIDGET(data));
return TRUE;
}
static void
response_event_handler (GtkWidget *widget, gint response_id, gpointer data)
{
/* L'utilisateur a répondu, je cache la boite de dialogue */
gtk_widget_hide_all (widget);
/* On quitte l'application en cas de réponse positive */
if (response_id == GTK_RESPONSE_YES
|| response_id == GTK_RESPONSE_NONE) {
gtk_main_quit ();
}
} |
Partager