// 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;
}