[gnome-color-manager] Enable the rendering intent and default colorspace UI elements



commit 8f652feeb9327a9ae46c771d695c0f46131b18e5
Author: Richard Hughes <richard hughsie com>
Date:   Wed Jan 6 10:17:53 2010 +0000

    Enable the rendering intent and default colorspace UI elements

 data/gcm-prefs.ui                   |    4 -
 data/gnome-color-manager.schemas.in |   24 ++-
 help/C/figures/gcm-defaults.png     |  Bin 46121 -> 40944 bytes
 src/gcm-dbus.c                      |   60 ++++-
 src/gcm-prefs.c                     |  467 ++++++++++++++++++++---------------
 src/gcm-profile.c                   |    4 +-
 src/gcm-profile.h                   |    6 +-
 src/gcm-utils.c                     |   59 +++++
 src/gcm-utils.h                     |   20 ++-
 src/org.gnome.ColorManager.xml      |   22 ++-
 10 files changed, 434 insertions(+), 232 deletions(-)
---
diff --git a/data/gcm-prefs.ui b/data/gcm-prefs.ui
index 49cc522..530aa43 100644
--- a/data/gcm-prefs.ui
+++ b/data/gcm-prefs.ui
@@ -1386,7 +1386,6 @@
                                 <child>
                                   <object class="GtkComboBox" id="combobox_space_rgb">
                                     <property name="visible">True</property>
-                                    <property name="sensitive">False</property>
                                   </object>
                                   <packing>
                                     <property name="expand">False</property>
@@ -1425,7 +1424,6 @@
                                 <child>
                                   <object class="GtkComboBox" id="combobox_space_cmyk">
                                     <property name="visible">True</property>
-                                    <property name="sensitive">False</property>
                                   </object>
                                   <packing>
                                     <property name="expand">False</property>
@@ -1504,7 +1502,6 @@
                                 <child>
                                   <object class="GtkComboBox" id="combobox_rendering_display">
                                     <property name="visible">True</property>
-                                    <property name="sensitive">False</property>
                                   </object>
                                   <packing>
                                     <property name="expand">False</property>
@@ -1543,7 +1540,6 @@
                                 <child>
                                   <object class="GtkComboBox" id="combobox_rendering_softproof">
                                     <property name="visible">True</property>
-                                    <property name="sensitive">False</property>
                                   </object>
                                   <packing>
                                     <property name="expand">False</property>
diff --git a/data/gnome-color-manager.schemas.in b/data/gnome-color-manager.schemas.in
index bfaec9d..f434eb7 100644
--- a/data/gnome-color-manager.schemas.in
+++ b/data/gnome-color-manager.schemas.in
@@ -42,14 +42,26 @@
     </schema>
 
     <schema>
-      <key>/schemas/apps/gnome-color-manager/output_intent</key>
-      <applyto>/apps/gnome-color-manager/output_intent</applyto>
+      <key>/schemas/apps/gnome-color-manager/rendering_intent_display</key>
+      <applyto>/apps/gnome-color-manager/rendering_intent_display</applyto>
       <owner>gnome-color-manager</owner>
       <type>string</type>
       <default>perceptual</default>
       <locale name="C">
-        <short>The output intent to use, e.g. 'perceptual'.</short>
-        <long>The output intent to use, e.g. 'perceptual'.</long>
+        <short>The rendering intent to use for the display, e.g. 'perceptual'.</short>
+        <long>The rendering intent to use for the display, e.g. 'perceptual'.</long>
+      </locale>
+    </schema>
+
+    <schema>
+      <key>/schemas/apps/gnome-color-manager/rendering_intent_softproof</key>
+      <applyto>/apps/gnome-color-manager/rendering_intent_softproof</applyto>
+      <owner>gnome-color-manager</owner>
+      <type>string</type>
+      <default>perceptual</default>
+      <locale name="C">
+        <short>The rendering intent to use for softproofs, e.g. 'perceptual'.</short>
+        <long>The rendering intent to use for softproofs, e.g. 'perceptual'.</long>
       </locale>
     </schema>
 
@@ -58,7 +70,7 @@
       <applyto>/apps/gnome-color-manager/colorspace_rgb</applyto>
       <owner>gnome-color-manager</owner>
       <type>string</type>
-      <default>perceptual</default>
+      <default>/usr/share/color/icc/Argyll/sRGB.icm</default>
       <locale name="C">
         <short>The default RGB profile.</short>
         <long>The RGB profile filename to be used by applications by default.</long>
@@ -70,7 +82,7 @@
       <applyto>/apps/gnome-color-manager/colorspace_cmyk</applyto>
       <owner>gnome-color-manager</owner>
       <type>string</type>
-      <default>perceptual</default>
+      <default></default>
       <locale name="C">
         <short>The default CMYK profile.</short>
         <long>The CMYK profile filename to be used by applications by default.</long>
diff --git a/help/C/figures/gcm-defaults.png b/help/C/figures/gcm-defaults.png
index 90aad0b..b314951 100644
Binary files a/help/C/figures/gcm-defaults.png and b/help/C/figures/gcm-defaults.png differ
diff --git a/src/gcm-dbus.c b/src/gcm-dbus.c
index 3929c50..13ca8f0 100644
--- a/src/gcm-dbus.c
+++ b/src/gcm-dbus.c
@@ -41,12 +41,14 @@ struct GcmDbusPrivate
 	GConfClient		*gconf_client;
 	GcmClient		*client;
 	GTimer			*timer;
-	gchar			*output_intent;
+	gchar			*rendering_intent_display;
+	gchar			*rendering_intent_softproof;
 };
 
 enum {
 	PROP_0,
-	PROP_OUTPUT_INTENT,
+	PROP_RENDERING_INTENT_DISPLAY,
+	PROP_RENDERING_INTENT_SOFTPROOF,
 	PROP_LAST
 };
 
