diff options
Diffstat (limited to 'demos/gtk-demo')
-rw-r--r-- | demos/gtk-demo/Makefile.am | 1 | ||||
-rw-r--r-- | demos/gtk-demo/expander.c | 59 |
2 files changed, 60 insertions, 0 deletions
diff --git a/demos/gtk-demo/Makefile.am b/demos/gtk-demo/Makefile.am index d79ba01693..c139feb3da 100644 --- a/demos/gtk-demo/Makefile.am +++ b/demos/gtk-demo/Makefile.am @@ -13,6 +13,7 @@ demos = \ drawingarea.c \ editable_cells.c \ entry_completion.c \ + expander.c \ hypertext.c \ images.c \ list_store.c \ diff --git a/demos/gtk-demo/expander.c b/demos/gtk-demo/expander.c new file mode 100644 index 0000000000..bc52a9683e --- /dev/null +++ b/demos/gtk-demo/expander.c @@ -0,0 +1,59 @@ +/* Expander + * + * GtkExpander allows to provide additional content that is initially hidden. + * This is also known as "disclosure triangle". + * + */ + +#include <config.h> +#include <gtk/gtk.h> + +static GtkWidget *window = NULL; + + +GtkWidget * +do_expander (GtkWidget *do_widget) +{ + GtkWidget *vbox; + GtkWidget *label; + GtkWidget *expander; + + if (!window) + { + window = gtk_dialog_new_with_buttons ("GtkExpander", + GTK_WINDOW (do_widget), + 0, + GTK_STOCK_CLOSE, + GTK_RESPONSE_NONE, + NULL); + gtk_window_set_resizable (GTK_WINDOW (window), FALSE); + + g_signal_connect (window, "response", + G_CALLBACK (gtk_widget_destroy), NULL); + g_signal_connect (window, "destroy", + G_CALLBACK (gtk_widget_destroyed), &window); + + vbox = gtk_vbox_new (FALSE, 5); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), vbox, TRUE, TRUE, 0); + gtk_container_set_border_width (GTK_CONTAINER (vbox), 5); + + label = gtk_label_new ("Expander demo. Click on the triangle for details."); + gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); + + /* Create the expander */ + expander = gtk_expander_new ("Details"); + gtk_box_pack_start (GTK_BOX (vbox), expander, FALSE, FALSE, 0); + + label = gtk_label_new ("Details can be shown or hidden."); + gtk_container_add (GTK_CONTAINER (expander), label); + } + + if (!GTK_WIDGET_VISIBLE (window)) + gtk_widget_show_all (window); + else + gtk_widget_destroy (window); + + return window; +} + + |