[gtk+/widget-padding: 7/11] Add testadjustsize test, to test new adjust size methods and related features
- From: Havoc Pennington <hp src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/widget-padding: 7/11] Add testadjustsize test, to test new adjust size methods and related features
- Date: Wed, 8 Sep 2010 02:10:42 +0000 (UTC)
commit 5c09e9e727b6602818b56be2f7e63a90a3d0b348
Author: Havoc Pennington <hp pobox com>
Date: Sat Sep 4 23:40:32 2010 -0400
Add testadjustsize test, to test new adjust size methods and related features
This will test size adjust, and interactions with other padding and border
tests/Makefile.am | 3 +
tests/testadjustsize.c | 250 ++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 253 insertions(+), 0 deletions(-)
---
diff --git a/tests/Makefile.am b/tests/Makefile.am
index b7bc395..ccec905 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -30,6 +30,7 @@ noinst_PROGRAMS = $(TEST_PROGS) \
flicker \
print-editor \
testaccel \
+ testadjustsize \
testassistant \
testbbox \
testbuttons \
@@ -117,6 +118,7 @@ testicontheme_DEPENDENCIES = $(TEST_DEPS)
testiconview_DEPENDENCIES = $(TEST_DEPS)
testaccel_DEPENDENCIES = $(TEST_DEPS)
testapplication_DEPENDENCIES = $(TEST_DEPS)
+testadjustsize_DEPENDENCIES = $(TEST_DEPS)
testassistant_DEPENDENCIES = $(TEST_DEPS)
testbbox_DEPENDENCIES = $(TEST_DEPS)
testbuttons_DEPENDENCIES = $(TEST_DEPS)
@@ -179,6 +181,7 @@ flicker_LDADD = $(LDADDS)
simple_LDADD = $(LDADDS)
print_editor_LDADD = $(LDADDS)
testaccel_LDADD = $(LDADDS)
+testadjustsize_LDADD = $(LDADDS)
testapplication_LDADD = $(LDADDS)
testassistant_LDADD = $(LDADDS)
testbbox_LDADD = $(LDADDS)
diff --git a/tests/testadjustsize.c b/tests/testadjustsize.c
new file mode 100644
index 0000000..f6418cf
--- /dev/null
+++ b/tests/testadjustsize.c
@@ -0,0 +1,250 @@
+/* testadjustsize.c
+ * Copyright (C) 2010 Havoc Pennington
+ *
+ * Author:
+ * Havoc Pennington <hp pobox com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#include <gtk/gtk.h>
+
+static GtkWidget *test_window;
+
+enum {
+ TEST_WIDGET_LABEL,
+ TEST_WIDGET_VERTICAL_LABEL,
+ TEST_WIDGET_WRAP_LABEL,
+ TEST_WIDGET_ALIGNMENT,
+ TEST_WIDGET_IMAGE,
+ TEST_WIDGET_BUTTON,
+ TEST_WIDGET_LAST
+};
+
+static GtkWidget *test_widgets[TEST_WIDGET_LAST];
+
+static GtkWidget*
+create_image (void)
+{
+ return gtk_image_new_from_stock (GTK_STOCK_OPEN,
+ GTK_ICON_SIZE_BUTTON);
+}
+
+static GtkWidget*
+create_label (gboolean vertical,
+ gboolean wrap)
+{
+ GtkWidget *widget;
+
+ widget = gtk_label_new ("This is a label, label label label");
+
+ if (vertical)
+ gtk_label_set_angle (GTK_LABEL (widget), 90);
+
+ if (wrap)
+ gtk_label_set_line_wrap (GTK_LABEL (widget), TRUE);
+
+ return widget;
+}
+
+static GtkWidget*
+create_button (void)
+{
+ return gtk_button_new_with_label ("BUTTON!");
+}
+
+static gboolean
+on_expose_alignment (GtkWidget *widget,
+ GdkEventExpose *event,
+ void *data)
+{
+ cairo_t *cr;
+
+ cr = gdk_cairo_create (event->window);
+
+ cairo_set_source_rgb (cr, 1.0, 0.0, 0.0);
+ cairo_rectangle (cr,
+ widget->allocation.x,
+ widget->allocation.y,
+ widget->allocation.width,
+ widget->allocation.height);
+ cairo_fill (cr);
+
+ cairo_destroy (cr);
+
+ return FALSE;
+}
+
+static GtkWidget*
+create_alignment (void)
+{
+ GtkWidget *alignment;
+
+ alignment = gtk_alignment_new (0.5, 0.5, 1.0, 1.0);
+
+ /* make the alignment visible */
+ gtk_widget_set_redraw_on_allocate (alignment, TRUE);
+ g_signal_connect (G_OBJECT (alignment),
+ "expose-event",
+ G_CALLBACK (on_expose_alignment),
+ NULL);
+
+ return alignment;
+}
+
+static void
+open_test_window (void)
+{
+ GtkWidget *table;
+ int i;
+
+ test_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+
+ g_signal_connect (test_window, "delete-event",
+ G_CALLBACK (gtk_main_quit), test_window);
+
+ gtk_window_set_resizable (GTK_WINDOW (test_window), FALSE);
+
+ test_widgets[TEST_WIDGET_IMAGE] = create_image ();
+ test_widgets[TEST_WIDGET_LABEL] = create_label (FALSE, FALSE);
+ test_widgets[TEST_WIDGET_VERTICAL_LABEL] = create_label (TRUE, FALSE);
+ test_widgets[TEST_WIDGET_WRAP_LABEL] = create_label (FALSE, TRUE);
+ test_widgets[TEST_WIDGET_BUTTON] = create_button ();
+ test_widgets[TEST_WIDGET_ALIGNMENT] = create_alignment ();
+
+ table = gtk_table_new (2, 3, FALSE);
+
+ gtk_container_add (GTK_CONTAINER (test_window), table);
+
+ for (i = 0; i < TEST_WIDGET_LAST; ++i)
+ {
+ gtk_table_attach (GTK_TABLE (table),
+ test_widgets[i],
+ i % 3,
+ i % 3 + 1,
+ i / 3,
+ i / 3 + 1,
+ 0, 0, 0, 0);
+ }
+
+ gtk_widget_show_all (test_window);
+}
+
+static void
+on_toggle_border_widths (GtkToggleButton *button,
+ void *data)
+{
+ gboolean has_border;
+ int i;
+
+ has_border = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button));
+
+ for (i = 0; i < TEST_WIDGET_LAST; ++i)
+ {
+ if (GTK_IS_CONTAINER (test_widgets[i]))
+ {
+ gtk_container_set_border_width (GTK_CONTAINER (test_widgets[i]),
+ has_border ? 50 : 0);
+ }
+ }
+}
+
+static void
+on_set_small_size_requests (GtkToggleButton *button,
+ void *data)
+{
+ gboolean has_small_size_requests;
+ int i;
+
+ has_small_size_requests = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button));
+
+ for (i = 0; i < TEST_WIDGET_LAST; ++i)
+ {
+ gtk_widget_set_size_request (test_widgets[i],
+ has_small_size_requests ? 5 : -1,
+ has_small_size_requests ? 5 : -1);
+ }
+}
+
+static void
+on_set_large_size_requests (GtkToggleButton *button,
+ void *data)
+{
+ gboolean has_large_size_requests;
+ int i;
+
+ has_large_size_requests = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button));
+
+ for (i = 0; i < TEST_WIDGET_LAST; ++i)
+ {
+ gtk_widget_set_size_request (test_widgets[i],
+ has_large_size_requests ? 200 : -1,
+ has_large_size_requests ? 200 : -1);
+ }
+}
+
+static void
+open_control_window (void)
+{
+ GtkWidget *window;
+ GtkWidget *box;
+ GtkWidget *toggle;
+
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+
+ g_signal_connect (window, "delete-event",
+ G_CALLBACK (gtk_main_quit), window);
+
+ box = gtk_box_new (GTK_ORIENTATION_VERTICAL, FALSE, 0);
+ gtk_container_add (GTK_CONTAINER (window), box);
+
+ toggle =
+ gtk_toggle_button_new_with_label ("Containers have borders");
+ g_signal_connect (G_OBJECT (toggle),
+ "toggled", G_CALLBACK (on_toggle_border_widths),
+ NULL);
+ gtk_container_add (GTK_CONTAINER (box), toggle);
+
+ toggle =
+ gtk_toggle_button_new_with_label ("Set small size requests");
+ g_signal_connect (G_OBJECT (toggle),
+ "toggled", G_CALLBACK (on_set_small_size_requests),
+ NULL);
+ gtk_container_add (GTK_CONTAINER (box), toggle);
+
+ toggle =
+ gtk_toggle_button_new_with_label ("Set large size requests");
+ g_signal_connect (G_OBJECT (toggle),
+ "toggled", G_CALLBACK (on_set_large_size_requests),
+ NULL);
+ gtk_container_add (GTK_CONTAINER (box), toggle);
+
+
+ gtk_widget_show_all (window);
+}
+
+int
+main (int argc, char *argv[])
+{
+ gtk_init (&argc, &argv);
+
+ open_test_window ();
+ open_control_window ();
+
+ gtk_main ();
+
+ return 0;
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]