@@ -102,8 +104,11 @@ gcm_dbus_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec
 {
 	GcmDbus *dbus = GCM_DBUS (object);
 	switch (prop_id) {
-	case PROP_OUTPUT_INTENT:
-		g_value_set_string (value, dbus->priv->output_intent);
+	case PROP_RENDERING_INTENT_DISPLAY:
+		g_value_set_string (value, dbus->priv->rendering_intent_display);
+		break;
+	case PROP_RENDERING_INTENT_SOFTPROOF:
+		g_value_set_string (value, dbus->priv->rendering_intent_softproof);
 		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -123,9 +128,13 @@ gcm_dbus_set_property (GObject *object, guint prop_id, const GValue *value, GPar
 	GcmDbus *dbus = GCM_DBUS (object);
 
 	switch (prop_id) {
-	case PROP_OUTPUT_INTENT:
-		g_free (dbus->priv->output_intent);
-		dbus->priv->output_intent = g_strdup (g_value_get_string (value));
+	case PROP_RENDERING_INTENT_DISPLAY:
+		g_free (dbus->priv->rendering_intent_display);
+		dbus->priv->rendering_intent_display = g_strdup (g_value_get_string (value));
+		break;
+	case PROP_RENDERING_INTENT_SOFTPROOF:
+		g_free (dbus->priv->rendering_intent_softproof);
+		dbus->priv->rendering_intent_softproof = g_strdup (g_value_get_string (value));
 		break;
 	default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -385,11 +394,21 @@ gcm_dbus_class_init (GcmDbusClass *klass)
 			      G_TYPE_NONE, 0);
 
 	/**
-	 * GcmDbus:output-intent:
+	 * GcmDbus:rendering-intent-display:
+	 */
+	g_object_class_install_property (object_class,
+					 PROP_RENDERING_INTENT_DISPLAY,
+					 g_param_spec_string ("rendering-intent-display",
+							      NULL, NULL,
+							      NULL,
+							      G_PARAM_READABLE));
+
+	/**
+	 * GcmDbus:rendering-intent-softproof:
 	 */
 	g_object_class_install_property (object_class,
-					 PROP_OUTPUT_INTENT,
-					 g_param_spec_string ("output-intent",
+					 PROP_RENDERING_INTENT_SOFTPROOF,
+					 g_param_spec_string ("rendering-intent-softproof",
 							      NULL, NULL,
 							      NULL,
 							      G_PARAM_READABLE));
@@ -428,15 +447,27 @@ gcm_dbus_init (GcmDbus *dbus)
 				 dbus, NULL, NULL);
 
 	/* coldplug */
-	dbus->priv->output_intent = gconf_client_get_string (dbus->priv->gconf_client, GCM_SETTINGS_OUTPUT_INTENT, &error);
-	if (dbus->priv->output_intent == NULL) {
+	dbus->priv->rendering_intent_display = gconf_client_get_string (dbus->priv->gconf_client, GCM_SETTINGS_RENDERING_INTENT_DISPLAY, &error);
+	if (dbus->priv->rendering_intent_display == NULL) {
+		if (error != NULL) {
+			egg_warning ("failed to get intent: %s", error->message);
+			g_clear_error (&error);
+		}
+
+		/* set defaults as GConf isn't sure */
+		dbus->priv->rendering_intent_display = g_strdup ("unknown");
+	}
+
+	/* coldplug */
+	dbus->priv->rendering_intent_softproof = gconf_client_get_string (dbus->priv->gconf_client, GCM_SETTINGS_RENDERING_INTENT_SOFTPROOF, &error);
+	if (dbus->priv->rendering_intent_softproof == NULL) {
 		if (error != NULL) {
 			egg_warning ("failed to get intent: %s", error->message);
 			g_clear_error (&error);
 		}
 
 		/* set defaults as GConf isn't sure */
-		dbus->priv->output_intent = g_strdup ("disabled");
+		dbus->priv->rendering_intent_softproof = g_strdup ("unknown");
 	}
 
 	/* get all devices */
@@ -459,7 +490,8 @@ gcm_dbus_finalize (GObject *object)
 
 	dbus = GCM_DBUS (object);
 	g_return_if_fail (dbus->priv != NULL);
-	g_free (dbus->priv->output_intent);
+	g_free (dbus->priv->rendering_intent_display);
+	g_free (dbus->priv->rendering_intent_softproof);
 	g_object_unref (dbus->priv->client);
 	g_object_unref (dbus->priv->gconf_client);
 	g_timer_destroy (dbus->priv->timer);
diff --git a/src/gcm-prefs.c b/src/gcm-prefs.c
index 176aabd..555f389 100644
--- a/src/gcm-prefs.c
+++ b/src/gcm-prefs.c
@@ -52,7 +52,6 @@ static GtkListStore *list_store_profiles = NULL;
 static GcmDevice *current_device = NULL;
 static GnomeRRScreen *rr_screen = NULL;
 static GPtrArray *profiles_array = NULL;
-static GPtrArray *profiles_array_in_combo = NULL;
 static GcmClient *gcm_client = NULL;
 static GcmColorDevice *color_device = NULL;
 static gboolean setting_up_device = FALSE;
@@ -63,20 +62,26 @@ static guint loading_refcount = 0;
 static GConfClient *gconf_client = NULL;
 
 enum {
-	GPM_DEVICES_COLUMN_ID,
-	GPM_DEVICES_COLUMN_SORT,
-	GPM_DEVICES_COLUMN_ICON,
-	GPM_DEVICES_COLUMN_TITLE,
-	GPM_DEVICES_COLUMN_LAST
+	GCM_DEVICES_COLUMN_ID,
+	GCM_DEVICES_COLUMN_SORT,
+	GCM_DEVICES_COLUMN_ICON,
+	GCM_DEVICES_COLUMN_TITLE,
+	GCM_DEVICES_COLUMN_LAST
 };
 
 enum {
-	GPM_PROFILES_COLUMN_ID,
-	GPM_PROFILES_COLUMN_SORT,
-	GPM_PROFILES_COLUMN_ICON,
-	GPM_PROFILES_COLUMN_TITLE,
-	GPM_PROFILES_COLUMN_PROFILE,
-	GPM_PROFILES_COLUMN_LAST
+	GCM_PROFILES_COLUMN_ID,
+	GCM_PROFILES_COLUMN_SORT,
+	GCM_PROFILES_COLUMN_ICON,
+	GCM_PROFILES_COLUMN_TITLE,
+	GCM_PROFILES_COLUMN_PROFILE,
+	GCM_PROFILES_COLUMN_LAST
+};
+
+enum {
+	GCM_PREFS_COMBO_COLUMN_TEXT,
+	GCM_PREFS_COMBO_COLUMN_PROFILE,
+	GCM_PREFS_COMBO_COLUMN_LAST
 };
 
 static void gcm_prefs_devices_treeview_clicked_cb (GtkTreeSelection *selection, gpointer userdata);
@@ -135,6 +140,35 @@ out:
 }
 
 /**
+ * gcm_prefs_combobox_add_profile:
+ **/
+static void
+gcm_prefs_combobox_add_profile (GtkWidget *widget, GcmProfile *profile)
+{
+	GtkTreeModel *model;
+	GtkTreeIter iter;
+	gchar *description;
+
+	/* use description */
+	if (profile == NULL) {
+		description = g_strdup (_("None"));
+	} else {
+		g_object_get (profile,
+			      "description", &description,
+			      NULL);
+	}
+
+	/* also add profile */
+	model = gtk_combo_box_get_model (GTK_COMBO_BOX(widget));
+	gtk_list_store_append (GTK_LIST_STORE(model), &iter);
+	gtk_list_store_set (GTK_LIST_STORE(model), &iter,
+			    GCM_PREFS_COMBO_COLUMN_TEXT, description,
+			    GCM_PREFS_COMBO_COLUMN_PROFILE, profile,
+			    -1);
+	g_free (description);
+}
+
+/**
  * gcm_prefs_default_cb:
  **/
 static void
@@ -672,11 +706,11 @@ gcm_prefs_update_profile_list (void)
 					gcm_prefs_profile_get_sort_string (profile_type),
 					description);
 		gtk_list_store_set (list_store_profiles, &iter,
-				    GPM_PROFILES_COLUMN_ID, filename,
-				    GPM_PROFILES_COLUMN_SORT, sort,
-				    GPM_PROFILES_COLUMN_TITLE, description,
-				    GPM_PROFILES_COLUMN_ICON, icon_name,
-				    GPM_PROFILES_COLUMN_PROFILE, profile,
+				    GCM_PROFILES_COLUMN_ID, filename,
+				    GCM_PROFILES_COLUMN_SORT, sort,
+				    GCM_PROFILES_COLUMN_TITLE, description,
+				    GCM_PROFILES_COLUMN_ICON, icon_name,
+				    GCM_PROFILES_COLUMN_PROFILE, profile,
 				    -1);
 
 		g_free (sort);
@@ -727,7 +761,7 @@ gcm_prefs_profile_delete_cb (GtkWidget *widget, gpointer data)
 
 	/* get profile */
 	gtk_tree_model_get (model, &iter,
-			    GPM_PROFILES_COLUMN_PROFILE, &profile,
+			    GCM_PROFILES_COLUMN_PROFILE, &profile,
 			    -1);
 
 	/* get device data */
@@ -1227,15 +1261,15 @@ gcm_prefs_add_devices_columns (GtkTreeView *treeview)
 	renderer = gtk_cell_renderer_pixbuf_new ();
 	g_object_set (renderer, "stock-size", GTK_ICON_SIZE_DIALOG, NULL);
 	column = gtk_tree_view_column_new_with_attributes ("", renderer,
-							   "icon-name", GPM_DEVICES_COLUMN_ICON, NULL);
+							   "icon-name", GCM_DEVICES_COLUMN_ICON, NULL);
 	gtk_tree_view_append_column (treeview, column);
 
 	/* column for text */
 	renderer = gtk_cell_renderer_text_new ();
 	column = gtk_tree_view_column_new_with_attributes ("", renderer,
-							   "markup", GPM_DEVICES_COLUMN_TITLE, NULL);
-	gtk_tree_view_column_set_sort_column_id (column, GPM_DEVICES_COLUMN_SORT);
-	gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (list_store_devices), GPM_DEVICES_COLUMN_SORT, GTK_SORT_ASCENDING);
+							   "markup", GCM_DEVICES_COLUMN_TITLE, NULL);
+	gtk_tree_view_column_set_sort_column_id (column, GCM_DEVICES_COLUMN_SORT);
+	gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (list_store_devices), GCM_DEVICES_COLUMN_SORT, GTK_SORT_ASCENDING);
 	gtk_tree_view_append_column (treeview, column);
 	gtk_tree_view_column_set_expand (column, TRUE);
 }
