[gtk+] Add padding and alignment tests to testadjustsize.c
- From: Havoc Pennington <hp src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] Add padding and alignment tests to testadjustsize.c
- Date: Mon, 13 Sep 2010 01:49:40 +0000 (UTC)
commit 1dc9451b57fa6b210a88980c23cbb6b91b754f5a
Author: Havoc Pennington <hp pobox com>
Date: Sun Sep 5 12:59:29 2010 -0400
Add padding and alignment tests to testadjustsize.c
tests/testadjustsize.c | 171 ++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 171 insertions(+), 0 deletions(-)
---
diff --git a/tests/testadjustsize.c b/tests/testadjustsize.c
index 4ecc6c9..b0389d9 100644
--- a/tests/testadjustsize.c
+++ b/tests/testadjustsize.c
@@ -114,6 +114,7 @@ open_test_window (void)
int i;
test_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_title (GTK_WINDOW (test_window), "Tests");
g_signal_connect (test_window, "delete-event",
G_CALLBACK (gtk_main_quit), test_window);
@@ -206,6 +207,7 @@ open_control_window (void)
GtkWidget *toggle;
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_title (GTK_WINDOW (window), "Controls");
g_signal_connect (window, "delete-event",
G_CALLBACK (gtk_main_quit), window);
@@ -238,6 +240,173 @@ open_control_window (void)
gtk_widget_show_all (window);
}
+#define TEST_WIDGET(outer) (gtk_bin_get_child (GTK_BIN (gtk_bin_get_child (GTK_BIN(outer)))))
+
+static GtkWidget*
+create_widget_visible_border (const char *text)
+{
+ GtkWidget *outer_box;
+ GtkWidget *inner_box;
+ GtkWidget *test_widget;
+ GtkWidget *label;
+ GdkColor color;
+
+ outer_box = gtk_event_box_new ();
+ gdk_color_parse ("black", &color);
+ gtk_widget_modify_bg (outer_box, GTK_STATE_NORMAL, &color);
+
+ inner_box = gtk_event_box_new ();
+ gtk_container_set_border_width (GTK_CONTAINER (inner_box), 5);
+ gdk_color_parse ("blue", &color);
+ gtk_widget_modify_bg (inner_box, GTK_STATE_NORMAL, &color);
+
+ gtk_container_add (GTK_CONTAINER (outer_box), inner_box);
+
+
+ test_widget = gtk_event_box_new ();
+ gdk_color_parse ("red", &color);
+ gtk_widget_modify_bg (test_widget, GTK_STATE_NORMAL, &color);
+
+ gtk_container_add (GTK_CONTAINER (inner_box), test_widget);
+
+ label = gtk_label_new (text);
+ gtk_container_add (GTK_CONTAINER (test_widget), label);
+
+ g_assert (TEST_WIDGET (outer_box) == test_widget);
+
+ gtk_widget_show_all (outer_box);
+
+ return outer_box;
+}
+
+static const char*
+enum_to_string (GType enum_type,
+ int value)
+{
+ GEnumValue *v;
+
+ v = g_enum_get_value (g_type_class_peek (enum_type), value);
+
+ return v->value_nick;
+}
+
+static GtkWidget*
+create_aligned (GtkAlign h_align,
+ GtkAlign v_align)
+{
+ GtkWidget *widget;
+ char *label;
+
+ label = g_strdup_printf ("h=%s v=%s",
+ enum_to_string (GTK_TYPE_ALIGN, h_align),
+ enum_to_string (GTK_TYPE_ALIGN, v_align));
+
+ widget = create_widget_visible_border (label);
+
+ g_object_set (G_OBJECT (TEST_WIDGET (widget)),
+ "h-align", h_align,
+ "v-align", v_align,
+ NULL);
+
+ return widget;
+}
+
+static void
+open_alignment_window (void)
+{
+ GtkWidget *table;
+ int i;
+ GEnumClass *align_class;
+
+ test_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_title (GTK_WINDOW (test_window), "Alignment");
+
+ g_signal_connect (test_window, "delete-event",
+ G_CALLBACK (gtk_main_quit), test_window);
+
+ gtk_window_set_resizable (GTK_WINDOW (test_window), TRUE);
+ gtk_window_set_default_size (GTK_WINDOW (test_window), 500, 500);
+
+ align_class = g_type_class_peek (GTK_TYPE_ALIGN);
+
+ table = gtk_table_new (align_class->n_values, align_class->n_values, TRUE);
+
+ gtk_container_add (GTK_CONTAINER (test_window), table);
+
+ for (i = 0; i < align_class->n_values; ++i)
+ {
+ int j;
+ for (j = 0; j < align_class->n_values; ++j)
+ {
+ GtkWidget *child =
+ create_aligned(align_class->values[i].value,
+ align_class->values[j].value);
+
+ gtk_table_attach (GTK_TABLE (table),
+ child,
+ i, i + 1,
+ j, j + 1,
+ GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+ }
+ }
+
+ gtk_widget_show_all (test_window);
+}
+
+static GtkWidget*
+create_margined (const char *propname)
+{
+ GtkWidget *widget;
+
+ widget = create_widget_visible_border (propname);
+
+ g_object_set (G_OBJECT (TEST_WIDGET (widget)),
+ propname, 15,
+ NULL);
+
+ return widget;
+}
+
+static void
+open_margin_window (void)
+{
+ GtkWidget *table;
+ int i;
+ const char * margins[] = {
+ "margin-left",
+ "margin-right",
+ "margin-top",
+ "margin-bottom",
+ "margin"
+ };
+
+ test_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ gtk_window_set_title (GTK_WINDOW (test_window), "Margin");
+
+ g_signal_connect (test_window, "delete-event",
+ G_CALLBACK (gtk_main_quit), test_window);
+
+ gtk_window_set_resizable (GTK_WINDOW (test_window), TRUE);
+
+ table = gtk_table_new (G_N_ELEMENTS (margins), 1, FALSE);
+
+ gtk_container_add (GTK_CONTAINER (test_window), table);
+
+ for (i = 0; i < (int) G_N_ELEMENTS (margins); ++i)
+ {
+ GtkWidget *child =
+ create_margined(margins[i]);
+
+ gtk_table_attach (GTK_TABLE (table),
+ child,
+ 0, 1,
+ i, i + 1,
+ GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+ }
+
+ gtk_widget_show_all (test_window);
+}
+
int
main (int argc, char *argv[])
{
@@ -245,6 +414,8 @@ main (int argc, char *argv[])
open_test_window ();
open_control_window ();
+ open_alignment_window ();
+ open_margin_window ();
gtk_main ();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]