[gnome-color-manager] trivial: add gcm_sample_window_set_percentage() so we can add some sort of progress to the sample wi
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-color-manager] trivial: add gcm_sample_window_set_percentage() so we can add some sort of progress to the sample wi
- Date: Sun, 1 Aug 2010 23:02:45 +0000 (UTC)
commit 986e5a2e1bdfe1fef438bb0506844a1fa6c7a7f3
Author: Richard Hughes <richard hughsie com>
Date: Sun Aug 1 21:47:17 2010 +0100
trivial: add gcm_sample_window_set_percentage() so we can add some sort of progress to the sample window
libcolor-glib/gcm-sample-window.c | 61 +++++++++++++++++++++++++++++++++++-
libcolor-glib/gcm-sample-window.h | 4 ++
libcolor-glib/gcm-self-test.c | 1 +
3 files changed, 64 insertions(+), 2 deletions(-)
---
diff --git a/libcolor-glib/gcm-sample-window.c b/libcolor-glib/gcm-sample-window.c
index 0557c7a..0a9fcc5 100644
--- a/libcolor-glib/gcm-sample-window.c
+++ b/libcolor-glib/gcm-sample-window.c
@@ -37,6 +37,7 @@
static void gcm_sample_window_finalize (GObject *object);
#define GCM_SAMPLE_WINDOW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GCM_TYPE_SAMPLE_WINDOW, GcmSampleWindowPrivate))
+#define GCM_SAMPLE_WINDOW_PULSE_DELAY 80 /* ms */
/**
* GcmSampleWindowPrivate:
@@ -46,11 +47,58 @@ static void gcm_sample_window_finalize (GObject *object);
struct _GcmSampleWindowPrivate
{
GtkWidget *image;
+ GtkWidget *progress_bar;
+ guint pulse_id;
};
G_DEFINE_TYPE (GcmSampleWindow, gcm_sample_window, GTK_TYPE_WINDOW)
/**
+ * gcm_sample_window_pulse_cb:
+ **/
+static gboolean
+gcm_sample_window_pulse_cb (GcmSampleWindow *sample_window)
+{
+ gtk_progress_bar_pulse (GTK_PROGRESS_BAR (sample_window->priv->progress_bar));
+ return TRUE;
+}
+
+/**
+ * gcm_sample_window_set_percentage:
+ * @sample_window: a valid #GcmSampleWindow instance
+ * @percentage: the percentage value to show, or
+ * %GCM_SAMPLE_WINDOW_PERCENTAGE_PULSE for pulsing.
+ *
+ * Sets the percentage value on the window.
+ *
+ * Since: 0.0.1
+ **/
+void
+gcm_sample_window_set_percentage (GcmSampleWindow *sample_window, guint percentage)
+{
+ GcmSampleWindowPrivate *priv = sample_window->priv;
+
+ /* make pulse */
+ if (percentage == GCM_SAMPLE_WINDOW_PERCENTAGE_PULSE) {
+ if (priv->pulse_id == 0) {
+ priv->pulse_id = g_timeout_add (GCM_SAMPLE_WINDOW_PULSE_DELAY,
+ (GSourceFunc) gcm_sample_window_pulse_cb,
+ sample_window);
+ }
+ return;
+ }
+
+ /* no more pulsing */
+ if (priv->pulse_id != 0) {
+ g_source_remove (priv->pulse_id);
+ priv->pulse_id = 0;
+ }
+
+ /* set static value */
+ gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (sample_window->priv->progress_bar), percentage / 100.0f);
+}
+
+/**
* gcm_sample_window_set_color:
* @sample_window: a valid #GcmSampleWindow instance
* @red: the red color value
@@ -110,11 +158,18 @@ static void
gcm_sample_window_init (GcmSampleWindow *sample_window)
{
GtkWindow *window = GTK_WINDOW (sample_window);
+ GtkWidget *vbox;
sample_window->priv = GCM_SAMPLE_WINDOW_GET_PRIVATE (sample_window);
sample_window->priv->image = gtk_image_new ();
+ sample_window->priv->progress_bar = gtk_progress_bar_new ();
+
+ /* pack in two widgets into the window */
+ vbox = gtk_vbox_new (FALSE, 0);
+ gtk_container_add (GTK_CONTAINER (sample_window), vbox);
+ gtk_box_pack_start (GTK_BOX (vbox), sample_window->priv->image, TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (vbox), sample_window->priv->progress_bar, TRUE, TRUE, 0);
gtk_widget_set_size_request (sample_window->priv->image, 200, 200);
- gtk_container_add (GTK_CONTAINER (sample_window), sample_window->priv->image);
- gtk_widget_show (sample_window->priv->image);
+ gtk_widget_show_all (vbox);
/* show on all virtual desktops */
gtk_window_stick (window);
@@ -132,6 +187,8 @@ gcm_sample_window_finalize (GObject *object)
GcmSampleWindowPrivate *priv = sample_window->priv;
g_object_unref (priv->image);
+ if (priv->pulse_id != 0)
+ g_source_remove (priv->pulse_id);
G_OBJECT_CLASS (gcm_sample_window_parent_class)->finalize (object);
}
diff --git a/libcolor-glib/gcm-sample-window.h b/libcolor-glib/gcm-sample-window.h
index 73f8f87..0b81906 100644
--- a/libcolor-glib/gcm-sample-window.h
+++ b/libcolor-glib/gcm-sample-window.h
@@ -50,12 +50,16 @@ struct _GcmSampleWindowClass
GtkWindowClass parent_class;
};
+#define GCM_SAMPLE_WINDOW_PERCENTAGE_PULSE 101
+
GType gcm_sample_window_get_type (void);
GtkWindow *gcm_sample_window_new (void);
void gcm_sample_window_set_color (GcmSampleWindow *sample_window,
guint8 red,
guint8 green,
guint8 blue);
+void gcm_sample_window_set_percentage (GcmSampleWindow *sample_window,
+ guint percentage);
G_END_DECLS
diff --git a/libcolor-glib/gcm-self-test.c b/libcolor-glib/gcm-self-test.c
index f24e0d0..96cbee9 100644
--- a/libcolor-glib/gcm-self-test.c
+++ b/libcolor-glib/gcm-self-test.c
@@ -705,6 +705,7 @@ gcm_test_sample_window_func (void)
window = gcm_sample_window_new ();
g_assert (window != NULL);
gcm_sample_window_set_color (GCM_SAMPLE_WINDOW (window), 0xff, 0xff, 0x00);
+ gcm_sample_window_set_percentage (GCM_SAMPLE_WINDOW (window), GCM_SAMPLE_WINDOW_PERCENTAGE_PULSE);
gtk_window_present (window);
loop = g_main_loop_new (NULL, FALSE);
g_timeout_add_seconds (2, (GSourceFunc) gcm_test_sample_window_loop_cb, loop);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]