home *** CD-ROM | disk | FTP | other *** search
/ Freelog 65 / Freelog065.iso / BAS / Bureautique / Gnumeric / gnumeric-1.3.92-rc1.exe / expander.c < prev    next >
C/C++ Source or Header  |  2004-10-15  |  1KB  |  60 lines

  1. /* Expander
  2.  *
  3.  * GtkExpander allows to provide additional content that is initially hidden.
  4.  * This is also known as "disclosure triangle".
  5.  *
  6.  */
  7.  
  8. #include <config.h>
  9. #include <gtk/gtk.h>
  10.  
  11. static GtkWidget *window = NULL;
  12.  
  13.  
  14. GtkWidget *
  15. do_expander (GtkWidget *do_widget)
  16. {
  17.   GtkWidget *vbox;
  18.   GtkWidget *label;
  19.   GtkWidget *expander;
  20.   
  21.   if (!window)
  22.   {
  23.     window = gtk_dialog_new_with_buttons ("GtkExpander",
  24.                       GTK_WINDOW (do_widget),
  25.                       0,
  26.                       GTK_STOCK_CLOSE,
  27.                       GTK_RESPONSE_NONE,
  28.                       NULL);
  29.     gtk_window_set_resizable (GTK_WINDOW (window), FALSE);
  30.  
  31.     g_signal_connect (window, "response",
  32.               G_CALLBACK (gtk_widget_destroy), NULL);
  33.     g_signal_connect (window, "destroy",
  34.               G_CALLBACK (gtk_widget_destroyed), &window);
  35.  
  36.     vbox = gtk_vbox_new (FALSE, 5);
  37.     gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), vbox, TRUE, TRUE, 0);
  38.     gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
  39.  
  40.     label = gtk_label_new ("Expander demo. Click on the triangle for details.");
  41.     gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
  42.  
  43.     /* Create the expander */
  44.     expander = gtk_expander_new ("Details");
  45.     gtk_box_pack_start (GTK_BOX (vbox), expander, FALSE, FALSE, 0);
  46.  
  47.     label = gtk_label_new ("Details can be shown or hidden.");
  48.     gtk_container_add (GTK_CONTAINER (expander), label);
  49.   }
  50.  
  51.   if (!GTK_WIDGET_VISIBLE (window))
  52.     gtk_widget_show_all (window);
  53.   else
  54.     gtk_widget_destroy (window);
  55.  
  56.   return window;
  57. }
  58.  
  59.  
  60.