@@ -1253,15 +1287,15 @@ gcm_prefs_add_profiles_columns (GtkTreeView *treeview)
 	renderer = gtk_cell_renderer_pixbuf_new ();
 	g_object_set (renderer, "stock-size", GTK_ICON_SIZE_DND, NULL);
 	column = gtk_tree_view_column_new_with_attributes ("", renderer,
-							   "icon-name", GPM_PROFILES_COLUMN_ICON, NULL);
+							   "icon-name", GCM_PROFILES_COLUMN_ICON, NULL);
 	gtk_tree_view_append_column (treeview, column);
 
 	/* column for text */
 	renderer = gtk_cell_renderer_text_new ();
 	column = gtk_tree_view_column_new_with_attributes ("", renderer,
-							   "markup", GPM_PROFILES_COLUMN_TITLE, NULL);
-	gtk_tree_view_column_set_sort_column_id (column, GPM_PROFILES_COLUMN_SORT);
-	gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (list_store_profiles), GPM_PROFILES_COLUMN_SORT, GTK_SORT_ASCENDING);
+							   "markup", GCM_PROFILES_COLUMN_TITLE, NULL);
+	gtk_tree_view_column_set_sort_column_id (column, GCM_PROFILES_COLUMN_SORT);
+	gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (list_store_profiles), GCM_PROFILES_COLUMN_SORT, GTK_SORT_ASCENDING);
 	gtk_tree_view_append_column (treeview, column);
 	gtk_tree_view_column_set_expand (column, TRUE);
 }
@@ -1322,12 +1356,13 @@ out:
  * gcm_prefs_add_profiles_suitable_for_devices:
  **/
 static void
