[gnome-color-manager] Show the actual ICC profile after calibration if the user is using a LiveCD



commit 7c3f7e615595c5517cdf04f4a8a09d16219a1b3b
Author: Richard Hughes <richard hughsie com>
Date:   Sat Apr 14 13:43:17 2012 +0100

    Show the actual ICC profile after calibration if the user is using a LiveCD

 src/gcm-calibrate-main.c |   54 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 54 insertions(+), 0 deletions(-)
---
diff --git a/src/gcm-calibrate-main.c b/src/gcm-calibrate-main.c
index ce71392..c30db54 100644
--- a/src/gcm-calibrate-main.c
+++ b/src/gcm-calibrate-main.c
@@ -679,11 +679,60 @@ gcm_calib_setup_page_intro (GcmCalibratePriv *calib)
 }
 
 /**
+ * gcm_calibrate_is_livecd:
+ **/
+static gboolean
+gcm_calibrate_is_livecd (void)
+{
+	gboolean ret;
+	gchar *data = NULL;
+	GError *error = NULL;
+
+	/* get the kernel commandline */
+	ret = g_file_get_contents ("/proc/cmdline", &data, NULL, &error);
+	if (!ret) {
+		g_warning ("failed to get kernel command line: %s",
+			   error->message);
+		g_error_free (error);
+		goto out;
+	}
+	ret = g_strstr_len (data, -1, "liveimg") != NULL;
+out:
+	g_free (data);
+	return ret;
+}
+
+/**
+ * gcm_calibrate_show_profile_location:
+ **/
+static void
+gcm_calibrate_show_profile_location (void)
+{
+	gboolean ret;
+	gchar *command_line;
+	GError *error = NULL;
+
+	/* just hardcode nautilus to open the folder */
+	command_line = g_strdup_printf ("nautilus %s/%s",
+					g_get_user_data_dir (),
+					"icc");
+	ret = g_spawn_command_line_async (command_line, &error);
+	if (!ret) {
+		g_warning ("failed to show profile: %s", error->message);
+		g_error_free (error);
+		goto out;
+	}
+out:
+	g_free (command_line);
+}
+
+/**
  * gcm_calib_setup_page_summary:
  **/
 static void
 gcm_calib_setup_page_summary (GcmCalibratePriv *calib)
 {
+	gboolean ret;
 	GtkWidget *vbox;
 	GtkWidget *content;
 	GtkWidget *image;
@@ -739,6 +788,11 @@ gcm_calib_setup_page_summary (GcmCalibratePriv *calib)
 			   "GcmCalibrateMain::Index",
 			   GUINT_TO_POINTER (GCM_CALIBRATE_PAGE_LAST));
 
+	/* show the user the profile to copy off the live system */
+	ret = gcm_calibrate_is_livecd ();
+	if (ret)
+		gcm_calibrate_show_profile_location ();
+
 	/* show page */
 	gtk_widget_show_all (vbox);
 }



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