[gtk+/wip/baseline3: 17/17] Add tests/testbaseline



commit 280a94506c34c9ded5186c518783bfcaa2073880
Author: Alexander Larsson <alexl redhat com>
Date:   Tue Mar 5 15:23:31 2013 +0100

    Add tests/testbaseline

 tests/Makefile.am    |    5 +
 tests/testbaseline.c |  382 ++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 387 insertions(+), 0 deletions(-)
---
diff --git a/tests/Makefile.am b/tests/Makefile.am
index c416965..4f27f89 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -36,6 +36,7 @@ noinst_PROGRAMS =  $(TEST_PROGS)      \
        testappchooser                  \
        testappchooserbutton            \
        testassistant                   \
+       testbaseline                    \
        testbbox                        \
        testboxcss                      \
        testbuttons                     \
@@ -165,6 +166,7 @@ testiconview_DEPENDENCIES = $(TEST_DEPS)
 testaccel_DEPENDENCIES = $(TEST_DEPS)
 testadjustsize_DEPENDENCIES = $(TEST_DEPS)
 testassistant_DEPENDENCIES = $(TEST_DEPS)
+testbaseline_DEPENDENCIES = $(TEST_DEPS)
 testbbox_DEPENDENCIES = $(TEST_DEPS)
 testbuttons_DEPENDENCIES = $(TEST_DEPS)
 testcairo_DEPENDENCIES = $(TEST_DEPS)
@@ -356,6 +358,9 @@ testmerge_SOURCES =                 \
 testactions_SOURCES =          \
        testactions.c
 
+testbaseline_SOURCES =                 \
+       testbaseline.c
+
 testbbox_SOURCES =             \
        testbbox.c
 
