[gnome-devel-docs] tutorials C: Progressbar sample/page and Makefile mod



commit b9adfd12d32a3f685396ea6c2db16c30c31c8831
Author: Monica Kochofar <monicakochofar gmail com>
Date:   Sat Jun 16 17:46:22 2012 -0400

    tutorials C: Progressbar sample/page and Makefile mod

 platform-demos/C/progressbar.c.page    |   46 ++++++++++++++++++
 platform-demos/C/samples/progressbar.c |   83 ++++++++++++++++++++++++++++++++
 platform-demos/Makefile.am             |    2 +
 3 files changed, 131 insertions(+), 0 deletions(-)
---
diff --git a/platform-demos/C/progressbar.c.page b/platform-demos/C/progressbar.c.page
new file mode 100644
index 0000000..944b58b
--- /dev/null
+++ b/platform-demos/C/progressbar.c.page
@@ -0,0 +1,46 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<page xmlns="http://projectmallard.org/1.0/";
+      xmlns:xi="http://www.w3.org/2001/XInclude";
+      type="guide" style="task"
+      id="progressbar.c">
+  <info>
+    <link type="guide" xref="beginner.c#display-widgets"/>
+    <link type="seealso" xref="spinner.c"/>
+    <revision version="0.1" date="2012-06-16" status="draft"/>
+
+    <credit type="author copyright">
+      <name>Monica Kochofar</name>
+      <email>monicakochofar gmail com</email>
+      <years>2012</years>
+    </credit>
+
+    <desc>A widget which indicates progress visually</desc>
+  </info>
+
+  <title>ProgressBar</title>
+
+  <media type="video" mime="application/ogv" src="media/progressbar.ogv">
+    <tt:tt xmlns:tt="http://www.w3.org/ns/ttml";>
+      <tt:body>
+        <tt:div begin="0s" end="6s">
+          <tt:p>
+              Pressing any key stops and starts this ProgressBar.
+          </tt:p>
+        </tt:div>
+      </tt:body>
+    </tt:tt>
+  </media>
+  <p>This ProgressBar is stopped and started by pressing any key.</p>
+
+      <code mime="text/x-csrc" style="numbered">
+<xi:include href="samples/progressbar.c" parse="text"><xi:fallback/></xi:include></code>
+<p>
+  In this sample we used the following:
+</p>
+<list>
+  <item><p><link href="http://developer.gnome.org/gtk3/3.4/GtkApplication.html";>GtkApplication</link></p></item>
+  <item><p><link href="http://developer.gnome.org/gtk3/3.4/GtkWindow.html";>GtkWindow</link></p></item>
+  <item><p><link href="http://developer.gnome.org/gtk3/stable/GtkProgressBar.html";>GtkProgressBar</link></p></item>
+  <item><p><link href="http://developer.gnome.org/glib/stable/glib-The-Main-Event-Loop.html#g-timeout-add";>G_Timeout</link></p></item>
+</list>
+</page>
diff --git a/platform-demos/C/samples/progressbar.c b/platform-demos/C/samples/progressbar.c
new file mode 100644
index 0000000..3bb0ef5
--- /dev/null
+++ b/platform-demos/C/samples/progressbar.c
@@ -0,0 +1,83 @@
+#include <gtk/gtk.h>
+
+/*Global variable used to keep track of the progressbar's state*/
+guint sourceID;
+
+
+/*A function that pulses the progressbar once each time it is called*/
+static gboolean
+pulse (gpointer   user_data)
+{
+  GtkWidget *progress_bar = user_data;
+
+  gtk_progress_bar_pulse (GTK_PROGRESS_BAR (progress_bar));
+  
+  return TRUE;
+}
+
+
+
+/*A function that causes the progressbar to start pulsing, or stop, according
+to how many key-press-events have taken place*/
+static gboolean
+key_press_event (GtkWidget *widget,
+                 GdkEvent *event,
+                 gpointer user_data)
+{
+  GtkWidget *progress_bar = user_data;
+
+  if (sourceID == 0) 
+     sourceID = g_timeout_add (100, pulse, GTK_PROGRESS_BAR (progress_bar));
+  else {
+     g_source_remove (sourceID);
+     sourceID = 0;
+  }
+
+  return TRUE;
+}
+
+
+
+static void
+activate (GtkApplication *app,
+          gpointer        user_data)
+{
+  GtkWidget *window;
+  GtkWidget *progress_bar;
+
+  /*Create a window with a title, and a default size*/
+  window = gtk_application_window_new (app);
+  gtk_window_set_title (GTK_WINDOW (window), "ProgressBar Example");
+  gtk_window_set_default_size (GTK_WINDOW (window), 220, 20);
+ 
+  /*Create a progressbar and add it to the window*/
+  progress_bar = gtk_progress_bar_new ();
+  gtk_container_add (GTK_CONTAINER (window), progress_bar);
+
+  /*Use the created pulse function every 100 milliseconds*/
+  sourceID = g_timeout_add (100, pulse, GTK_PROGRESS_BAR (progress_bar));
+
+  /*connecting the key-press signal to the callback*/
+  g_signal_connect (GTK_WINDOW (window), 
+                    "key-press-event", 
+                    G_CALLBACK (key_press_event), 
+                    progress_bar);
+ 
+  gtk_widget_show_all (window);
+}
+ 
+
+
+int
+main (int argc, char **argv)
+{
+  GtkApplication *app;
+  int status;
+ 
+  app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE);
+  g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
+  status = g_application_run (G_APPLICATION (app), argc, argv);
+  g_object_unref (app);
+ 
+  return status;
+}
diff --git a/platform-demos/Makefile.am b/platform-demos/Makefile.am
index fd7d530..42e5cb2 100644
--- a/platform-demos/Makefile.am
+++ b/platform-demos/Makefile.am
@@ -71,6 +71,7 @@ demo_sources = \
 	samples/messagedialog.js		\
 	samples/messagedialog.py		\
 	samples/messagedialog.vala		\
+	samples/progressbar.c			\
 	samples/progressbar.js			\
 	samples/progressbar.py			\
 	samples/progressbar.vala		\
@@ -252,6 +253,7 @@ DOC_PAGES =				\
 	messagedialog.py.page		\
 	messagedialog.vala.page		\
 	photo-wall.c.page		\
+	progressbar.c.page		\
 	progressbar.js.page		\
 	progressbar.py.page		\
 	progressbar.vala.page		\



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