[gnome-color-manager] trivial: switch gcm_profile_parse() to use a GFile, not a filename



commit b13ca03865ac640b56c1a63cc9231e3393f9651f
Author: Richard Hughes <richard hughsie com>
Date:   Fri Feb 19 14:26:16 2010 +0000

    trivial: switch gcm_profile_parse() to use a GFile, not a filename

 src/gcm-cie-widget.c    |    5 ++++-
 src/gcm-dbus.c          |    5 ++++-
 src/gcm-device-xrandr.c |    5 ++++-
 src/gcm-dump-profile.c  |    6 +++++-
 src/gcm-import.c        |    6 +++---
 src/gcm-prefs.c         |   34 +++++++++++++++-------------------
 src/gcm-profile-store.c |    6 +++++-
 src/gcm-profile.c       |   23 ++++++++++-------------
 src/gcm-profile.h       |    4 +++-
 src/gcm-trc-widget.c    |    5 ++++-
 10 files changed, 57 insertions(+), 42 deletions(-)
---
diff --git a/src/gcm-cie-widget.c b/src/gcm-cie-widget.c
index c50fe41..e0f46d7 100644
--- a/src/gcm-cie-widget.c
+++ b/src/gcm-cie-widget.c
@@ -1212,6 +1212,7 @@ gcm_cie_widget_test (EggTest *test)
 	gint response;
 	gchar *filename_profile;
 	gchar *filename_image;
+	GFile *file = NULL;
 
 	if (!egg_test_start (test, "GcmCieWidget"))
 		return;
@@ -1232,13 +1233,15 @@ gcm_cie_widget_test (EggTest *test)
 	egg_test_assert (test, (filename_profile != NULL));
 
 	profile = gcm_profile_default_new ();
-	gcm_profile_parse (profile, filename_profile, NULL);
+	file = g_file_new_for_path (filename_profile);
+	gcm_profile_parse (profile, file, NULL);
 	g_object_get (profile,
 		      "white-point", &white,
 		      "luminance-red", &red,
 		      "luminance-green", &green,
 		      "luminance-blue", &blue,
 		      NULL);
