summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorTim Janik <timj@gimp.org>1998-02-23 15:13:03 +0000
committerTim Janik <timj@src.gnome.org>1998-02-23 15:13:03 +0000
commitf6f927d227858f25f1e5df5a181a856ac2151314 (patch)
tree3f4e442f6e9cba641ad84588ac134dde3210c5fe /tests
parent1b656e0ddef81edfaf95aa766716d9e6179abb46 (diff)
downloadgdk-pixbuf-f6f927d227858f25f1e5df5a181a856ac2151314.tar.gz
implemented the statusbar widget. my first intend was to fix the code, but
Mon Feb 23 13:44:10 1998 Tim Janik <timj@gimp.org> * gtk/gtkstatusbar.h: * gtk/gtkstatusbar.c: (re-)implemented the statusbar widget. my first intend was to fix the code, but then there was nothing to fix - the whole thing was just a big JOKE! people who don't even know the semantics of the g_list_* functions shouldn't put their hands on widget code and inheritance! this is the first step to get bug "BUG: statusbar/hbox (redraw?) problem" worked out, i have to leave now, but will continue work on the resizing code this evening.
Diffstat (limited to 'tests')
-rw-r--r--tests/testgtk.c149
1 files changed, 149 insertions, 0 deletions
diff --git a/tests/testgtk.c b/tests/testgtk.c
index 50d7f27a7..4ad4ab3c7 100644
--- a/tests/testgtk.c
+++ b/tests/testgtk.c
@@ -782,6 +782,154 @@ make_toolbar (GtkWidget *window)
return toolbar;
}
+static guint statusbar_counter = 1;
+
+static void
+statusbar_push (GtkWidget *button,
+ GtkStatusbar *statusbar)
+{
+ gchar text[1024];
+
+ sprintf (text, "something %d", statusbar_counter++);
+
+ gtk_statusbar_push (statusbar, text);
+}
+
+static void
+statusbar_pop (GtkWidget *button,
+ GtkStatusbar *statusbar)
+{
+ gtk_statusbar_pop (statusbar);
+}
+
+static void
+statusbar_steal (GtkWidget *button,
+ GtkStatusbar *statusbar)
+{
+ gtk_statusbar_steal (statusbar, 4);
+}
+
+static void
+statusbar_popped (GtkStatusbar *statusbar,
+ const gchar *text)
+{
+ if (!statusbar->messages)
+ statusbar_counter = 1;
+}
+
+static void
+statusbar_dump_stack (GtkWidget *button,
+ GtkStatusbar *statusbar)
+{
+ GList *list;
+
+ for (list = statusbar->messages; list; list = list->next)
+ {
+ GtkStatusbarMsg *msg;
+
+ msg = list->data;
+ g_print ("status_id: %d, status_text: \"%s\"\n", msg->status_id, msg->text);
+ }
+}
+
+static void
+create_statusbar ()
+{
+ static GtkWidget *window = NULL;
+ GtkWidget *box1;
+ GtkWidget *box2;
+ GtkWidget *button;
+ GtkWidget *separator;
+ GtkWidget *statusbar;
+
+ if (!window)
+ {
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+
+ gtk_signal_connect (GTK_OBJECT (window), "destroy",
+ GTK_SIGNAL_FUNC (gtk_widget_destroyed),
+ &window);
+ gtk_signal_connect (GTK_OBJECT (window), "delete_event",
+ GTK_SIGNAL_FUNC (gtk_true),
+ NULL);
+
+ gtk_window_set_title (GTK_WINDOW (window), "statusbar");
+ gtk_container_border_width (GTK_CONTAINER (window), 0);
+
+
+ box1 = gtk_vbox_new (FALSE, 0);
+ gtk_container_add (GTK_CONTAINER (window), box1);
+ gtk_widget_show (box1);
+
+
+ box2 = gtk_vbox_new (FALSE, 10);
+ gtk_container_border_width (GTK_CONTAINER (box2), 10);
+ gtk_box_pack_start (GTK_BOX (box1), box2, TRUE, TRUE, 0);
+ gtk_widget_show (box2);
+
+ statusbar = gtk_statusbar_new ();
+ gtk_box_pack_end (GTK_BOX (box1), statusbar, TRUE, TRUE, 0);
+ gtk_widget_show (statusbar);
+ gtk_signal_connect (GTK_OBJECT (statusbar),
+ "text_popped",
+ GTK_SIGNAL_FUNC (statusbar_popped),
+ NULL);
+
+ button = gtk_widget_new (gtk_button_get_type (),
+ "GtkButton::label", "push something",
+ "GtkWidget::visible", TRUE,
+ "GtkWidget::parent", box2,
+ "GtkObject::signal::clicked", statusbar_push, statusbar,
+ NULL);
+
+ button = gtk_widget_new (gtk_button_get_type (),
+ "GtkButton::label", "pop",
+ "GtkWidget::visible", TRUE,
+ "GtkWidget::parent", box2,
+ "GtkObject::signal::clicked", statusbar_pop, statusbar,
+ NULL);
+
+ button = gtk_widget_new (gtk_button_get_type (),
+ "GtkButton::label", "steal #4",
+ "GtkWidget::visible", TRUE,
+ "GtkWidget::parent", box2,
+ "GtkObject::signal::clicked", statusbar_steal, statusbar,
+ NULL);
+
+ button = gtk_widget_new (gtk_button_get_type (),
+ "GtkButton::label", "dump stack",
+ "GtkWidget::visible", TRUE,
+ "GtkWidget::parent", box2,
+ "GtkObject::signal::clicked", statusbar_dump_stack, statusbar,
+ NULL);
+
+ separator = gtk_hseparator_new ();
+ gtk_box_pack_start (GTK_BOX (box1), separator, FALSE, TRUE, 0);
+ gtk_widget_show (separator);
+
+
+ box2 = gtk_vbox_new (FALSE, 10);
+ gtk_container_border_width (GTK_CONTAINER (box2), 10);
+ gtk_box_pack_start (GTK_BOX (box1), box2, FALSE, TRUE, 0);
+ gtk_widget_show (box2);
+
+
+ button = gtk_button_new_with_label ("close");
+ gtk_signal_connect_object (GTK_OBJECT (button), "clicked",
+ GTK_SIGNAL_FUNC(gtk_widget_destroy),
+ GTK_OBJECT (window));
+ gtk_box_pack_start (GTK_BOX (box2), button, TRUE, TRUE, 0);
+ GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT);
+ gtk_widget_grab_default (button);
+ gtk_widget_show (button);
+ }
+
+ if (!GTK_WIDGET_VISIBLE (window))
+ gtk_widget_show (window);
+ else
+ gtk_widget_destroy (window);
+}
+
static void
create_handle_box ()
{
@@ -4221,6 +4369,7 @@ create_main_window ()
{ "button box", create_button_box },
{ "toolbar", create_toolbar },
{ "handle box", create_handle_box },
+ { "statusbar", create_statusbar },
{ "reparent", create_reparent },
{ "pixmap", create_pixmap },
{ "tooltips", create_tooltips },