-gcm_prefs_add_profiles_suitable_for_devices (GcmDeviceType type)
+gcm_prefs_add_profiles_suitable_for_devices (GtkWidget *widget, GcmDeviceType type, const gchar *profile_filename)
 {
-	GtkTreeModel *combo_model;
-	GtkWidget *widget;
+	GtkTreeModel *model;
 	guint i;
-	gchar *displayname;
+	guint added_count = 0;
+	gchar *filename;
+	gboolean ret = FALSE;
 	GcmProfile *profile;
 	GcmProfileType profile_type;
 	GcmProfileType profile_type_tmp;
@@ -1336,27 +1371,41 @@ gcm_prefs_add_profiles_suitable_for_devices (GcmDeviceType type)
 	profile_type = gcm_utils_device_type_to_profile_type (type);
 
 	/* clear existing entries */
-	widget = GTK_WIDGET (gtk_builder_get_object (builder, "combobox_profile"));
-	combo_model = gtk_combo_box_get_model (GTK_COMBO_BOX (widget));
-	gtk_list_store_clear (GTK_LIST_STORE (combo_model));
-	g_ptr_array_set_size (profiles_array_in_combo, 0);
+	model = gtk_combo_box_get_model (GTK_COMBO_BOX (widget));
+	gtk_list_store_clear (GTK_LIST_STORE (model));
 
 	/* add profiles of the right type */
 	for (i=0; i<profiles_array->len; i++) {
 		profile = g_ptr_array_index (profiles_array, i);
 		g_object_get (profile,
-			      "description", &displayname,
 			      "type", &profile_type_tmp,
+			      "filename", &filename,
 			      NULL);
+		/* only add correct types */
 		if (profile_type_tmp == profile_type) {
-			g_ptr_array_add (profiles_array_in_combo, g_object_ref (profile));
-			gtk_combo_box_append_text (GTK_COMBO_BOX (widget), displayname);
+
+			/* add */
+			gcm_prefs_combobox_add_profile (widget, profile);
+
+			/* set active option */
+			if (g_strcmp0 (filename, profile_filename) == 0) {
+				gtk_combo_box_set_active (GTK_COMBO_BOX (widget), added_count);
+				ret = TRUE;
+			}
+			added_count++;
 		}
-		g_free (displayname);
+		g_free (filename);
 	}
 
 	/* add a clear entry */
-	gtk_combo_box_append_text (GTK_COMBO_BOX (widget), _("None"));
+	gcm_prefs_combobox_add_profile (widget, NULL);
+	added_count++;
+
+	/* select 'None' if there was no match */
+	if (!ret) {
+		egg_warning ("no match for %s", profile_filename);
+		gtk_combo_box_set_active (GTK_COMBO_BOX (widget), added_count);
+	}
 }
 
 /**
@@ -1367,18 +1416,14 @@ gcm_prefs_devices_treeview_clicked_cb (GtkTreeSelection *selection, gpointer use
 {
 	GtkTreeModel *model;
 	GtkTreeIter iter;
-	GcmProfile *profile;
 	gchar *profile_filename = NULL;
 	GtkWidget *widget;
 	gfloat localgamma;
 	gfloat brightness;
 	gfloat contrast;
 	gboolean connected;
-	gchar *filename;
-	guint i;
 	gchar *id = NULL;
 	GcmDeviceType type;
-	gboolean ret = FALSE;
 	gchar *device_serial = NULL;
 	gchar *device_model = NULL;
 	gchar *device_manufacturer = NULL;
@@ -1391,7 +1436,7 @@ gcm_prefs_devices_treeview_clicked_cb (GtkTreeSelection *selection, gpointer use
 
 	/* get id */
 	gtk_tree_model_get (model, &iter,
-			    GPM_DEVICES_COLUMN_ID, &id,
+			    GCM_DEVICES_COLUMN_ID, &id,
 			    -1);
 
 	/* we have a new device */
@@ -1421,9 +1466,6 @@ gcm_prefs_devices_treeview_clicked_cb (GtkTreeSelection *selection, gpointer use
 		gtk_widget_set_sensitive (widget, TRUE);
 	}
 
-	/* add profiles of the right type */
-	gcm_prefs_add_profiles_suitable_for_devices (type);
-
 	g_object_get (current_device,
 		      "profile-filename", &profile_filename,
 		      "gamma", &localgamma,
@@ -1473,34 +1515,9 @@ gcm_prefs_devices_treeview_clicked_cb (GtkTreeSelection *selection, gpointer use
 	gtk_range_set_value (GTK_RANGE (widget), contrast);
 	setting_up_device = FALSE;
 
-	/* set correct profile */
-	if (profile_filename == NULL) {
-		egg_debug ("no profile selected");
-		widget = GTK_WIDGET (gtk_builder_get_object (builder, "combobox_profile"));
-		gtk_combo_box_set_active (GTK_COMBO_BOX (widget), profiles_array->len);
-	} else {
-		for (i=0; i<profiles_array_in_combo->len; i++) {
-			profile = g_ptr_array_index (profiles_array_in_combo, i);
-			g_object_get (profile,
-				      "filename", &filename,
-				      NULL);
-			if (g_strcmp0 (filename, profile_filename) == 0) {
-				widget = GTK_WIDGET (gtk_builder_get_object (builder, "combobox_profile"));
-				gtk_combo_box_set_active (GTK_COMBO_BOX (widget), i);
-				g_free (filename);
-				ret = TRUE;
-				break;
-			}
-			g_free (filename);
-		}
-	}
-
-	/* failed to find profile in combobox */
-	if (!ret) {
-		egg_debug ("failed to find profile: %s", profile_filename);
-		widget = GTK_WIDGET (gtk_builder_get_object (builder, "combobox_profile"));
-		gtk_combo_box_set_active (GTK_COMBO_BOX (widget), profiles_array_in_combo->len);
-	}
+	/* add profiles of the right type */
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "combobox_profile"));
+	gcm_prefs_add_profiles_suitable_for_devices (widget, type, profile_filename);
 
 	/* make sure selectable */
 	widget = GTK_WIDGET (gtk_builder_get_object (builder, "combobox_profile"));
@@ -1653,7 +1670,7 @@ gcm_prefs_profiles_treeview_clicked_cb (GtkTreeSelection *selection, gpointer us
 
 	/* get profile */
 	gtk_tree_model_get (model, &iter,
-			    GPM_PROFILES_COLUMN_PROFILE, &profile,
+			    GCM_PROFILES_COLUMN_PROFILE, &profile,
 			    -1);
 
 	/* get the new details from the profile */
@@ -1886,10 +1903,10 @@ gcm_prefs_add_device_xrandr (GcmDevice *device)
 	egg_debug ("add %s to device list", id);
 	gtk_list_store_append (list_store_devices, &iter);
 	gtk_list_store_set (list_store_devices, &iter,
-			    GPM_DEVICES_COLUMN_ID, id,
-			    GPM_DEVICES_COLUMN_SORT, sort,
-			    GPM_DEVICES_COLUMN_TITLE, title,
-			    GPM_DEVICES_COLUMN_ICON, "video-display", -1);
+			    GCM_DEVICES_COLUMN_ID, id,
+			    GCM_DEVICES_COLUMN_SORT, sort,
+			    GCM_DEVICES_COLUMN_TITLE, title,
+			    GCM_DEVICES_COLUMN_ICON, "video-display", -1);
 	g_free (id);
 	g_free (sort);
 	g_free (title_tmp);
@@ -1905,14 +1922,14 @@ gcm_prefs_set_combo_simple_text (GtkWidget *combo_box)
 	GtkCellRenderer *cell;
 	GtkListStore *store;
 
-	store = gtk_list_store_new (1, G_TYPE_STRING);
+	store = gtk_list_store_new (2, G_TYPE_STRING, GCM_TYPE_PROFILE);
 	gtk_combo_box_set_model (GTK_COMBO_BOX (combo_box), GTK_TREE_MODEL (store));
 	g_object_unref (store);
 
 	cell = gtk_cell_renderer_text_new ();
 	gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_box), cell, TRUE);
 	gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo_box), cell,
-					"text", 0,
+					"text", GCM_PREFS_COMBO_COLUMN_TEXT,
 					NULL);
 }
 
