summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorTim Janik <timj@imendio.com>2007-02-08 12:11:02 +0000
committerTim Janik <timj@src.gnome.org>2007-02-08 12:11:02 +0000
commit8a8202ce13a8355b90e92d53dcc29b4b1e9d9189 (patch)
tree43fca773b0b99eaa448a3597886a0816d1edb6c6 /tests
parentbd151b02f6466870c8d220faf6dbeb2cfb1c1299 (diff)
downloadgdk-pixbuf-8a8202ce13a8355b90e92d53dcc29b4b1e9d9189.tar.gz
applied patch from Xan Lopez which adds GTK_BUTTONBOX_CENTER to
Thu Feb 8 13:07:08 2007 Tim Janik <timj@imendio.com> * applied patch from Xan Lopez which adds GTK_BUTTONBOX_CENTER to GtkButtonBox (bug #336159). * gtk/gtkenums.h: * gtk/gtkvbbox.c, gtk/gtkhbbox.c, gtk/gtkbbox.c: support GTK_BUTTONBOX_CENTER. * tests/testbbox.c: new button box test, which allows testing of the various button box properties. * tests/testgtk.c: added GTK_BUTTONBOX_CENTER. to button box test. svn path=/trunk/; revision=17276
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile.am6
-rw-r--r--tests/testbbox.c180
-rw-r--r--tests/testgtk.c40
3 files changed, 210 insertions, 16 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 3058726ad..aac13b0cd 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -33,6 +33,7 @@ noinst_PROGRAMS = \
print-editor \
testaccel \
testassistant \
+ testbbox \
testcairo \
testcalendar \
testcombo \
@@ -93,6 +94,7 @@ testicontheme_DEPENDENCIES = $(TEST_DEPS)
testiconview_DEPENDENCIES = $(TEST_DEPS)
testaccel_DEPENDENCIES = $(TEST_DEPS)
testassistant_DEPENDENCIES = $(TEST_DEPS)
+testbbox_DEPENDENCIES = $(TEST_DEPS)
testcairo_DEPENDENCIES = $(TEST_DEPS)
testcalendar_DEPENDENCIES = $(TEST_DEPS)
testcombo_DEPENDENCIES = $(TEST_DEPS)
@@ -143,6 +145,7 @@ floatingtest_LDADD = $(LDADDS)
print_editor_LDADD = $(LDADDS)
testaccel_LDADD = $(LDADDS)
testassistant_LDADD = $(LDADDS)
+testbbox_LDADD = $(LDADDS)
testcairo_LDADD = $(LDADDS)
testcalendar_LDADD = $(LDADDS)
testcombo_LDADD = $(LDADDS)
@@ -259,6 +262,9 @@ testmerge_SOURCES = \
testactions_SOURCES = \
testactions.c
+testbbox_SOURCES = \
+ testbbox.c
+
testiconview_SOURCES = \
testiconview.c \
prop-editor.c
diff --git a/tests/testbbox.c b/tests/testbbox.c
new file mode 100644
index 000000000..7ff753e32
--- /dev/null
+++ b/tests/testbbox.c
@@ -0,0 +1,180 @@
+/*
+ * Copyright (C) 2006 Nokia Corporation.
+ * Author: Xan Lopez <xan.lopez@nokia.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ *
+ */
+
+#include <gtk/gtk.h>
+
+#define N_BUTTONS 3
+
+GtkWidget *bbox = NULL;
+GtkWidget *hbbox = NULL, *vbbox = NULL;
+
+static const char* styles[] = { "GTK_BUTTONBOX_DEFAULT_STYLE",
+ "GTK_BUTTONBOX_SPREAD",
+ "GTK_BUTTONBOX_EDGE",
+ "GTK_BUTTONBOX_START",
+ "GTK_BUTTONBOX_END",
+ "GTK_BUTTONBOX_CENTER",
+ NULL};
+
+static const char* types[] = { "GtkHButtonBox",
+ "GtkVButtonBox",
+ NULL};
+
+static void
+populate_combo_with (GtkComboBox *combo, const char** elements)
+{
+ int i;
+
+ for (i = 0; elements[i] != NULL; i++) {
+ gtk_combo_box_append_text (combo, elements[i]);
+ }
+
+ gtk_combo_box_set_active (combo, 0);
+}
+
+static void
+combo_changed_cb (GtkComboBox *combo,
+ gpointer user_data)
+{
+ char *text;
+ int i;
+
+ text = gtk_combo_box_get_active_text (combo);
+
+ for (i = 0; styles[i]; i++) {
+ if (g_str_equal (text, styles[i])) {
+ gtk_button_box_set_layout (GTK_BUTTON_BOX (bbox), (GtkButtonBoxStyle)i);
+ }
+ }
+}
+
+static void
+reparent_widget (GtkWidget *widget,
+ GtkWidget *old_parent,
+ GtkWidget *new_parent)
+{
+ gtk_widget_ref (widget);
+ gtk_container_remove (GTK_CONTAINER (old_parent), widget);
+ gtk_container_add (GTK_CONTAINER (new_parent), widget);
+ gtk_widget_unref (widget);
+}
+
+static void
+combo_types_changed_cb (GtkComboBox *combo,
+ GtkWidget **buttons)
+{
+ int i;
+ char *text;
+ GtkWidget *old_parent, *new_parent;
+ GtkButtonBoxStyle style;
+
+ text = gtk_combo_box_get_active_text (combo);
+
+ if (g_str_equal (text, "GtkHButtonBox")) {
+ old_parent = vbbox;
+ new_parent = hbbox;
+ } else {
+ old_parent = hbbox;
+ new_parent = vbbox;
+ }
+
+ bbox = new_parent;
+
+ for (i = 0; i < N_BUTTONS; i++) {
+ reparent_widget (buttons[i], old_parent, new_parent);
+ }
+
+ gtk_widget_hide (old_parent);
+ style = gtk_button_box_get_layout (GTK_BUTTON_BOX (old_parent));
+ gtk_button_box_set_layout (GTK_BUTTON_BOX (new_parent), style);
+ gtk_widget_show (new_parent);
+}
+
+static void
+option_cb (GtkToggleButton *option,
+ GtkWidget *button)
+{
+ gboolean active = gtk_toggle_button_get_active (option);
+
+ gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (bbox),
+ button, active);
+}
+
+static const char* strings[] = { "Ok", "Cancel", "Help" };
+
+int
+main (int argc,
+ char **argv)
+{
+ GtkWidget *window, *buttons[N_BUTTONS];
+ GtkWidget *vbox, *hbox, *combo_styles, *combo_types, *option;
+ int i;
+
+ gtk_init (&argc, &argv);
+
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ g_signal_connect (G_OBJECT (window), "delete-event", G_CALLBACK (gtk_main_quit), NULL);
+
+ vbox = gtk_vbox_new (FALSE, 0);
+ gtk_container_add (GTK_CONTAINER (window), vbox);
+
+ /* GtkHButtonBox */
+
+ hbbox = gtk_hbutton_box_new ();
+ gtk_box_pack_start (GTK_BOX (vbox), hbbox, TRUE, TRUE, 5);
+
+ for (i = 0; i < N_BUTTONS; i++) {
+ buttons[i] = gtk_button_new_with_label (strings[i]);
+ gtk_container_add (GTK_CONTAINER (hbbox), buttons[i]);
+ }
+
+ bbox = hbbox;
+
+ /* GtkVButtonBox */
+ vbbox = gtk_vbutton_box_new ();
+ gtk_box_pack_start (GTK_BOX (vbox), vbbox, TRUE, TRUE, 5);
+
+ /* Options */
+
+ hbox = gtk_hbox_new (FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
+
+ combo_types = gtk_combo_box_new_text ();
+ populate_combo_with (GTK_COMBO_BOX (combo_types), types);
+ g_signal_connect (G_OBJECT (combo_types), "changed", G_CALLBACK (combo_types_changed_cb), buttons);
+ gtk_box_pack_start (GTK_BOX (hbox), combo_types, TRUE, TRUE, 0);
+
+ combo_styles = gtk_combo_box_new_text ();
+ populate_combo_with (GTK_COMBO_BOX (combo_styles), styles);
+ g_signal_connect (G_OBJECT (combo_styles), "changed", G_CALLBACK (combo_changed_cb), NULL);
+ gtk_box_pack_start (GTK_BOX (hbox), combo_styles, TRUE, TRUE, 0);
+
+ option = gtk_check_button_new_with_label ("Help is secondary");
+ g_signal_connect (G_OBJECT (option), "toggled", G_CALLBACK (option_cb), buttons[N_BUTTONS - 1]);
+
+ gtk_box_pack_start (GTK_BOX (hbox), option, FALSE, FALSE, 0);
+
+ gtk_widget_show_all (window);
+ gtk_widget_hide (vbbox);
+
+ gtk_main ();
+
+ return 0;
+}
diff --git a/tests/testgtk.c b/tests/testgtk.c
index c7274e05b..dcab31c44 100644
--- a/tests/testgtk.c
+++ b/tests/testgtk.c
@@ -1133,23 +1133,27 @@ create_button_box (GtkWidget *widget)
vbox = gtk_vbox_new (FALSE, 0);
gtk_container_set_border_width (GTK_CONTAINER (vbox), 10);
gtk_container_add (GTK_CONTAINER (frame_horz), vbox);
-
+
gtk_box_pack_start (GTK_BOX (vbox),
- create_bbox (TRUE, "Spread", 40, 85, 20, GTK_BUTTONBOX_SPREAD),
+ create_bbox (TRUE, "Spread", 40, 85, 20, GTK_BUTTONBOX_SPREAD),
TRUE, TRUE, 0);
-
+
gtk_box_pack_start (GTK_BOX (vbox),
- create_bbox (TRUE, "Edge", 40, 85, 20, GTK_BUTTONBOX_EDGE),
+ create_bbox (TRUE, "Edge", 40, 85, 20, GTK_BUTTONBOX_EDGE),
TRUE, TRUE, 5);
-
+
gtk_box_pack_start (GTK_BOX (vbox),
- create_bbox (TRUE, "Start", 40, 85, 20, GTK_BUTTONBOX_START),
+ create_bbox (TRUE, "Start", 40, 85, 20, GTK_BUTTONBOX_START),
TRUE, TRUE, 5);
-
+
gtk_box_pack_start (GTK_BOX (vbox),
- create_bbox (TRUE, "End", 40, 85, 20, GTK_BUTTONBOX_END),
+ create_bbox (TRUE, "End", 40, 85, 20, GTK_BUTTONBOX_END),
TRUE, TRUE, 5);
-
+
+ gtk_box_pack_start (GTK_BOX (vbox),
+ create_bbox (TRUE, "Center", 40, 85, 20, GTK_BUTTONBOX_CENTER),
+ TRUE, TRUE, 5);
+
frame_vert = gtk_frame_new ("Vertical Button Boxes");
gtk_box_pack_start (GTK_BOX (main_vbox), frame_vert, TRUE, TRUE, 10);
@@ -1158,19 +1162,23 @@ create_button_box (GtkWidget *widget)
gtk_container_add (GTK_CONTAINER (frame_vert), hbox);
gtk_box_pack_start (GTK_BOX (hbox),
- create_bbox (FALSE, "Spread", 30, 85, 20, GTK_BUTTONBOX_SPREAD),
+ create_bbox (FALSE, "Spread", 30, 85, 20, GTK_BUTTONBOX_SPREAD),
TRUE, TRUE, 0);
-
+
gtk_box_pack_start (GTK_BOX (hbox),
- create_bbox (FALSE, "Edge", 30, 85, 20, GTK_BUTTONBOX_EDGE),
+ create_bbox (FALSE, "Edge", 30, 85, 20, GTK_BUTTONBOX_EDGE),
TRUE, TRUE, 5);
-
+
gtk_box_pack_start (GTK_BOX (hbox),
- create_bbox (FALSE, "Start", 30, 85, 20, GTK_BUTTONBOX_START),
+ create_bbox (FALSE, "Start", 30, 85, 20, GTK_BUTTONBOX_START),
TRUE, TRUE, 5);
-
+
gtk_box_pack_start (GTK_BOX (hbox),
- create_bbox (FALSE, "End", 30, 85, 20, GTK_BUTTONBOX_END),
+ create_bbox (FALSE, "End", 30, 85, 20, GTK_BUTTONBOX_END),
+ TRUE, TRUE, 5);
+
+ gtk_box_pack_start (GTK_BOX (hbox),
+ create_bbox (FALSE, "Center", 30, 85, 20, GTK_BUTTONBOX_CENTER),
TRUE, TRUE, 5);
}