[gtk+] Add a testcase for custom levels in GtkLevelBar
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] Add a testcase for custom levels in GtkLevelBar
- Date: Sun, 8 Sep 2013 20:45:50 +0000 (UTC)
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]