@@ -1958,7 +1975,6 @@ gcm_prefs_add_profiles (GtkWidget *widget)
 static void
 gcm_prefs_profile_combo_changed_cb (GtkWidget *widget, gpointer data)
 {
-	gint active;
 	gchar *profile_old = NULL;
 	gchar *filename = NULL;
 	gboolean ret;
@@ -1966,19 +1982,23 @@ gcm_prefs_profile_combo_changed_cb (GtkWidget *widget, gpointer data)
 	GcmProfile *profile = NULL;
 	gboolean changed;
 	GcmDeviceType type;
+	GtkTreeIter iter;
+	GtkTreeModel *model;
 
 	/* no devices */
 	if (current_device == NULL)
 		return;
 
 	/* no selection */
-	active = gtk_combo_box_get_active (GTK_COMBO_BOX(widget));
-	if (active == -1)
+	ret = gtk_combo_box_get_active_iter (GTK_COMBO_BOX(widget), &iter);
+	if (!ret)
 		return;
 
 	/* get profile */
-	if (active < (gint) profiles_array_in_combo->len)
-		profile = g_ptr_array_index (profiles_array_in_combo, active);
+	model = gtk_combo_box_get_model (GTK_COMBO_BOX(widget));
+	gtk_tree_model_get (model, &iter,
+			    GCM_PREFS_COMBO_COLUMN_PROFILE, &profile,
+			    -1);
 	if (profile != NULL) {
 		g_object_get (profile,
 			      "filename", &filename,
@@ -2147,10 +2167,10 @@ gcm_prefs_add_device_type (GcmDevice *device)
 	/* add to list */
 	gtk_list_store_append (list_store_devices, &iter);
 	gtk_list_store_set (list_store_devices, &iter,
-			    GPM_DEVICES_COLUMN_ID, id,
-			    GPM_DEVICES_COLUMN_SORT, sort,
-			    GPM_DEVICES_COLUMN_TITLE, string->str,
-			    GPM_DEVICES_COLUMN_ICON, icon_name, -1);
+			    GCM_DEVICES_COLUMN_ID, id,
+			    GCM_DEVICES_COLUMN_SORT, sort,
+			    GCM_DEVICES_COLUMN_TITLE, string->str,
+			    GCM_DEVICES_COLUMN_ICON, icon_name, -1);
 	g_free (id);
 	g_free (title);
 	g_free (sort);
@@ -2183,7 +2203,7 @@ gcm_prefs_remove_device (GcmDevice *gcm_device)
 	/* get the other elements */
 	do {
 		gtk_tree_model_get (model, &iter,
-				    GPM_DEVICES_COLUMN_ID, &id_tmp,
+				    GCM_DEVICES_COLUMN_ID, &id_tmp,
 				    -1);
 		if (g_strcmp0 (id_tmp, id) == 0) {
 			gtk_list_store_remove (GTK_LIST_STORE(model), &iter);
@@ -2306,6 +2326,124 @@ gcm_prefs_startup_phase2_idle_cb (gpointer user_data)
 }
 
 /**
+ * gcm_prefs_setup_space_combobox:
+ **/
+static void
+gcm_prefs_setup_space_combobox (GtkWidget *widget, GcmProfileColorspace colorspace, const gchar *profile_filename)
+{
+	GcmProfile *profile;
+	guint i;
+	gchar *filename;
+	GcmProfileColorspace colorspace_tmp;
+	guint added_count = 0;
+	gboolean has_vcgt;
+
+	/* update each list */
+	for (i=0; i<profiles_array->len; i++) {
+		profile = g_ptr_array_index (profiles_array, i);
+		g_object_get (profile,
+			      "has-vcgt", &has_vcgt,
+			      "filename", &filename,
+			      "colorspace", &colorspace_tmp,
+			      NULL);
+
+		/* only for correct type */
+		if (!has_vcgt && colorspace == colorspace_tmp) {
+			gcm_prefs_combobox_add_profile (widget, profile);
+
+			/* set active option */
+			if (g_strcmp0 (filename, profile_filename) == 0)
+				gtk_combo_box_set_active (GTK_COMBO_BOX (widget), added_count);
+			added_count++;
+		}
+		g_free (filename);
+	}
+}
+
+/**
+ * gcm_prefs_space_combo_changed_cb:
+ **/
+static void
+gcm_prefs_space_combo_changed_cb (GtkWidget *widget, gpointer data)
+{
+	gboolean ret;
+	GtkTreeIter iter;
+	gchar *filename = NULL;
+	GtkTreeModel *model;
+	GcmProfile *profile = NULL;
+	const gchar *gconf_key = GCM_SETTINGS_COLORSPACE_RGB;
+
+	/* no selection */
+	ret = gtk_combo_box_get_active_iter (GTK_COMBO_BOX(widget), &iter);
+	if (!ret)
+		return;
+
+	/* get profile */
+	model = gtk_combo_box_get_model (GTK_COMBO_BOX(widget));
+	gtk_tree_model_get (model, &iter,
+			    GCM_PREFS_COMBO_COLUMN_PROFILE, &profile,
+			    -1);
+	if (profile == NULL)
+		goto out;
+	g_object_get (profile,
+		      "filename", &filename,
+		      NULL);
+
+	if (data != NULL)
+		gconf_key = GCM_SETTINGS_COLORSPACE_CMYK;
+
+	egg_debug ("changed working space %s", filename);
+	gconf_client_set_string (gconf_client, gconf_key, filename, NULL);
+out:
+	if (profile != NULL)
+		g_object_unref (profile);
+	g_free (filename);
+}
+
+
+/**
+ * gcm_prefs_renderer_combo_changed_cb:
+ **/
+static void
+gcm_prefs_renderer_combo_changed_cb (GtkWidget *widget, gpointer data)
+{
+	gint active;
+	const gchar *gconf_key = GCM_SETTINGS_RENDERING_INTENT_DISPLAY;
+	const gchar *value;
+
+	/* no selection */
+	active = gtk_combo_box_get_active (GTK_COMBO_BOX(widget));
+	if (active == -1)
+		return;
+
+	if (data != NULL)
+		gconf_key = GCM_SETTINGS_RENDERING_INTENT_SOFTPROOF;
+
+	/* save to GConf */
+	value = gcm_rendering_intent_to_text (active+1);
+	egg_debug ("changed rendering intent to %s", value);
+	gconf_client_set_string (gconf_client, gconf_key, value, NULL);
+}
+
+/**
+ * gcm_prefs_setup_rendering_combobox:
+ **/
+static void
+gcm_prefs_setup_rendering_combobox (GtkWidget *widget, const gchar *intent)
+{
+	guint i;
+	const gchar *text;
+
+	for (i=1; i<GCM_RENDERING_INTENT_LAST; i++) {
+		text = gcm_rendering_intent_to_localized_text (i);
+		gtk_combo_box_append_text (GTK_COMBO_BOX (widget), text);
+		text = gcm_rendering_intent_to_text (i);
+		if (g_strcmp0 (text, intent) == 0)
+			gtk_combo_box_set_active (GTK_COMBO_BOX (widget), i-1);
+	}
+}
+
+/**
  * gcm_prefs_startup_phase1_idle_cb:
  **/
 static gboolean
@@ -2314,11 +2452,46 @@ gcm_prefs_startup_phase1_idle_cb (gpointer user_data)
 	GtkWidget *widget;
 	gboolean ret;
 	GError *error = NULL;
+	gchar *colorspace_rgb;
+	gchar *colorspace_cmyk;
+	gchar *intent_display;
+	gchar *intent_softproof;
 
 	/* add profiles we can find */
 	widget = GTK_WIDGET (gtk_builder_get_object (builder, "combobox_profile"));
 	gcm_prefs_add_profiles (widget);
 
+	/* setup RGB combobox */
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "combobox_space_rgb"));
+	colorspace_rgb = gconf_client_get_string (gconf_client, GCM_SETTINGS_COLORSPACE_RGB, NULL);
+	gcm_prefs_set_combo_simple_text (widget);
+	gcm_prefs_setup_space_combobox (widget, GCM_PROFILE_COLORSPACE_RGB, colorspace_rgb);
+	g_signal_connect (G_OBJECT (widget), "changed",
+			  G_CALLBACK (gcm_prefs_space_combo_changed_cb), NULL);
+
+	/* setup CMYK combobox */
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "combobox_space_cmyk"));
+	colorspace_cmyk = gconf_client_get_string (gconf_client, GCM_SETTINGS_COLORSPACE_CMYK, NULL);
+	gcm_prefs_set_combo_simple_text (widget);
+	gcm_prefs_setup_space_combobox (widget, GCM_PROFILE_COLORSPACE_CMYK, colorspace_cmyk);
+	g_signal_connect (G_OBJECT (widget), "changed",
+			  G_CALLBACK (gcm_prefs_space_combo_changed_cb), (gpointer) "cmyk");
+
+	/* setup rendering lists */
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "combobox_rendering_display"));
+	gcm_prefs_set_combo_simple_text (widget);
+	intent_display = gconf_client_get_string (gconf_client, GCM_SETTINGS_RENDERING_INTENT_DISPLAY, NULL);
+	gcm_prefs_setup_rendering_combobox (widget, intent_display);
+	g_signal_connect (G_OBJECT (widget), "changed",
+			  G_CALLBACK (gcm_prefs_renderer_combo_changed_cb), NULL);
+
+	widget = GTK_WIDGET (gtk_builder_get_object (builder, "combobox_rendering_softproof"));
+	gcm_prefs_set_combo_simple_text (widget);
+	intent_softproof = gconf_client_get_string (gconf_client, GCM_SETTINGS_RENDERING_INTENT_SOFTPROOF, NULL);
+	gcm_prefs_setup_rendering_combobox (widget, intent_softproof);
+	g_signal_connect (G_OBJECT (widget), "changed",
+			  G_CALLBACK (gcm_prefs_renderer_combo_changed_cb), (gpointer) "softproof");
+
 	/* coldplug plugged in devices */
 	ret = gcm_client_add_connected (gcm_client, &error);
 	if (!ret) {
@@ -2342,6 +2515,10 @@ gcm_prefs_startup_phase1_idle_cb (gpointer user_data)
 	g_idle_add ((GSourceFunc) gcm_prefs_startup_phase2_idle_cb, NULL);
 
 out:
+	g_free (intent_display);
+	g_free (intent_softproof);
+	g_free (colorspace_rgb);
+	g_free (colorspace_cmyk);
 	return FALSE;
 }
 
