/*
La boîte de message (MessageBox)
http://www.gtk-fr.org/wakka.php?wiki=LesBoitesDeDialogue
gcc `pkg-config --cflags --libs gtk+-2.0` -o 23b 23b.c &&./23b
*/
#include <stdlib.h>
#include <gtk/gtk.h>
void OnAboutBtn(GtkWidget *pBtn, gpointer data);
void OnQuitBtn(GtkWidget *pBtn, gpointer data);
int main(int argc, char **argv)
{
GtkWidget *pWindow;
GtkWidget *pVBox;
GtkWidget *pQuitterBtn;
GtkWidget *pAboutBtn;
gtk_init(&argc,&argv);
pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(pWindow), "GtkMessageDialog");
gtk_window_set_default_size(GTK_WINDOW(pWindow), 320, 200);
g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
pVBox = gtk_vbox_new(TRUE,0);
gtk_container_add(GTK_CONTAINER(pWindow),pVBox);
pAboutBtn = gtk_button_new_with_label("A propos...");
gtk_box_pack_start(GTK_BOX(pVBox), pAboutBtn, TRUE, FALSE,0);
g_signal_connect(G_OBJECT(pAboutBtn), "clicked", G_CALLBACK(OnAboutBtn), (GtkWidget*) pWindow);
pQuitterBtn = gtk_button_new_from_stock (GTK_STOCK_QUIT);
gtk_box_pack_start(GTK_BOX(pVBox), pQuitterBtn, TRUE, FALSE, 0);
g_signal_connect(G_OBJECT(pQuitterBtn), "clicked", G_CALLBACK(OnQuitBtn), (GtkWidget*) pWindow);
gtk_widget_show_all(pWindow);
gtk_main();
return EXIT_SUCCESS;
}
void OnAboutBtn(GtkWidget *pBtn, gpointer data)
{
GtkWidget *pAbout;
gchar *sSite = "http://www.gtk-fr.org";
/* Creation de la boite de message */
/* Type : Information -> GTK_MESSAGE_INFO */
/* Bouton : 1 OK -> GTK_BUTTONS_OK */
pAbout = gtk_message_dialog_new (GTK_WINDOW(data),
GTK_DIALOG_MODAL,
GTK_MESSAGE_INFO,
GTK_BUTTONS_OK,
"Cours GTK+ 2.0\n%s",
sSite);
/* Affichage de la boite de message */
gtk_dialog_run(GTK_DIALOG(pAbout));
/* Destruction de la boite de message */
gtk_widget_destroy(pAbout);
}
void OnQuitBtn(GtkWidget* widget, gpointer data)
{
GtkWidget *pQuestion;
/* Creation de la boite de message */
/* Type : Question -> GTK_MESSAGE_QUESTION */
/* Boutons : 1 OUI, 1 NON -> GTK_BUTTONS_YES_NO */
pQuestion = gtk_message_dialog_new (GTK_WINDOW(data),
GTK_DIALOG_MODAL,
GTK_MESSAGE_QUESTION,
GTK_BUTTONS_YES_NO,
"Voulez vous vraiment\nquitter ce programme?");
/* Affichage et attente d une reponse */
switch(gtk_dialog_run(GTK_DIALOG(pQuestion)))
{
case GTK_RESPONSE_YES:
/* OUI -> on quitte l application */
gtk_main_quit();
break;
case GTK_RESPONSE_NO:
/* NON -> on detruit la boite de message */
gtk_widget_destroy(pQuestion);
break;
}
}
