// Cliquer sur un boutton crée une nouvelle fenêtre avec un boutton qui ferme
// la nouvelle fenêtre.
#include <gtk/gtk.h>
GtkWidget *creer_une_Fenetre(gchar* caption, guint Width, guint Height)
{
GtkWidget *fen;
fen = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(fen), Width, Height);
gtk_window_set_title (GTK_WINDOW (fen), caption);
return fen;
}
GtkWidget *creer_un_Bouton(gchar* caption, GtkWidget *fenetreParent)
{
GtkWidget *bouton = gtk_button_new_with_label (caption);
gtk_container_add (GTK_CONTAINER (fenetreParent), bouton);
gtk_widget_show (bouton);
return bouton;
}
static void Bouton2_Cliqued( GtkWidget *widget, gpointer data )
{
g_print ("Destruction fenetre 2.\n");
gtk_widget_destroy (GTK_WIDGET(data));
}
static void Bouton_Cliqued( GtkWidget *widget, gpointer data )
{
g_print ("Creation de la fenetre 2.\n");
GtkWidget *fen2 = creer_une_Fenetre("Fenetre 2", 400, 200);
GtkWidget *button = creer_un_Bouton("Fermer", fen2);
g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (Bouton2_Cliqued), fen2);
gtk_widget_show (fen2);
}
int main( int argc, char *argv[] )
{
GtkWidget *fen1, *button;
gtk_init (&argc, &argv);
fen1 = creer_une_Fenetre("fenetre 1", 200, 300);
g_signal_connect(G_OBJECT(fen1),"destroy",G_CALLBACK(gtk_main_quit),NULL);
button = creer_un_Bouton("Creer une fenetre", fen1);
g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (Bouton_Cliqued), NULL);
gtk_widget_show (fen1);
gtk_main ();
return 0;
}