@@ -2419,68 +2596,6 @@ gcm_prefs_checkbutton_profile_cb (GtkWidget *widget, gpointer user_data)
 }
 
 /**
- * gcm_prefs_renderer_combo_changed_cb:
- **/
-static void
-gcm_prefs_renderer_combo_changed_cb (GtkWidget *widget, gpointer data)
-{
-	gint active;
-	/* no selection */
-	active = gtk_combo_box_get_active (GTK_COMBO_BOX(widget));
-	if (active == -1)
-		return;
-	//TODO: need to save to GConf
-	egg_debug ("changed rendering intent to %i", active);
-}
-
-/**
- * gcm_prefs_space_combo_changed_cb:
- **/
-static void
-gcm_prefs_space_combo_changed_cb (GtkWidget *widget, gpointer data)
-{
-	gint active;
-	/* no selection */
-	active = gtk_combo_box_get_active (GTK_COMBO_BOX(widget));
-	if (active == -1)
-		return;
-	//TODO: need to save to GConf
-	egg_debug ("changed working space %i", active);
-}
-
-/**
- * gcm_prefs_setup_rendering_combobox:
- **/
-static void
-gcm_prefs_setup_rendering_combobox (GtkWidget *widget)
-{
-	/* TRANSLATORS: rendering intent: you probably want to google this */
-	gtk_combo_box_append_text (GTK_COMBO_BOX (widget), _("Perceptual"));
-
-	/* TRANSLATORS: rendering intent: you probably want to google this */
-	gtk_combo_box_append_text (GTK_COMBO_BOX (widget), _("Relative colormetric"));
-
-	/* TRANSLATORS: rendering intent: you probably want to google this */
-	gtk_combo_box_append_text (GTK_COMBO_BOX (widget), _("Saturation"));
-
-	/* TRANSLATORS: rendering intent: you probably want to google this */
-	gtk_combo_box_append_text (GTK_COMBO_BOX (widget), _("Absolute colormetric"));
-
-	/* TRANSLATORS: rendering intent: you probably want to google this */
-	gtk_combo_box_append_text (GTK_COMBO_BOX (widget), _("Disable soft proofing"));
-}
-
-/**
- * gcm_prefs_setup_space_combobox:
- **/
-static void
-gcm_prefs_setup_space_combobox (GtkWidget *widget)
-{
-	/* TODO: get from profiles */
-	gtk_combo_box_append_text (GTK_COMBO_BOX (widget), "sRGB");
-}
-
-/**
  * gcm_prefs_setup_drag_and_drop:
  **/
 static void
@@ -2564,9 +2679,9 @@ main (int argc, char **argv)
 	}
 
 	/* create list stores */
