[gtk+] Add a testcase for custom levels in GtkLevelBar



commit e725b05f79384246c0333503173ce770312eead5
Author: Matthias Clasen <mclasen redhat com>
Date:   Sun Sep 8 16:39:49 2013 -0400

    Add a testcase for custom levels in GtkLevelBar
    
    This is related to https://bugzilla.gnome.org/show_bug.cgi?id=707695

 tests/Makefile.am    |    2 +
 tests/testlevelbar.c |   80 ++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 82 insertions(+), 0 deletions(-)
---
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 78acc6f..5478b9f 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -74,6 +74,7 @@ noinst_PROGRAMS =  $(TEST_PROGS)      \
        testkineticscrolling            \
        testlist                        \
        testlist2                       \
+       testlevelbar                    \
        testlockbutton                  \
        testmenubutton                  \
        testmountoperation              \
@@ -204,6 +205,7 @@ testimage_DEPENDENCIES = $(TEST_DEPS)
 testkineticscrolling_DEPENDENCIES = $(TEST_DEPS)
 testlist_DEPENDENCIES = $(TEST_DEPS)
 testlist2_DEPENDENCIES = $(TEST_DEPS)
+testlevelbar_DEPENDENCIES = $(TEST_DEPS)
 testlockbutton_DEPENDENCIES = $(TEST_DEPS)
 testmenubutton_DEPENDENCIES = $(TEST_DEPS)
 testmountoperation_DEPENDENCIES = $(TEST_DEPS)
diff --git a/tests/testlevelbar.c b/tests/testlevelbar.c
new file mode 100644
index 0000000..51b4af6
--- /dev/null
+++ b/tests/testlevelbar.c
@@ -0,0 +1,80 @@
+#include <gtk/gtk.h>
+
+static GtkWidget *
+create_level_bar (void)
+{
+  GtkWidget *level_bar;
+
+  level_bar = gtk_level_bar_new ();
+
+  gtk_level_bar_add_offset_value (GTK_LEVEL_BAR (level_bar),
+                                  GTK_LEVEL_BAR_OFFSET_LOW, 0.10);
+
+  gtk_level_bar_add_offset_value (GTK_LEVEL_BAR (level_bar),
+                                  "my-offset", 0.50);
+
+  return level_bar;
+}
+
+static void
+add_custom_css (void)
+{
+  GtkCssProvider *provider;
+  const gchar data[] =
+  ".level-bar.fill-block.empty-fill-block.level-my-offset {"
+  "   background-color: transparent;"
+  "   background-image: none;"
+  "   border-color: alpha(@theme_fg_color, 0.1);"
+  "}"
+  ".level-bar.fill-block.level-my-offset {"
+  "   background-image: linear-gradient(to bottom,"
+  "                                     shade(magenta,0.9),"
+  "                                     magenta,"
+  "                                     shade(magenta,0.85));"
+  "}";
+
+  provider = gtk_css_provider_new ();
+  gtk_css_provider_load_from_data (provider, data, -1, NULL);
+  gtk_style_context_add_provider_for_screen (gdk_screen_get_default (),
+                                             GTK_STYLE_PROVIDER (provider),
+                                             GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+}
+
+static gboolean
+increase_level (gpointer data)
+{
+  GtkLevelBar *bar = data;
+  gdouble value;
+
+  value = gtk_level_bar_get_value (bar);
+  value += 0.01;
+  if (value >= 1.0)
+    value = 0.0;
+  gtk_level_bar_set_value (bar, value);
+
+  return G_SOURCE_CONTINUE;
+}
+
+int
+main (int argc, char *argv[])
+{
+  GtkWidget *window;
+  GtkWidget *bar;
+
+  gtk_init (&argc, &argv);
+
+  add_custom_css ();
+
+  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+  gtk_window_set_default_size (GTK_WINDOW (window), 500, 100);
+  bar = create_level_bar ();
+  g_object_set (bar, "margin", 20, NULL);
+  gtk_container_add (GTK_CONTAINER (window), bar);
+  gtk_widget_show_all (window);
+
+  g_timeout_add (100, increase_level, bar);
+  gtk_main ();
+
+  return 0;
+}
+


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