[gtk+] Add an action bar test
- From: William Jon McCann <mccann src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] Add an action bar test
- Date: Tue, 7 Jan 2014 13:47:50 +0000 (UTC)
commit 07f9b3ffa2e241679f6cc9efc027e70796625972
Author: Matthias Clasen <mclasen redhat com>
Date: Mon Jan 6 23:34:41 2014 -0500
Add an action bar test
https://bugzilla.gnome.org/show_bug.cgi?id=721665
tests/Makefile.am | 1 +
tests/testactionbar.c | 150 +++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 151 insertions(+), 0 deletions(-)
---
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 54633e3..7f250bc 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -141,6 +141,7 @@ noinst_PROGRAMS = $(TEST_PROGS) \
testrevealer \
testtitlebar \
testsplitheaders \
+ testactionbar \
testwindowsize
if USE_X11
diff --git a/tests/testactionbar.c b/tests/testactionbar.c
new file mode 100644
index 0000000..6c11c91
--- /dev/null
+++ b/tests/testactionbar.c
@@ -0,0 +1,150 @@
+#include <gtk/gtk.h>
+
+static void
+toggle_center (GtkCheckButton *button,
+ GParamSpec *pspec,
+ GtkActionBar *bar)
+{
+ if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button)))
+ {
+ GtkWidget *button;
+
+ button = gtk_button_new_with_label ("Center");
+ gtk_widget_show (button);
+ gtk_action_bar_set_center_widget (bar, button);
+ }
+ else
+ {
+ gtk_action_bar_set_center_widget (bar, NULL);
+ }
+}
+
+static void
+create_widgets (GtkActionBar *bar,
+ GtkPackType pack_type,
+ gint n)
+{
+ GList *children, *l;
+ GtkWidget *child;
+ gint i;
+ gchar *label;
+
+ children = gtk_container_get_children (GTK_CONTAINER (bar));
+ for (l = children; l; l = l->next)
+ {
+ GtkPackType type;
+
+ child = l->data;
+ gtk_container_child_get (GTK_CONTAINER (bar), child, "pack-type", &type, NULL);
+ if (type == pack_type)
+ gtk_container_remove (GTK_CONTAINER (bar), child);
+ }
+ g_list_free (children);
+
+ for (i = 0; i < n; i++)
+ {
+ label = g_strdup_printf ("%d", i);
+ child = gtk_button_new_with_label (label);
+ g_free (label);
+
+ gtk_widget_show (child);
+ if (pack_type == GTK_PACK_START)
+ gtk_action_bar_pack_start (bar, child);
+ else
+ gtk_action_bar_pack_end (bar, child);
+ }
+}
+
+static void
+change_start (GtkSpinButton *button,
+ GParamSpec *pspec,
+ GtkActionBar *bar)
+{
+ create_widgets (bar,
+ GTK_PACK_START,
+ gtk_spin_button_get_value_as_int (button));
+}
+
+static void
+change_end (GtkSpinButton *button,
+ GParamSpec *pspec,
+ GtkActionBar *bar)
+{
+ create_widgets (bar,
+ GTK_PACK_END,
+ gtk_spin_button_get_value_as_int (button));
+}
+
+static void
+activate (GApplication *gapp)
+{
+ GtkApplication *app = GTK_APPLICATION (gapp);
+ GtkWidget *window;
+ GtkWidget *box;
+ GtkWidget *grid;
+ GtkWidget *label;
+ GtkWidget *spin;
+ GtkWidget *check;
+ GtkWidget *bar;
+ GtkWidget *frame;
+
+ window = gtk_application_window_new (app);
+ gtk_application_add_window (app, GTK_WINDOW (window));
+
+ bar = gtk_action_bar_new ();
+
+ box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+
+ grid = gtk_grid_new ();
+ g_object_set (grid,
+ "halign", GTK_ALIGN_CENTER,
+ "margin", 20,
+ "row-spacing", 12,
+ "column-spacing", 12,
+ NULL);
+ gtk_box_pack_start (GTK_BOX (box), grid, FALSE, FALSE, 0);
+
+ label = gtk_label_new ("Start");
+ gtk_widget_set_halign (label, GTK_ALIGN_END);
+ spin = gtk_spin_button_new_with_range (0, 10, 1);
+ g_signal_connect (spin, "notify::value",
+ G_CALLBACK (change_start), bar);
+ gtk_grid_attach (GTK_GRID (grid), label, 0, 0, 1, 1);
+ gtk_grid_attach (GTK_GRID (grid), spin, 1, 0, 1, 1);
+
+ label = gtk_label_new ("Center");
+ gtk_widget_set_halign (label, GTK_ALIGN_END);
+ check = gtk_check_button_new ();
+ g_signal_connect (check, "notify::active",
+ G_CALLBACK (toggle_center), bar);
+ gtk_grid_attach (GTK_GRID (grid), label, 0, 1, 1, 1);
+ gtk_grid_attach (GTK_GRID (grid), check, 1, 1, 1, 1);
+
+ label = gtk_label_new ("End");
+ gtk_widget_set_halign (label, GTK_ALIGN_END);
+ spin = gtk_spin_button_new_with_range (0, 10, 1);
+ g_signal_connect (spin, "notify::value",
+ G_CALLBACK (change_end), bar);
+ gtk_grid_attach (GTK_GRID (grid), label, 0, 2, 1, 1);
+ gtk_grid_attach (GTK_GRID (grid), spin, 1, 2, 1, 1);
+
+ frame = gtk_frame_new (NULL);
+ gtk_widget_set_halign (frame, GTK_ALIGN_FILL);
+ gtk_widget_set_valign (frame, GTK_ALIGN_END);
+ gtk_container_add (GTK_CONTAINER (frame), bar);
+
+ gtk_box_pack_start (GTK_BOX (box), frame, TRUE, TRUE, 0);
+ gtk_container_add (GTK_CONTAINER (window), box);
+ gtk_widget_show_all (window);
+}
+
+int
+main (int argc, char *argv[])
+{
+ GtkApplication *app;
+
+ app = gtk_application_new ("org.gtk.Test.ActionBar", 0);
+ g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
+
+ return g_application_run (G_APPLICATION (app), argc, argv);
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]