-	list_store_devices = gtk_list_store_new (GPM_DEVICES_COLUMN_LAST, G_TYPE_STRING, G_TYPE_STRING,
+	list_store_devices = gtk_list_store_new (GCM_DEVICES_COLUMN_LAST, G_TYPE_STRING, G_TYPE_STRING,
 						 G_TYPE_STRING, G_TYPE_STRING);
-	list_store_profiles = gtk_list_store_new (GPM_PROFILES_COLUMN_LAST, G_TYPE_STRING, G_TYPE_STRING,
+	list_store_profiles = gtk_list_store_new (GCM_PROFILES_COLUMN_LAST, G_TYPE_STRING, G_TYPE_STRING,
 						  G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER);
 
 	/* create device tree view */
@@ -2595,7 +2710,6 @@ main (int argc, char **argv)
 
 	/* track in seporate arrays */
 	profiles_array = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
-	profiles_array_in_combo = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
 
 	main_window = GTK_WIDGET (gtk_builder_get_object (builder, "dialog_prefs"));
 
@@ -2662,43 +2776,6 @@ main (int argc, char **argv)
 	g_signal_connect (G_OBJECT (widget), "changed",
 			  G_CALLBACK (gcm_prefs_profile_combo_changed_cb), NULL);
 
-	/* setup rendering lists */
-	widget = GTK_WIDGET (gtk_builder_get_object (builder, "combobox_rendering_display"));
-	gcm_prefs_set_combo_simple_text (widget);
-	gtk_widget_set_sensitive (widget, FALSE);
-	gcm_prefs_setup_rendering_combobox (widget);
-	g_signal_connect (G_OBJECT (widget), "changed",
-			  G_CALLBACK (gcm_prefs_renderer_combo_changed_cb), NULL);
-	//TODO: need to get from GConf
-	gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 0);
-
-	widget = GTK_WIDGET (gtk_builder_get_object (builder, "combobox_rendering_softproof"));
-	gcm_prefs_set_combo_simple_text (widget);
-	gtk_widget_set_sensitive (widget, FALSE);
-	gcm_prefs_setup_rendering_combobox (widget);
-	g_signal_connect (G_OBJECT (widget), "changed",
-			  G_CALLBACK (gcm_prefs_renderer_combo_changed_cb), NULL);
-	//TODO: need to get from GConf
-	gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 0);
-
-	widget = GTK_WIDGET (gtk_builder_get_object (builder, "combobox_space_rgb"));
-	gcm_prefs_set_combo_simple_text (widget);
-	gtk_widget_set_sensitive (widget, FALSE);
-	gcm_prefs_setup_space_combobox (widget);
-	g_signal_connect (G_OBJECT (widget), "changed",
-			  G_CALLBACK (gcm_prefs_space_combo_changed_cb), NULL);
-	//TODO: need to get from GConf
-	gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 0);
-
-	widget = GTK_WIDGET (gtk_builder_get_object (builder, "combobox_space_cmyk"));
-	gcm_prefs_set_combo_simple_text (widget);
-	gtk_widget_set_sensitive (widget, FALSE);
-	gcm_prefs_setup_space_combobox (widget);
-	g_signal_connect (G_OBJECT (widget), "changed",
-			  G_CALLBACK (gcm_prefs_space_combo_changed_cb), NULL);
-	//TODO: need to get from GConf
-	gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 0);
-
 	/* set ranges */
 	widget = GTK_WIDGET (gtk_builder_get_object (builder, "hscale_gamma"));
 	gtk_range_set_range (GTK_RANGE (widget), 0.1f, 5.0f);
@@ -2878,8 +2955,6 @@ out:
 		g_object_unref (builder);
 	if (profiles_array != NULL)
 		g_ptr_array_unref (profiles_array);
-	if (profiles_array_in_combo != NULL)
-		g_ptr_array_unref (profiles_array_in_combo);
 	if (gcm_client != NULL)
 		g_object_unref (gcm_client);
 	return retval;