diff --git a/tests/testbaseline.c b/tests/testbaseline.c
new file mode 100644
index 0000000..94b4ee7
--- /dev/null
+++ b/tests/testbaseline.c
@@ -0,0 +1,382 @@
+/*
+ * 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, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include <gtk/gtk.h>
+
+static char *baseline_pos_str[] = {
+  "BASELINE_POSITION_TOP",
+  "BASELINE_POSITION_CENTER",
+  "BASELINE_POSITION_BOTTOM"
+};
+
+static void
+baseline_row_value_changed (GtkSpinButton *spin_button,
+                           GtkGrid *grid)
+{
+  gint row = gtk_spin_button_get_value_as_int (spin_button);
+
+  gtk_grid_set_baseline_row (grid, row);
+}
+
+static void
+homogeneous_changed (GtkToggleButton *toggle_button,
+                   GtkGrid *grid)
+{
+  gtk_grid_set_row_homogeneous (grid, gtk_toggle_button_get_active (toggle_button));
+}
+
+static void
+baseline_position_changed (GtkComboBox *combo,
+                          GtkBox *hbox)
+{
+  int i = gtk_combo_box_get_active (combo);
+
+  gtk_box_set_baseline_position (hbox, i);
+}
+
+static void
+image_size_value_changed (GtkSpinButton *spin_button,
+                         GtkImage *image)
+{
+  gint size = gtk_spin_button_get_value_as_int (spin_button);
+
+  gtk_image_set_pixel_size (GTK_IMAGE (image), size);
+}
+
+int
+main (int    argc,
+      char **argv)
+{
+  GtkWidget *window, *label, *entry, *button, *grid, *notebook;
+  GtkWidget *vbox, *hbox, *grid_hbox, *spin, *spin2, *toggle, *combo, *image, *ebox;
+  PangoFontDescription *font;
+  GtkAdjustment *adjustment;
+  int i, j;
+
+  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);
+
+  notebook = gtk_notebook_new ();
+  gtk_container_add (GTK_CONTAINER (window), notebook);
+
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+  gtk_notebook_append_page (GTK_NOTEBOOK (notebook),
+                           vbox, gtk_label_new ("hboxes"));
+
+  for (j = 0; j < 2; j++)
+    {
+      hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 10);
+      gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 5);
+
+      char *aligns_names[] = { "FILL", "BASELINE" };
+      GtkAlign aligns[] = { GTK_ALIGN_FILL, GTK_ALIGN_BASELINE};
+
+      label = gtk_label_new (aligns_names[j]);
+      gtk_container_add (GTK_CONTAINER (hbox), label);
+
+      for (i = 0; i < 3; i++) {
+       label = gtk_label_new ("│XYyj,Ö...");
+
+       font = pango_font_description_new ();
+       pango_font_description_set_size (font, 5*(i+1)* 1024);
+       gtk_widget_override_font (label, font);
+
+       gtk_widget_set_valign (label, aligns[j]);
+
+       gtk_container_add (GTK_CONTAINER (hbox), label);
+      }
+
+      for (i = 0; i < 3; i++) {
+       entry = gtk_entry_new ();
+       gtk_entry_set_text (GTK_ENTRY (entry), "│XYyj,Ö...");
+
+       font = pango_font_description_new ();
+       pango_font_description_set_size (font, 5*(i+1)* 1024);
+       gtk_widget_override_font (entry, font);
+
+       gtk_widget_set_valign (entry, aligns[j]);
+
+       gtk_container_add (GTK_CONTAINER (hbox), entry);
+      }
+
+      spin = gtk_spin_button_new (NULL, 0, 1);
+      gtk_orientable_set_orientation (GTK_ORIENTABLE (spin), GTK_ORIENTATION_VERTICAL);
+      gtk_widget_set_valign (spin, aligns[j]);
+      gtk_container_add (GTK_CONTAINER (hbox), spin);
+    }
+
+  grid_hbox = hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 10);
+  gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 5);
+
+  combo = gtk_combo_box_text_new ();
+  gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), baseline_pos_str[0]);
+  gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), baseline_pos_str[1]);
+  gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), baseline_pos_str[2]);
+  gtk_combo_box_set_active (GTK_COMBO_BOX (combo), 1);
+  gtk_container_add (GTK_CONTAINER (hbox), combo);
+
+  for (j = 0; j < 2; j++)
+    {
+      hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 10);
+      gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 5);
+
+      g_signal_connect (G_OBJECT (combo), "changed",
+                       G_CALLBACK (baseline_position_changed), hbox);
+
+      if (j == 0)
+       label = gtk_label_new ("Baseline:");
+      else
+       label = gtk_label_new ("Normal:");
+      gtk_container_add (GTK_CONTAINER (hbox), label);
+
+      for (i = 0; i < 3; i++)
+       {
+         button = gtk_button_new_with_label ("│Xyj,Ö");
+
+         font = pango_font_description_new ();
+         pango_font_description_set_size (font, 5*(i+1)* 1024);
+         gtk_widget_override_font (button, font);
+
+         if (j == 0)
+           gtk_widget_set_valign (button, GTK_ALIGN_BASELINE);
+
+         gtk_container_add (GTK_CONTAINER (hbox), button);
+       }
+
+      for (i = 0; i < 3; i++)
+       {
+         button = gtk_button_new_with_label ("│Xyj,Ö");
+
+         gtk_button_set_image (GTK_BUTTON (button),
+                               gtk_image_new_from_icon_name ("face-sad", GTK_ICON_SIZE_BUTTON));
+         gtk_button_set_always_show_image (GTK_BUTTON (button), TRUE);
+
+         font = pango_font_description_new ();
+         pango_font_description_set_size (font, 5*(i+1)* 1024);
+         gtk_widget_override_font (button, font);
+
+         if (j == 0)
+           gtk_widget_set_valign (button, GTK_ALIGN_BASELINE);
+
+         gtk_container_add (GTK_CONTAINER (hbox), button);
+       }
+
+      ebox = gtk_event_box_new ();
+      if (j == 0)
+       gtk_widget_set_valign (ebox, GTK_ALIGN_BASELINE);
+      gtk_container_add (GTK_CONTAINER (hbox), ebox);
+
+      image = gtk_image_new_from_icon_name ("face-sad", GTK_ICON_SIZE_BUTTON);
+      gtk_image_set_pixel_size (GTK_IMAGE (image), 34);
+      if (j == 0)
+       gtk_widget_set_valign (image, GTK_ALIGN_BASELINE);
+      gtk_container_add (GTK_CONTAINER (ebox), image);
+
+      button = gtk_toggle_button_new_with_label ("│Xyj,Ö");
+      if (j == 0)
+       gtk_widget_set_valign (button, GTK_ALIGN_BASELINE);
+      gtk_container_add (GTK_CONTAINER (hbox), button);
+
+      button = gtk_toggle_button_new_with_label ("│Xyj,Ö");
+      gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (button), TRUE);
+      if (j == 0)
+       gtk_widget_set_valign (button, GTK_ALIGN_BASELINE);
+      gtk_container_add (GTK_CONTAINER (hbox), button);
+
+      button = gtk_check_button_new_with_label ("│Xyj,Ö");
+      if (j == 0)
+       gtk_widget_set_valign (button, GTK_ALIGN_BASELINE);
+      gtk_container_add (GTK_CONTAINER (hbox), button);
+
+      button = gtk_radio_button_new_with_label (NULL, "│Xyj,Ö");
+      if (j == 0)
+       gtk_widget_set_valign (button, GTK_ALIGN_BASELINE);
+      gtk_container_add (GTK_CONTAINER (hbox), button);
+    }
+
+
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+  gtk_notebook_append_page (GTK_NOTEBOOK (notebook),
+                           vbox, gtk_label_new ("grid"));
+
+  grid_hbox = hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 10);
+  gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 5);
+
+  label = gtk_label_new ("Align me:");
+  gtk_widget_set_valign (label, GTK_ALIGN_BASELINE);
+
+  gtk_container_add (GTK_CONTAINER (hbox), label);
+
+  grid = gtk_grid_new ();
+  gtk_widget_set_valign (grid, GTK_ALIGN_BASELINE);
+  gtk_grid_set_column_spacing (GTK_GRID (grid), 8);
+  gtk_grid_set_row_spacing (GTK_GRID (grid), 8);
+
+  for (j = 0; j < 4; j++)
+    {
+      char *labels[] = { "Normal:", "Baseline (top):", "Baseline (center):", "Baseline (bottom):"};
+      label = gtk_label_new (labels[j]);
+
+      gtk_grid_attach (GTK_GRID (grid),
+                      label,
+                      0, j,
+                      1, 1);
+      gtk_widget_set_vexpand (label, TRUE);
+
+      if (j != 0)
+       gtk_grid_set_row_baseline_position (GTK_GRID (grid),
+                                           j, (GtkBaselinePosition)(j-1));
+
+      for (i = 0; i < 3; i++)
+       {
+         label = gtk_label_new ("Xyjg,Ö.");
+
+         font = pango_font_description_new ();
+         pango_font_description_set_size (font, 5*(i+1)* 1024);
+         gtk_widget_override_font (label, font);
+
+         if (j != 0)
+           gtk_widget_set_valign (label, GTK_ALIGN_BASELINE);
+
+         gtk_grid_attach (GTK_GRID (grid),
+                          label,
+                          i+1, j,
+                          1, 1);
+       }
+
+      for (i = 0; i < 3; i++)
+       {
+         button = gtk_button_new_with_label ("│Xyj,Ö");
+
+         gtk_button_set_image (GTK_BUTTON (button),
+                               gtk_image_new_from_icon_name ("face-sad", GTK_ICON_SIZE_BUTTON));
+         gtk_button_set_always_show_image (GTK_BUTTON (button), TRUE);
+
+         font = pango_font_description_new ();
+         pango_font_description_set_size (font, 5*(i+1)* 1024);
+         gtk_widget_override_font (button, font);
+
+         if (j != 0)
+           gtk_widget_set_valign (button, GTK_ALIGN_BASELINE);
+
+         gtk_grid_attach (GTK_GRID (grid),
+                          button,
+                          i+4, j,
+                          1, 1);
+       }
+
+    }
+
+  gtk_container_add (GTK_CONTAINER (hbox), grid);
+
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 10);
+  gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 5);
+
+  adjustment = gtk_adjustment_new (0.0, -1.0, 5.0, 1.0, 1.0, 0.0);
+  spin = gtk_spin_button_new (adjustment, 1.0, 0);
+  g_signal_connect (spin, "value-changed", (GCallback)baseline_row_value_changed, grid);
+  gtk_container_add (GTK_CONTAINER (hbox), spin);
+
+  toggle = gtk_toggle_button_new_with_label ("Homogeneous");
+  g_signal_connect (toggle, "toggled", (GCallback)homogeneous_changed, grid);
+  gtk_container_add (GTK_CONTAINER (hbox), toggle);
+
+  combo = gtk_combo_box_text_new ();
+  gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), baseline_pos_str[0]);
+  gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), baseline_pos_str[1]);
+  gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), baseline_pos_str[2]);
+  gtk_combo_box_set_active (GTK_COMBO_BOX (combo), 1);
+  g_signal_connect (G_OBJECT (combo), "changed",
+                   G_CALLBACK (baseline_position_changed), grid_hbox);
+  gtk_container_add (GTK_CONTAINER (hbox), combo);
+
+  vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+  gtk_notebook_append_page (GTK_NOTEBOOK (notebook),
+                           vbox, gtk_label_new ("button box"));
+
+  hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 10);
+  gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 5);
+
+  adjustment = gtk_adjustment_new (34.0, 1.0, 64.0, 1.0, 1.0, 0.0);
+  spin = gtk_spin_button_new (adjustment, 1.0, 0);
+  gtk_container_add (GTK_CONTAINER (hbox), spin);
+
+  adjustment = gtk_adjustment_new (16.0, 1.0, 64.0, 1.0, 1.0, 0.0);
+  spin2 = gtk_spin_button_new (adjustment, 1.0, 0);
+  gtk_container_add (GTK_CONTAINER (hbox), spin2);
+
+  for (j = 0; j < 3; j++)
+    {
+      hbox = gtk_button_box_new (GTK_ORIENTATION_HORIZONTAL);
+      gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 5);
+
+      gtk_box_set_baseline_position (GTK_BOX (hbox), j);
+
+      label = gtk_label_new (baseline_pos_str[j]);
+      gtk_container_add (GTK_CONTAINER (hbox), label);
+      gtk_widget_set_vexpand (label, TRUE);
+
+      image = gtk_image_new_from_icon_name ("face-sad", GTK_ICON_SIZE_BUTTON);
+      gtk_image_set_pixel_size (GTK_IMAGE (image), 34);
+      gtk_container_add (GTK_CONTAINER (hbox), image);
+
+      g_signal_connect (spin, "value-changed", (GCallback)image_size_value_changed, image);
+
+      for (i = 0; i < 3; i++)
+       {
+         button = gtk_button_new_with_label ("│Xyj,Ö");
+
+         font = pango_font_description_new ();
+         pango_font_description_set_size (font, 5*(i+1)* 1024);
+         gtk_widget_override_font (button, font);
+
+         if (i != 0)
+           gtk_widget_set_valign (button, GTK_ALIGN_BASELINE);
+
+         gtk_container_add (GTK_CONTAINER (hbox), button);
+       }
+
+      for (i = 0; i < 3; i++)
+       {
+         button = gtk_button_new_with_label ("│Xyj,Ö");
+
+         image = gtk_image_new_from_icon_name ("face-sad", GTK_ICON_SIZE_BUTTON);
+         gtk_image_set_pixel_size (GTK_IMAGE (image), 16);
+         gtk_button_set_image (GTK_BUTTON (button), image);
+         if (i == 0)
+           g_signal_connect (spin2, "value-changed", (GCallback)image_size_value_changed, image);
+         gtk_button_set_always_show_image (GTK_BUTTON (button), TRUE);
+
+         font = pango_font_description_new ();
+         pango_font_description_set_size (font, 5*(i+1)* 1024);
+         gtk_widget_override_font (button, font);
+
+         gtk_widget_set_valign (button, GTK_ALIGN_BASELINE);
+
+         gtk_container_add (GTK_CONTAINER (hbox), button);
+       }
+    }
+
+  gtk_widget_show_all (window);
+
+  gtk_main ();
+
+  return 0;
+}


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]