+	g_object_unref (file);
 
 	g_object_set (widget,
 		      "red", red,
diff --git a/src/gcm-dbus.c b/src/gcm-dbus.c
index 2a1d5bb..84ace0f 100644
--- a/src/gcm-dbus.c
+++ b/src/gcm-dbus.c
@@ -170,6 +170,7 @@ gcm_dbus_get_profiles_for_device_internal (GcmDbus *dbus, const gchar *sysfs_pat
 	guint i;
 	GcmDevice *device;
 	GcmProfile *profile;
+	GFile *file;
 	GError *error = NULL;
 	GPtrArray *array;
 	GPtrArray *array_devices;
@@ -200,7 +201,8 @@ gcm_dbus_get_profiles_for_device_internal (GcmDbus *dbus, const gchar *sysfs_pat
 
 			/* open and parse filename */
 			profile = gcm_profile_default_new ();
-			ret = gcm_profile_parse (profile, filename, &error);
+			file = g_file_new_for_path (filename);
+			ret = gcm_profile_parse (profile, file, &error);
 			if (!ret) {
 				egg_warning ("failed to parse %s: %s", filename, error->message);
 				g_clear_error (&error);
@@ -209,6 +211,7 @@ gcm_dbus_get_profiles_for_device_internal (GcmDbus *dbus, const gchar *sysfs_pat
 			}
 
 			/* unref */
+			g_object_unref (file);
 			g_object_unref (profile);
 			g_free (filename);
 		}
diff --git a/src/gcm-device-xrandr.c b/src/gcm-device-xrandr.c
index c687a6a..fc99014 100644
--- a/src/gcm-device-xrandr.c
+++ b/src/gcm-device-xrandr.c
@@ -453,6 +453,7 @@ gcm_device_xrandr_apply (GcmDevice *device, GError **error)
 	gboolean use_global;
 	gboolean use_atom;
 	gboolean leftmost_screen = FALSE;
+	GFile *file = NULL;
 	GcmDeviceTypeEnum type;
 	GcmDeviceXrandr *device_xrandr = GCM_DEVICE_XRANDR (device);
 	GcmDeviceXrandrPrivate *priv = device_xrandr->priv;
@@ -513,7 +514,9 @@ gcm_device_xrandr_apply (GcmDevice *device, GError **error)
 	if (use_global && filename != NULL) {
 		/* create CLUT */
 		profile = gcm_profile_default_new ();
-		ret = gcm_profile_parse (profile, filename, error);
+		file = g_file_new_for_path (filename);
+		ret = gcm_profile_parse (profile, file, error);
+		g_object_unref (file);
 		if (!ret)
 			goto out;
 
diff --git a/src/gcm-dump-profile.c b/src/gcm-dump-profile.c
index 3f9c3b3..7ddaec8 100644
--- a/src/gcm-dump-profile.c
+++ b/src/gcm-dump-profile.c
@@ -48,10 +48,12 @@ gcm_dump_profile_filename (const gchar *filename)
 	gchar *manufacturer = NULL;
 	gchar *model = NULL;
 	gchar *datetime = NULL;
+	GFile *file = NULL;
 
 	/* parse profile */
 	profile = gcm_profile_default_new ();
-	ret = gcm_profile_parse (profile, filename, &error);
+	file = g_file_new_for_path (filename);
+	ret = gcm_profile_parse (profile, file, &error);
 	if (!ret) {
 		egg_warning ("failed to parse: %s", error->message);
 		g_error_free (error);
@@ -87,6 +89,8 @@ gcm_dump_profile_filename (const gchar *filename)
 	if (datetime != NULL)
 		g_print ("Created:\t%s\n", datetime);
 out:
+	if (file != NULL)
+		g_object_unref (file);
 	g_object_unref (profile);
 	g_free (description);
 	g_free (copyright);
diff --git a/src/gcm-import.c b/src/gcm-import.c
index ed4846b..f3a472e 100644
--- a/src/gcm-import.c
+++ b/src/gcm-import.c
@@ -61,6 +61,7 @@ main (int argc, char **argv)
 	gchar *copyright = NULL;
 	gchar *description = NULL;
 	GFile *destination = NULL;
+	GFile *file = NULL;
 	gchar **files = NULL;
 	guint retval = 1;
 	GcmProfile *profile = NULL;
@@ -74,7 +75,6 @@ main (int argc, char **argv)
 	GcmXyz *red = NULL;
 	GcmXyz *green = NULL;
 	GcmXyz *blue = NULL;
-	GFile *file = NULL;
 
 	const GOptionEntry options[] = {
 		{ G_OPTION_REMAINING, '\0', 0, G_OPTION_ARG_FILENAME_ARRAY, &files,
@@ -110,7 +110,8 @@ main (int argc, char **argv)
 
 	/* load profile */
 	profile = gcm_profile_default_new ();
-	ret = gcm_profile_parse (profile, files[0], &error);
+	file = g_file_new_for_path (files[0]);
+	ret = gcm_profile_parse (profile, file, &error);
 	if (!ret) {
 		/* TRANSLATORS: could not read file */
 		dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, _("Failed to open ICC profile"));
@@ -146,7 +147,6 @@ main (int argc, char **argv)
 		      NULL);
 
 	/* check file does't already exist */
-	file = g_file_new_for_path (files[0]);
 	destination = gcm_utils_get_profile_destination (file);
 	ret = g_file_query_exists (destination, NULL);
 	if (ret) {
diff --git a/src/gcm-prefs.c b/src/gcm-prefs.c
index 7d42b14..3fcd2f6 100644
--- a/src/gcm-prefs.c
+++ b/src/gcm-prefs.c
@@ -1735,27 +1735,23 @@ gcm_prefs_profile_combo_changed_cb (GtkWidget *widget, gpointer data)
 		/* check the file is suitable */
 		profile_tmp = gcm_profile_default_new ();
 		filename = g_file_get_path (file);
+		ret = gcm_profile_parse (profile_tmp, file, &error);
+		if (!ret) {
+			/* set to 'None' */
+			gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 0);
 
-		//TODO gcm_profile_parse() needs to take a GFile as we can't do this on GVFS mounts
-		if (filename != NULL) {
-			ret = gcm_profile_parse (profile_tmp, filename, &error);
-			if (!ret) {
-				/* set to 'None' */
-				gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 0);
+			egg_warning ("failed to parse ICC file: %s", error->message);
+			g_error_free (error);
+			goto out;
+		}
+		ret = gcm_prefs_is_profile_suitable_for_device (profile_tmp, current_device);
+		if (!ret) {
+			/* set to 'None' */
+			gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 0);
 
-				egg_warning ("failed to parse ICC file: %s", error->message);
-				g_error_free (error);
-				goto out;
-			}
-			ret = gcm_prefs_is_profile_suitable_for_device (profile_tmp, current_device);
-			if (!ret) {
-				/* set to 'None' */
-				gtk_combo_box_set_active (GTK_COMBO_BOX (widget), 0);
-
-				/* TRANSLATORS: the profile was of the wrong sort for this device */
-				gcm_prefs_error_dialog (_("Could not import profile"), _("The profile was of the wrong type for this device"));
-				goto out;
-			}
+			/* TRANSLATORS: the profile was of the wrong sort for this device */
+			gcm_prefs_error_dialog (_("Could not import profile"), _("The profile was of the wrong type for this device"));
+			goto out;
 		}
 
 		/* actually set this as the default */
diff --git a/src/gcm-profile-store.c b/src/gcm-profile-store.c
index 746317b..5e17eb3 100644
--- a/src/gcm-profile-store.c
+++ b/src/gcm-profile-store.c
@@ -177,6 +177,7 @@ gcm_profile_store_add_profile (GcmProfileStore *profile_store, const gchar *file
 	gboolean ret = FALSE;
 	GcmProfile *profile = NULL;
 	GError *error = NULL;
+	GFile *file = NULL;
 	GcmProfileStorePrivate *priv = profile_store->priv;
 
 	/* already added? */
@@ -186,7 +187,8 @@ gcm_profile_store_add_profile (GcmProfileStore *profile_store, const gchar *file
 
 	/* parse the profile name */
 	profile = gcm_profile_default_new ();
-	ret = gcm_profile_parse (profile, filename, &error);
+	file = g_file_new_for_path (filename);
+	ret = gcm_profile_parse (profile, file, &error);
 	if (!ret) {
 		egg_warning ("failed to add profile '%s': %s", filename, error->message);
 		g_error_free (error);
@@ -203,6 +205,8 @@ gcm_profile_store_add_profile (GcmProfileStore *profile_store, const gchar *file
 	g_signal_emit (profile_store, signals[SIGNAL_ADDED], 0, profile);
 	g_signal_emit (profile_store, signals[SIGNAL_CHANGED], 0);
 out:
+	if (file != NULL)
+		g_object_unref (file);
 	if (profile != NULL)
 		g_object_unref (profile);
 	return ret;
diff --git a/src/gcm-profile.c b/src/gcm-profile.c
index 8db49a3..aefca31 100644
--- a/src/gcm-profile.c
+++ b/src/gcm-profile.c
@@ -120,20 +120,19 @@ out:
  * gcm_profile_parse:
  **/
 gboolean
-gcm_profile_parse (GcmProfile *profile, const gchar *filename, GError **error)
+gcm_profile_parse (GcmProfile *profile, GFile *file, GError **error)
 {
 	gchar *data = NULL;
 	gboolean ret;
 	guint length;
+	gchar *filename = NULL;
 	GError *error_local = NULL;
 
 	g_return_val_if_fail (GCM_IS_PROFILE (profile), FALSE);
-	g_return_val_if_fail (filename != NULL, FALSE);
-
-	egg_debug ("loading '%s'", filename);
+	g_return_val_if_fail (file != NULL, FALSE);
 
 	/* load files */
-	ret = g_file_get_contents (filename, &data, (gsize *) &length, &error_local);
+	ret = g_file_load_contents (file, NULL, &data, (gsize *) &length, NULL, &error_local);
 	if (!ret) {
 		g_set_error (error, 1, 0, "failed to load profile: %s", error_local->message);
 		g_error_free (error_local);
@@ -146,10 +145,12 @@ gcm_profile_parse (GcmProfile *profile, const gchar *filename, GError **error)
 		goto out;
 
 	/* save */
+	filename = g_file_get_path (file);
 	g_object_set (profile,
 		      "filename", filename,
 		      NULL);
 out:
+	g_free (filename);
 	g_free (data);
 	return ret;
 }
@@ -654,6 +655,7 @@ gcm_profile_test_parse_file (EggTest *test, const guint8 *datafile, GcmProfileTe
 	GcmProfile *profile_lcms1;
 	GcmXyz *xyz;
 	gfloat luminance;
+	GFile *file;
 
 	/************************************************************/
 	egg_test_title (test, "get a profile_lcms1 object");
@@ -667,11 +669,13 @@ gcm_profile_test_parse_file (EggTest *test, const guint8 *datafile, GcmProfileTe
 
 	/************************************************************/
 	egg_test_title (test, "load ICC file");
-	ret = gcm_profile_parse (profile_lcms1, filename, &error);
+	file = g_file_new_for_path (filename);
+	ret = gcm_profile_parse (profile_lcms1, file, &error);
 	if (ret)
 		egg_test_success (test, NULL);
 	else
 		egg_test_failed (test, "failed to parse: %s", error->message);
+	g_object_unref (file);
 
 	/* get some properties */
 	g_object_get (profile_lcms1,
@@ -686,13 +690,6 @@ gcm_profile_test_parse_file (EggTest *test, const guint8 *datafile, GcmProfileTe
 		      NULL);
 
 	/************************************************************/
-	egg_test_title (test, "check filename for %s", datafile);
-	if (g_strcmp0 (filename, filename_tmp) == 0)
-		egg_test_success (test, NULL);
-	else
-		egg_test_failed (test, "invalid value: %s, expecting: %s", filename, filename_tmp);
-
-	/************************************************************/
 	egg_test_title (test, "check copyright for %s", datafile);
 	if (g_strcmp0 (copyright, test_data->copyright) == 0)
 		egg_test_success (test, NULL);
diff --git a/src/gcm-profile.h b/src/gcm-profile.h
index c011084..373fbe5 100644
--- a/src/gcm-profile.h
+++ b/src/gcm-profile.h
@@ -23,6 +23,8 @@
 #define __GCM_PROFILE_H
 
 #include <glib-object.h>
+#include <gio/gio.h>
+
 #include "gcm-clut.h"
 
 G_BEGIN_DECLS
@@ -71,7 +73,7 @@ GType		 gcm_profile_get_type		  	(void);
 GcmProfile	*gcm_profile_new			(void);
 GcmProfile	*gcm_profile_default_new		(void);
 gboolean	 gcm_profile_parse			(GcmProfile	*profile,
-							 const gchar	*filename,
+							 GFile		*file,
 							 GError		**error);
 gboolean	 gcm_profile_parse_data			(GcmProfile	*profile,
 							 const guint8	*data,
diff --git a/src/gcm-trc-widget.c b/src/gcm-trc-widget.c
index 57133df..5716892 100644
--- a/src/gcm-trc-widget.c
+++ b/src/gcm-trc-widget.c
@@ -413,6 +413,7 @@ gcm_trc_widget_test (EggTest *test)
 	gchar *filename_profile;
 	gchar *filename_image;
 	GcmClutData *data;
+	GFile *file;
 
 	if (!egg_test_start (test, "GcmTrcWidget"))
 		return;
@@ -433,11 +434,13 @@ gcm_trc_widget_test (EggTest *test)
 	egg_test_assert (test, (filename_profile != NULL));
 
 	profile = gcm_profile_default_new ();
-	gcm_profile_parse (profile, filename_profile, NULL);
+	file = g_file_new_for_path (filename_profile);
+	gcm_profile_parse (profile, file, NULL);
 	clut = gcm_profile_generate_vcgt (profile, 256);
 	g_object_set (widget,
 		      "clut", clut,
 		      NULL);
+	g_object_unref (file);
 
 	/* show in a dialog as an example */
 	dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, "Does TRC widget match\nthe picture below?");



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