diff --git a/src/gcm-profile.c b/src/gcm-profile.c
index 7b1f27c..d60d158 100644
--- a/src/gcm-profile.c
+++ b/src/gcm-profile.c
@@ -50,8 +50,8 @@ static void     gcm_profile_finalize	(GObject     *object);
  **/
 struct _GcmProfilePrivate
 {
-	guint				 profile_type;
-	guint				 colorspace;
+	GcmProfileType			 profile_type;
+	GcmProfileColorspace		 colorspace;
 	guint				 size;
 	gboolean			 has_vcgt;
 	gchar				*description;
diff --git a/src/gcm-profile.h b/src/gcm-profile.h
index 2e1716e..02de6bf 100644
--- a/src/gcm-profile.h
+++ b/src/gcm-profile.h
@@ -65,6 +65,7 @@ struct _GcmProfileClass
 };
 
 typedef enum {
+	GCM_PROFILE_TYPE_UNKNOWN,
 	GCM_PROFILE_TYPE_INPUT_DEVICE,
 	GCM_PROFILE_TYPE_DISPLAY_DEVICE,
 	GCM_PROFILE_TYPE_OUTPUT_DEVICE,
@@ -72,10 +73,11 @@ typedef enum {
 	GCM_PROFILE_TYPE_COLORSPACE_CONVERSION,
 	GCM_PROFILE_TYPE_ABSTRACT,
 	GCM_PROFILE_TYPE_NAMED_COLOR,
-	GCM_PROFILE_TYPE_UNKNOWN
+	GCM_PROFILE_TYPE_LAST
 } GcmProfileType;
 
 typedef enum {
+	GCM_PROFILE_COLORSPACE_UNKNOWN,
 	GCM_PROFILE_COLORSPACE_XYZ,
 	GCM_PROFILE_COLORSPACE_LAB,
 	GCM_PROFILE_COLORSPACE_LUV,
@@ -86,7 +88,7 @@ typedef enum {
 	GCM_PROFILE_COLORSPACE_HSV,
 	GCM_PROFILE_COLORSPACE_CMYK,
 	GCM_PROFILE_COLORSPACE_CMY,
-	GCM_PROFILE_COLORSPACE_UNKNOWN
+	GCM_PROFILE_COLORSPACE_LAST
 } GcmProfileColorspace;
 
 GType		 gcm_profile_get_type		  	(void);
diff --git a/src/gcm-utils.c b/src/gcm-utils.c
index 3686a2a..8ffb5e3 100644
--- a/src/gcm-utils.c
+++ b/src/gcm-utils.c
@@ -899,6 +899,65 @@ gcm_utils_format_date_time (const struct tm *created)
 	return g_strdup (g_strchug (buffer));
 }
 
+/**
+ * gcm_rendering_intent_to_text:
+ **/
+const gchar *
+gcm_rendering_intent_to_text (GcmRenderingIntent intent)
+{
+	if (intent == GCM_RENDERING_INTENT_PERCEPTUAL)
+		return "perceptual";
+	if (intent == GCM_RENDERING_INTENT_RELATIVE_COLORMETRIC)
+		return "relative-colormetric";
+	if (intent == GCM_RENDERING_INTENT_SATURATION)
+		return "saturation";
+	if (intent == GCM_RENDERING_INTENT_ABSOLUTE_COLORMETRIC)
+		return "absolute-colormetric";
+	return "unknown";
+}
+
+/**
+ * gcm_rendering_intent_to_localized_text:
+ **/
+const gchar *
+gcm_rendering_intent_to_localized_text (GcmRenderingIntent intent)
+{
+	if (intent == GCM_RENDERING_INTENT_PERCEPTUAL) {
+		/* TRANSLATORS: rendering intent: you probably want to google this */
+		return _("Perceptual");
+	}
+	if (intent == GCM_RENDERING_INTENT_RELATIVE_COLORMETRIC) {
+		/* TRANSLATORS: rendering intent: you probably want to google this */
+		return _("Relative colormetric");
+	}
+	if (intent == GCM_RENDERING_INTENT_SATURATION) {
+		/* TRANSLATORS: rendering intent: you probably want to google this */
+		return _("Saturation");
+	}
+	if (intent == GCM_RENDERING_INTENT_ABSOLUTE_COLORMETRIC) {
+		/* TRANSLATORS: rendering intent: you probably want to google this */
+		return _("Absolute colormetric");
+	}
+	return "unknown";
+}
+
+/**
+ * gcm_rendering_intent_from_text:
+ **/
+GcmRenderingIntent
+gcm_rendering_intent_from_text (const gchar *intent)
+{
+	if (g_strcmp0 (intent, "perceptual") == 0)
+		return GCM_RENDERING_INTENT_PERCEPTUAL;
+	if (g_strcmp0 (intent, "relative-colormetric") == 0)
+		return GCM_RENDERING_INTENT_RELATIVE_COLORMETRIC;
+	if (g_strcmp0 (intent, "saturation") == 0)
+		return GCM_RENDERING_INTENT_SATURATION;
+	if (g_strcmp0 (intent, "absolute-colormetric") == 0)
+		return GCM_RENDERING_INTENT_ABSOLUTE_COLORMETRIC;
+	return GCM_RENDERING_INTENT_UNKNOWN;
+}
+
 /***************************************************************************
  ***                          MAKE CHECK TESTS                           ***
  ***************************************************************************/
diff --git a/src/gcm-utils.h b/src/gcm-utils.h
index 10884cf..18eec1a 100644
--- a/src/gcm-utils.h
+++ b/src/gcm-utils.h
@@ -35,7 +35,19 @@
 #define GCM_SETTINGS_DEFAULT_GAMMA		"/apps/gnome-color-manager/default_gamma"
 #define GCM_SETTINGS_GLOBAL_DISPLAY_CORRECTION	"/apps/gnome-color-manager/global_display_correction"
 #define GCM_SETTINGS_SET_ICC_PROFILE_ATOM	"/apps/gnome-color-manager/set_icc_profile_atom"
-#define GCM_SETTINGS_OUTPUT_INTENT		"/apps/gnome-color-manager/output_intent"
+#define GCM_SETTINGS_RENDERING_INTENT_DISPLAY	"/apps/gnome-color-manager/rendering_intent_display"
+#define GCM_SETTINGS_RENDERING_INTENT_SOFTPROOF	"/apps/gnome-color-manager/rendering_intent_softproof"
+#define GCM_SETTINGS_COLORSPACE_RGB		"/apps/gnome-color-manager/colorspace_rgb"
+#define GCM_SETTINGS_COLORSPACE_CMYK		"/apps/gnome-color-manager/colorspace_cmyk"
+
+typedef enum {
+	GCM_RENDERING_INTENT_UNKNOWN,
+	GCM_RENDERING_INTENT_PERCEPTUAL,
+	GCM_RENDERING_INTENT_RELATIVE_COLORMETRIC,
+	GCM_RENDERING_INTENT_SATURATION,
+	GCM_RENDERING_INTENT_ABSOLUTE_COLORMETRIC,
+	GCM_RENDERING_INTENT_LAST
+} GcmRenderingIntent;
 
 gboolean	 gcm_utils_set_gamma_for_device		(GcmDevice		*device,
 							 GError			**error);
@@ -60,6 +72,12 @@ void		 gcm_utils_ensure_sane_length		(gchar			*text,
 void		 gcm_utils_ensure_printable		(gchar			*text);
 gboolean	 gcm_utils_is_icc_profile		(const gchar		*filename);
 gchar		*gcm_utils_linkify			(const gchar		*text);
+GcmRenderingIntent
+gcm_rendering_intent_from_text (const gchar *intent);
+const gchar *
+gcm_rendering_intent_to_localized_text (GcmRenderingIntent intent);
+const gchar *
+gcm_rendering_intent_to_text (GcmRenderingIntent intent);
 
 #endif /* __GCM_UTILS_H */
 
diff --git a/src/org.gnome.ColorManager.xml b/src/org.gnome.ColorManager.xml
index 776b8fa..2ce686e 100644
--- a/src/org.gnome.ColorManager.xml
+++ b/src/org.gnome.ColorManager.xml
@@ -15,27 +15,24 @@
     </doc:doc>
 
     <!--*****************************************************************************************-->
-    <property name="OutputIntent" type="s" access="read">
+    <property name="RenderingIntentDisplay" type="s" access="read">
       <doc:doc>
         <doc:description>
           <doc:para>
-            The rendering itent for the output.
+            The rendering intent for the display.
           </doc:para>
           <doc:list>
             <doc:item>
               <doc:term>perceptual</doc:term><doc:definition>Perceptual</doc:definition>
             </doc:item>
             <doc:item>
-              <doc:term>rel-colormetric</doc:term><doc:definition>Relative colormetric</doc:definition>
+              <doc:term>relative-colormetric</doc:term><doc:definition>Relative colormetric</doc:definition>
             </doc:item>
             <doc:item>
               <doc:term>saturation</doc:term><doc:definition>Saturation</doc:definition>
             </doc:item>
             <doc:item>
-              <doc:term>abs-colormetric</doc:term><doc:definition>Absolute colormetric</doc:definition>
-            </doc:item>
-            <doc:item>
-              <doc:term>disabled</doc:term><doc:definition>Disabled</doc:definition>
+              <doc:term>absolute-colormetric</doc:term><doc:definition>Absolute colormetric</doc:definition>
             </doc:item>
           </doc:list>
         </doc:description>
@@ -43,6 +40,17 @@
     </property>
 
     <!--*****************************************************************************************-->
+    <property name="RenderingIntentSoftproof" type="s" access="read">
+      <doc:doc>
+        <doc:description>
+          <doc:para>
+            The rendering intent for softproofing.
+          </doc:para>
+        </doc:description>
+      </doc:doc>
+    </property>
+
+    <!--*****************************************************************************************-->
     <method name="GetProfilesForDevice">
       <annotation name="org.freedesktop.DBus.GLib.Async" value=""/>
       <doc:doc>



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