[gnome-color-manager] Add a colorimeter-kind property to GcmCalibrate
- From: Richard Hughes <rhughes src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gnome-color-manager] Add a colorimeter-kind property to GcmCalibrate
- Date: Mon, 15 Feb 2010 08:21:28 +0000 (UTC)
commit d796b9acdb8b061aca43a955b47bb7d6abaa12c7
Author: Richard Hughes <richard hughsie com>
Date: Sun Feb 14 19:32:45 2010 +0000
Add a colorimeter-kind property to GcmCalibrate
src/gcm-calibrate.c | 40 ++++++++++++---
src/gcm-colorimeter.c | 132 +++++++++++++++++++++++++++++++------------------
src/gcm-colorimeter.h | 12 +++-
src/gcm-prefs.c | 18 +++----
4 files changed, 133 insertions(+), 69 deletions(-)
---
diff --git a/src/gcm-calibrate.c b/src/gcm-calibrate.c
index a2089de..d6da786 100644
--- a/src/gcm-calibrate.c
+++ b/src/gcm-calibrate.c
@@ -51,9 +51,10 @@ static void gcm_calibrate_finalize (GObject *object);
**/
struct _GcmCalibratePrivate
{
- GcmColorimeter *color_device;
+ GcmColorimeter *colorimeter;
GcmCalibrateReferenceKind reference_kind;
GcmCalibrateDeviceKind device_kind;
+ GcmColorimeterKind colorimeter_kind;
gchar *output_name;
gchar *filename_source;
gchar *filename_reference;
@@ -77,6 +78,7 @@ enum {
PROP_MANUFACTURER,
PROP_REFERENCE_KIND,
PROP_DEVICE_KIND,
+ PROP_COLORIMETER_KIND,
PROP_OUTPUT_NAME,
PROP_FILENAME_SOURCE,
PROP_FILENAME_REFERENCE,
@@ -438,7 +440,7 @@ gcm_calibrate_display (GcmCalibrate *calibrate, GtkWindow *window, GError **erro
{
GcmCalibrateClass *klass = GCM_CALIBRATE_GET_CLASS (calibrate);
gboolean ret = TRUE;
- gchar *hardware_device = NULL;
+ const gchar *hardware_device;
gboolean ret_tmp;
GtkWidget *dialog;
GString *string = NULL;
@@ -463,9 +465,7 @@ gcm_calibrate_display (GcmCalibrate *calibrate, GtkWindow *window, GError **erro
}
/* get calibration device model */
- g_object_get (priv->color_device,
- "model", &hardware_device,
- NULL);
+ hardware_device = gcm_colorimeter_get_model (priv->colorimeter);
/* get device, harder */
if (hardware_device == NULL) {
@@ -574,7 +574,6 @@ out:
g_object_unref (brightness);
if (string != NULL)
g_string_free (string, TRUE);
- g_free (hardware_device);
return ret;
}
@@ -1038,6 +1037,9 @@ gcm_calibrate_get_property (GObject *object, guint prop_id, GValue *value, GPara
case PROP_DEVICE_KIND:
g_value_set_boolean (value, priv->device_kind);
break;
+ case PROP_COLORIMETER_KIND:
+ g_value_set_boolean (value, priv->colorimeter_kind);
+ break;
case PROP_OUTPUT_NAME:
g_value_set_string (value, priv->output_name);
break;
@@ -1090,6 +1092,16 @@ gcm_calibrate_guess_type (GcmCalibrate *calibrate)
}
/**
+ * gcm_prefs_colorimeter_changed_cb:
+ **/
+static void
+gcm_prefs_colorimeter_changed_cb (GcmColorimeter *_colorimeter, GcmCalibrate *calibrate)
+{
+ calibrate->priv->colorimeter_kind = gcm_colorimeter_get_kind (_colorimeter);
+ g_object_notify (G_OBJECT (calibrate), "colorimeter-kind");
+}
+
+/**
* gcm_calibrate_set_property:
**/
static void
@@ -1176,6 +1188,14 @@ gcm_calibrate_class_init (GcmCalibrateClass *klass)
g_object_class_install_property (object_class, PROP_DEVICE_KIND, pspec);
/**
+ * GcmCalibrate:colorimeter-kind:
+ */
+ pspec = g_param_spec_uint ("colorimeter-kind", NULL, NULL,
+ 0, G_MAXUINT, 0,
+ G_PARAM_READABLE);
+ g_object_class_install_property (object_class, PROP_COLORIMETER_KIND, pspec);
+
+ /**
* GcmCalibrate:output-name:
*/
pspec = g_param_spec_string ("output-name", NULL, NULL,
@@ -1277,7 +1297,11 @@ gcm_calibrate_init (GcmCalibrate *calibrate)
calibrate->priv->serial = NULL;
calibrate->priv->device_kind = GCM_CALIBRATE_DEVICE_KIND_UNKNOWN;
calibrate->priv->reference_kind = GCM_CALIBRATE_REFERENCE_KIND_UNKNOWN;
- calibrate->priv->color_device = gcm_color_device_new ();
+ calibrate->priv->colorimeter = gcm_colorimeter_new ();
+
+ /* coldplug, and watch for changes */
+ calibrate->priv->colorimeter_kind = gcm_colorimeter_get_kind (calibrate->priv->colorimeter);
+ g_signal_connect (calibrate->priv->colorimeter, "changed", G_CALLBACK (gcm_prefs_colorimeter_changed_cb), calibrate);
}
/**
@@ -1299,7 +1323,7 @@ gcm_calibrate_finalize (GObject *object)
g_free (priv->description);
g_free (priv->device);
g_free (priv->serial);
- g_object_unref (priv->color_device);
+ g_object_unref (priv->colorimeter);
G_OBJECT_CLASS (gcm_calibrate_parent_class)->finalize (object);
}
diff --git a/src/gcm-colorimeter.c b/src/gcm-colorimeter.c
index fa1411c..f246d00 100644
--- a/src/gcm-colorimeter.c
+++ b/src/gcm-colorimeter.c
@@ -35,7 +35,7 @@
#include "egg-debug.h"
-static void gcm_color_device_finalize (GObject *object);
+static void gcm_colorimeter_finalize (GObject *object);
#define GCM_COLORIMETER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GCM_TYPE_COLORIMETER, GcmColorimeterPrivate))
@@ -69,16 +69,52 @@ enum {
static guint signals[SIGNAL_LAST] = { 0 };
-G_DEFINE_TYPE (GcmColorimeter, gcm_color_device, G_TYPE_OBJECT)
+G_DEFINE_TYPE (GcmColorimeter, gcm_colorimeter, G_TYPE_OBJECT)
/**
- * gcm_color_device_get_property:
+ * gcm_colorimeter_get_model:
+ **/
+const gchar *
+gcm_colorimeter_get_model (GcmColorimeter *colorimeter)
+{
+ return colorimeter->priv->model;
+}
+
+/**
+ * gcm_colorimeter_get_vendor:
+ **/
+const gchar *
+gcm_colorimeter_get_vendor (GcmColorimeter *colorimeter)
+{
+ return colorimeter->priv->vendor;
+}
+
+/**
+ * gcm_colorimeter_get_present:
+ **/
+gboolean
+gcm_colorimeter_get_present (GcmColorimeter *colorimeter)
+{
+ return colorimeter->priv->present;
+}
+
+/**
+ * gcm_colorimeter_get_kind:
+ **/
+GcmColorimeterKind
+gcm_colorimeter_get_kind (GcmColorimeter *colorimeter)
+{
+ return colorimeter->priv->colorimeter_kind;
+}
+
+/**
+ * gcm_colorimeter_get_property:
**/
static void
-gcm_color_device_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gcm_colorimeter_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
{
- GcmColorimeter *color_device = GCM_COLORIMETER (object);
- GcmColorimeterPrivate *priv = color_device->priv;
+ GcmColorimeter *colorimeter = GCM_COLORIMETER (object);
+ GcmColorimeterPrivate *priv = colorimeter->priv;
switch (prop_id) {
case PROP_PRESENT:
@@ -100,10 +136,10 @@ gcm_color_device_get_property (GObject *object, guint prop_id, GValue *value, GP
}
/**
- * gcm_color_device_set_property:
+ * gcm_colorimeter_set_property:
**/
static void
-gcm_color_device_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gcm_colorimeter_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
{
switch (prop_id) {
default:
@@ -113,16 +149,16 @@ gcm_color_device_set_property (GObject *object, guint prop_id, const GValue *val
}
/**
- * gcm_color_device_class_init:
+ * gcm_colorimeter_class_init:
**/
static void
-gcm_color_device_class_init (GcmColorimeterClass *klass)
+gcm_colorimeter_class_init (GcmColorimeterClass *klass)
{
GParamSpec *pspec;
GObjectClass *object_class = G_OBJECT_CLASS (klass);
- object_class->finalize = gcm_color_device_finalize;
- object_class->get_property = gcm_color_device_get_property;
- object_class->set_property = gcm_color_device_set_property;
+ object_class->finalize = gcm_colorimeter_finalize;
+ object_class->get_property = gcm_colorimeter_get_property;
+ object_class->set_property = gcm_colorimeter_set_property;
/**
* GcmColorimeter:present:
@@ -171,13 +207,13 @@ gcm_color_device_class_init (GcmColorimeterClass *klass)
/**
- * gcm_color_device_device_add:
+ * gcm_colorimeter_device_add:
**/
static gboolean
-gcm_color_device_device_add (GcmColorimeter *color_device, GUdevDevice *device)
+gcm_colorimeter_device_add (GcmColorimeter *colorimeter, GUdevDevice *device)
{
gboolean ret;
- GcmColorimeterPrivate *priv = color_device->priv;
+ GcmColorimeterPrivate *priv = colorimeter->priv;
/* interesting device? */
ret = g_udev_device_get_property_as_boolean (device, "COLOR_MEASUREMENT_DEVICE");
@@ -208,19 +244,19 @@ gcm_color_device_device_add (GcmColorimeter *color_device, GUdevDevice *device)
/* signal the addition */
egg_debug ("emit: changed");
- g_signal_emit (color_device, signals[SIGNAL_CHANGED], 0);
+ g_signal_emit (colorimeter, signals[SIGNAL_CHANGED], 0);
out:
return ret;
}
/**
- * gcm_color_device_device_remove:
+ * gcm_colorimeter_device_remove:
**/
static gboolean
-gcm_color_device_device_remove (GcmColorimeter *color_device, GUdevDevice *device)
+gcm_colorimeter_device_remove (GcmColorimeter *colorimeter, GUdevDevice *device)
{
gboolean ret;
- GcmColorimeterPrivate *priv = color_device->priv;
+ GcmColorimeterPrivate *priv = colorimeter->priv;
/* interesting device? */
ret = g_udev_device_get_property_as_boolean (device, "COLOR_MEASUREMENT_DEVICE");
@@ -241,26 +277,26 @@ gcm_color_device_device_remove (GcmColorimeter *color_device, GUdevDevice *devic
/* signal the removal */
egg_debug ("emit: changed");
- g_signal_emit (color_device, signals[SIGNAL_CHANGED], 0);
+ g_signal_emit (colorimeter, signals[SIGNAL_CHANGED], 0);
out:
return ret;
}
/**
- * gcm_color_device_coldplug:
+ * gcm_colorimeter_coldplug:
**/
static gboolean
-gcm_color_device_coldplug (GcmColorimeter *color_device)
+gcm_colorimeter_coldplug (GcmColorimeter *colorimeter)
{
GList *devices;
GList *l;
gboolean ret = FALSE;
- GcmColorimeterPrivate *priv = color_device->priv;
+ GcmColorimeterPrivate *priv = colorimeter->priv;
/* get all USB devices */
devices = g_udev_client_query_by_subsystem (priv->client, "usb");
for (l = devices; l != NULL; l = l->next) {
- ret = gcm_color_device_device_add (color_device, l->data);
+ ret = gcm_colorimeter_device_add (colorimeter, l->data);
if (ret) {
egg_debug ("found color management device");
break;
@@ -276,64 +312,64 @@ gcm_color_device_coldplug (GcmColorimeter *color_device)
* gcm_prefs_uevent_cb:
**/
static void
-gcm_prefs_uevent_cb (GUdevClient *client, const gchar *action, GUdevDevice *device, GcmColorimeter *color_device)
+gcm_prefs_uevent_cb (GUdevClient *client, const gchar *action, GUdevDevice *device, GcmColorimeter *colorimeter)
{
egg_debug ("uevent %s", action);
if (g_strcmp0 (action, "add") == 0) {
- gcm_color_device_device_add (color_device, device);
+ gcm_colorimeter_device_add (colorimeter, device);
} else if (g_strcmp0 (action, "remove") == 0) {
- gcm_color_device_device_remove (color_device, device);
+ gcm_colorimeter_device_remove (colorimeter, device);
}
}
/**
- * gcm_color_device_init:
+ * gcm_colorimeter_init:
**/
static void
-gcm_color_device_init (GcmColorimeter *color_device)
+gcm_colorimeter_init (GcmColorimeter *colorimeter)
{
const gchar *subsystems[] = {"usb", NULL};
- color_device->priv = GCM_COLORIMETER_GET_PRIVATE (color_device);
- color_device->priv->vendor = NULL;
- color_device->priv->model = NULL;
- color_device->priv->colorimeter_kind = GCM_COLORIMETER_KIND_UNKNOWN;
+ colorimeter->priv = GCM_COLORIMETER_GET_PRIVATE (colorimeter);
+ colorimeter->priv->vendor = NULL;
+ colorimeter->priv->model = NULL;
+ colorimeter->priv->colorimeter_kind = GCM_COLORIMETER_KIND_UNKNOWN;
/* use GUdev to find the calibration device */
- color_device->priv->client = g_udev_client_new (subsystems);
- g_signal_connect (color_device->priv->client, "uevent",
- G_CALLBACK (gcm_prefs_uevent_cb), color_device);
+ colorimeter->priv->client = g_udev_client_new (subsystems);
+ g_signal_connect (colorimeter->priv->client, "uevent",
+ G_CALLBACK (gcm_prefs_uevent_cb), colorimeter);
/* coldplug */
- gcm_color_device_coldplug (color_device);
+ gcm_colorimeter_coldplug (colorimeter);
}
/**
- * gcm_color_device_finalize:
+ * gcm_colorimeter_finalize:
**/
static void
-gcm_color_device_finalize (GObject *object)
+gcm_colorimeter_finalize (GObject *object)
{
- GcmColorimeter *color_device = GCM_COLORIMETER (object);
- GcmColorimeterPrivate *priv = color_device->priv;
+ GcmColorimeter *colorimeter = GCM_COLORIMETER (object);
+ GcmColorimeterPrivate *priv = colorimeter->priv;
g_object_unref (priv->client);
g_free (priv->vendor);
g_free (priv->model);
- G_OBJECT_CLASS (gcm_color_device_parent_class)->finalize (object);
+ G_OBJECT_CLASS (gcm_colorimeter_parent_class)->finalize (object);
}
/**
- * gcm_color_device_new:
+ * gcm_colorimeter_new:
*
* Return value: a new GcmColorimeter object.
**/
GcmColorimeter *
-gcm_color_device_new (void)
+gcm_colorimeter_new (void)
{
- GcmColorimeter *color_device;
- color_device = g_object_new (GCM_TYPE_COLORIMETER, NULL);
- return GCM_COLORIMETER (color_device);
+ GcmColorimeter *colorimeter;
+ colorimeter = g_object_new (GCM_TYPE_COLORIMETER, NULL);
+ return GCM_COLORIMETER (colorimeter);
}
diff --git a/src/gcm-colorimeter.h b/src/gcm-colorimeter.h
index becf65b..f1ded7a 100644
--- a/src/gcm-colorimeter.h
+++ b/src/gcm-colorimeter.h
@@ -26,7 +26,7 @@
G_BEGIN_DECLS
-#define GCM_TYPE_COLORIMETER (gcm_color_device_get_type ())
+#define GCM_TYPE_COLORIMETER (gcm_colorimeter_get_type ())
#define GCM_COLORIMETER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GCM_TYPE_COLORIMETER, GcmColorimeter))
#define GCM_COLORIMETER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GCM_TYPE_COLORIMETER, GcmColorimeterClass))
#define GCM_IS_COLORIMETER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GCM_TYPE_COLORIMETER))
@@ -61,8 +61,14 @@ typedef enum {
GCM_COLORIMETER_KIND_UNKNOWN
} GcmColorimeterKind;
-GType gcm_color_device_get_type (void);
-GcmColorimeter *gcm_color_device_new (void);
+GType gcm_colorimeter_get_type (void);
+GcmColorimeter *gcm_colorimeter_new (void);
+
+/* accessors */
+const gchar *gcm_colorimeter_get_model (GcmColorimeter *colorimeter);
+const gchar *gcm_colorimeter_get_vendor (GcmColorimeter *colorimeter);
+gboolean gcm_colorimeter_get_present (GcmColorimeter *colorimeter);
+GcmColorimeterKind gcm_colorimeter_get_kind (GcmColorimeter *colorimeter);
G_END_DECLS
diff --git a/src/gcm-prefs.c b/src/gcm-prefs.c
index d3722b1..07a9ec6 100644
--- a/src/gcm-prefs.c
+++ b/src/gcm-prefs.c
@@ -50,7 +50,7 @@ static GtkListStore *list_store_profiles = NULL;
static GcmDevice *current_device = NULL;
static GcmProfileStore *profile_store = NULL;
static GcmClient *gcm_client = NULL;
-static GcmColorimeter *color_device = NULL;
+static GcmColorimeter *colorimeter = NULL;
static gboolean setting_up_device = FALSE;
static GtkWidget *info_bar = NULL;
static GtkWidget *cie_widget = NULL;
@@ -945,9 +945,7 @@ gcm_prefs_set_calibrate_button_sensitivity (void)
goto out;
/* find whether we have hardware installed */
- g_object_get (color_device,
- "present", &ret,
- NULL);
+ ret = gcm_colorimeter_get_present (colorimeter);
#ifndef GCM_HARDWARE_DETECTION
egg_debug ("overriding device presence %i with TRUE", ret);
ret = TRUE;
@@ -1764,10 +1762,10 @@ out:
}
/**
- * gcm_prefs_color_device_changed_cb:
+ * gcm_prefs_colorimeter_changed_cb:
**/
static void
-gcm_prefs_color_device_changed_cb (GcmColorimeter *_color_device, gpointer user_data)
+gcm_prefs_colorimeter_changed_cb (GcmColorimeter *_colorimeter, gpointer user_data)
{
gcm_prefs_set_calibrate_button_sensitivity ();
}
@@ -2585,8 +2583,8 @@ main (int argc, char **argv)
G_CALLBACK (gcm_prefs_client_notify_loading_cb), NULL);
/* use the color device */
- color_device = gcm_color_device_new ();
- g_signal_connect (color_device, "changed", G_CALLBACK (gcm_prefs_color_device_changed_cb), NULL);
+ colorimeter = gcm_colorimeter_new ();
+ g_signal_connect (colorimeter, "changed", G_CALLBACK (gcm_prefs_colorimeter_changed_cb), NULL);
/* set the parent window if it is specified */
if (xid != 0) {
@@ -2674,8 +2672,8 @@ out:
g_object_unref (size_group2);
if (current_device != NULL)
g_object_unref (current_device);
- if (color_device != NULL)
- g_object_unref (color_device);
+ if (colorimeter != NULL)
+ g_object_unref (colorimeter);
if (gconf_client != NULL)
g_object_unref (gconf_client);
if (builder != NULL)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]