[gnome-color-manager] trivial: create a 'working-path' property on GcmCalibrate so we can save the profiles
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-color-manager] trivial: create a 'working-path' property on GcmCalibrate so we can save the profiles
- Date: Tue, 23 Feb 2010 17:06:52 +0000 (UTC)
commit dce212adbe5c7d40825ef7ca4e66f22c713f5bd9
Author: Richard Hughes <richard hughsie com>
Date: Tue Feb 23 14:36:26 2010 +0000
trivial: create a 'working-path' property on GcmCalibrate so we can save the profiles
src/gcm-calibrate-argyll.c | 57 +++++++++++++++++++++++++++++--------------
src/gcm-calibrate.c | 22 +++++++++++++++++
2 files changed, 60 insertions(+), 19 deletions(-)
---
diff --git a/src/gcm-calibrate-argyll.c b/src/gcm-calibrate-argyll.c
index df72e3c..fa2febb 100644
--- a/src/gcm-calibrate-argyll.c
+++ b/src/gcm-calibrate-argyll.c
@@ -97,9 +97,6 @@ enum {
G_DEFINE_TYPE (GcmCalibrateArgyll, gcm_calibrate_argyll, GCM_TYPE_CALIBRATE)
-/* assume this is writable by users */
-#define GCM_CALIBRATE_ARGYLL_TEMP_DIR "/tmp"
-
/**
* gcm_calibrate_argyll_precision_from_string:
**/
@@ -345,6 +342,7 @@ gcm_calibrate_argyll_display_neutralise (GcmCalibrateArgyll *calibrate_argyll, G
GnomeRROutput *output;
GPtrArray *array = NULL;
gchar *basename = NULL;
+ gchar *working_path = NULL;
gchar *output_name = NULL;
const gchar *title;
const gchar *message;
@@ -407,7 +405,7 @@ gcm_calibrate_argyll_display_neutralise (GcmCalibrateArgyll *calibrate_argyll, G
/* start up the command */
priv->state = GCM_CALIBRATE_ARGYLL_STATE_RUNNING;
vte_terminal_reset (VTE_TERMINAL(priv->terminal), TRUE, FALSE);
- priv->child_pid = vte_terminal_fork_command (VTE_TERMINAL(priv->terminal), command, argv, NULL, GCM_CALIBRATE_ARGYLL_TEMP_DIR, FALSE, FALSE, FALSE);
+ priv->child_pid = vte_terminal_fork_command (VTE_TERMINAL(priv->terminal), command, argv, NULL, working_path, FALSE, FALSE, FALSE);
/* wait until finished */
g_main_loop_run (priv->loop);
@@ -435,6 +433,7 @@ gcm_calibrate_argyll_display_neutralise (GcmCalibrateArgyll *calibrate_argyll, G
out:
if (array != NULL)
g_ptr_array_unref (array);
+ g_free (working_path);
g_free (basename);
g_free (output_name);
g_free (command);
@@ -455,6 +454,7 @@ gcm_calibrate_argyll_display_read_chart (GcmCalibrateArgyll *calibrate_argyll, G
gchar **argv = NULL;
GPtrArray *array = NULL;
gchar *basename = NULL;
+ gchar *working_path = NULL;
const gchar *title;
const gchar *message;
@@ -492,7 +492,7 @@ gcm_calibrate_argyll_display_read_chart (GcmCalibrateArgyll *calibrate_argyll, G
/* start up the command */
priv->state = GCM_CALIBRATE_ARGYLL_STATE_RUNNING;
vte_terminal_reset (VTE_TERMINAL(priv->terminal), TRUE, FALSE);
- priv->child_pid = vte_terminal_fork_command (VTE_TERMINAL(priv->terminal), command, argv, NULL, GCM_CALIBRATE_ARGYLL_TEMP_DIR, FALSE, FALSE, FALSE);
+ priv->child_pid = vte_terminal_fork_command (VTE_TERMINAL(priv->terminal), command, argv, NULL, working_path, FALSE, FALSE, FALSE);
/* wait until finished */
g_main_loop_run (priv->loop);
@@ -520,6 +520,7 @@ gcm_calibrate_argyll_display_read_chart (GcmCalibrateArgyll *calibrate_argyll, G
out:
if (array != NULL)
g_ptr_array_unref (array);
+ g_free (working_path);
g_free (basename);
g_free (command);
g_strfreev (argv);
@@ -538,6 +539,7 @@ gcm_calibrate_argyll_display_generate_patches (GcmCalibrateArgyll *calibrate_arg
gchar **argv = NULL;
GPtrArray *array = NULL;
gchar *basename = NULL;
+ gchar *working_path = NULL;
const gchar *title;
const gchar *message;
GcmDeviceTypeEnum device_type;
@@ -588,7 +590,7 @@ gcm_calibrate_argyll_display_generate_patches (GcmCalibrateArgyll *calibrate_arg
/* start up the command */
priv->state = GCM_CALIBRATE_ARGYLL_STATE_RUNNING;
vte_terminal_reset (VTE_TERMINAL(priv->terminal), TRUE, FALSE);
- priv->child_pid = vte_terminal_fork_command (VTE_TERMINAL(priv->terminal), command, argv, NULL, GCM_CALIBRATE_ARGYLL_TEMP_DIR, FALSE, FALSE, FALSE);
+ priv->child_pid = vte_terminal_fork_command (VTE_TERMINAL(priv->terminal), command, argv, NULL, working_path, FALSE, FALSE, FALSE);
/* wait until finished */
g_main_loop_run (priv->loop);
@@ -616,6 +618,7 @@ gcm_calibrate_argyll_display_generate_patches (GcmCalibrateArgyll *calibrate_arg
out:
if (array != NULL)
g_ptr_array_unref (array);
+ g_free (working_path);
g_free (basename);
g_free (command);
g_strfreev (argv);
@@ -635,6 +638,7 @@ gcm_calibrate_argyll_display_draw_and_measure (GcmCalibrateArgyll *calibrate_arg
gchar **argv = NULL;
GPtrArray *array = NULL;
gchar *basename = NULL;
+ gchar *working_path = NULL;
const gchar *title;
const gchar *message;
@@ -679,7 +683,7 @@ gcm_calibrate_argyll_display_draw_and_measure (GcmCalibrateArgyll *calibrate_arg
/* start up the command */
priv->state = GCM_CALIBRATE_ARGYLL_STATE_RUNNING;
vte_terminal_reset (VTE_TERMINAL(priv->terminal), TRUE, FALSE);
- priv->child_pid = vte_terminal_fork_command (VTE_TERMINAL(priv->terminal), command, argv, NULL, GCM_CALIBRATE_ARGYLL_TEMP_DIR, FALSE, FALSE, FALSE);
+ priv->child_pid = vte_terminal_fork_command (VTE_TERMINAL(priv->terminal), command, argv, NULL, working_path, FALSE, FALSE, FALSE);
/* wait until finished */
g_main_loop_run (priv->loop);
@@ -707,6 +711,7 @@ gcm_calibrate_argyll_display_draw_and_measure (GcmCalibrateArgyll *calibrate_arg
out:
if (array != NULL)
g_ptr_array_unref (array);
+ g_free (working_path);
g_free (basename);
g_free (command);
g_strfreev (argv);
@@ -727,6 +732,7 @@ gcm_calibrate_argyll_display_generate_profile (GcmCalibrateArgyll *calibrate_arg
gchar *description_new = NULL;
gchar *command = NULL;
gchar *basename = NULL;
+ gchar *working_path = NULL;
const gchar *description = NULL;
const gchar *manufacturer = NULL;
const gchar *model = NULL;
@@ -791,7 +797,7 @@ gcm_calibrate_argyll_display_generate_profile (GcmCalibrateArgyll *calibrate_arg
/* start up the command */
priv->state = GCM_CALIBRATE_ARGYLL_STATE_RUNNING;
vte_terminal_reset (VTE_TERMINAL(priv->terminal), TRUE, FALSE);
- priv->child_pid = vte_terminal_fork_command (VTE_TERMINAL(priv->terminal), command, argv, NULL, GCM_CALIBRATE_ARGYLL_TEMP_DIR, FALSE, FALSE, FALSE);
+ priv->child_pid = vte_terminal_fork_command (VTE_TERMINAL(priv->terminal), command, argv, NULL, working_path, FALSE, FALSE, FALSE);
/* wait until finished */
g_main_loop_run (priv->loop);
@@ -822,6 +828,7 @@ out:
g_ptr_array_unref (array);
if (date != NULL)
g_date_free (date);
+ g_free (working_path);
g_free (basename);
g_free (command);
g_free (description_new);
@@ -882,6 +889,7 @@ gcm_calibrate_argyll_device_copy (GcmCalibrateArgyll *calibrate_argyll, GError *
GFile *dest_cht = NULL;
GFile *dest_source = NULL;
GFile *dest_reference = NULL;
+ gchar *working_path = NULL;
const gchar *title;
const gchar *message;
const gchar *filename_tmp;
@@ -908,9 +916,9 @@ gcm_calibrate_argyll_device_copy (GcmCalibrateArgyll *calibrate_argyll, GError *
/* build filenames */
filename = g_strdup_printf ("%s.tif", basename);
- device = g_build_filename (GCM_CALIBRATE_ARGYLL_TEMP_DIR, filename, NULL);
- destination_cht = g_build_filename (GCM_CALIBRATE_ARGYLL_TEMP_DIR, "scanin.cht", NULL);
- destination_ref = g_build_filename (GCM_CALIBRATE_ARGYLL_TEMP_DIR, "scanin-ref.txt", NULL);
+ device = g_build_filename (working_path, filename, NULL);
+ destination_cht = g_build_filename (working_path, "scanin.cht", NULL);
+ destination_ref = g_build_filename (working_path, "scanin-ref.txt", NULL);
/* copy all files to /tmp as argyllcms doesn't cope well with paths */
filename_tmp = gcm_calibrate_argyll_reference_kind_to_filename (reference_kind);
@@ -935,6 +943,7 @@ gcm_calibrate_argyll_device_copy (GcmCalibrateArgyll *calibrate_argyll, GError *
if (!ret)
goto out;
out:
+ g_free (working_path);
g_free (basename);
g_free (filename);
g_free (filename_cht);
@@ -965,6 +974,7 @@ gcm_calibrate_argyll_device_measure (GcmCalibrateArgyll *calibrate_argyll, GErro
gchar *filename = NULL;
gchar *command = NULL;
gchar *basename = NULL;
+ gchar *working_path = NULL;
const gchar *title;
const gchar *message;
@@ -1007,7 +1017,7 @@ gcm_calibrate_argyll_device_measure (GcmCalibrateArgyll *calibrate_argyll, GErro
/* start up the command */
priv->state = GCM_CALIBRATE_ARGYLL_STATE_RUNNING;
vte_terminal_reset (VTE_TERMINAL(priv->terminal), TRUE, FALSE);
- priv->child_pid = vte_terminal_fork_command (VTE_TERMINAL(priv->terminal), command, argv, NULL, GCM_CALIBRATE_ARGYLL_TEMP_DIR, FALSE, FALSE, FALSE);
+ priv->child_pid = vte_terminal_fork_command (VTE_TERMINAL(priv->terminal), command, argv, NULL, working_path, FALSE, FALSE, FALSE);
/* wait until finished */
g_main_loop_run (priv->loop);
@@ -1033,6 +1043,7 @@ gcm_calibrate_argyll_device_measure (GcmCalibrateArgyll *calibrate_argyll, GErro
goto out;
}
out:
+ g_free (working_path);
g_free (filename);
g_free (command);
g_free (basename);
@@ -1061,6 +1072,7 @@ gcm_calibrate_argyll_device_generate_profile (GcmCalibrateArgyll *calibrate_argy
const gchar *manufacturer;
const gchar *model;
gchar *device = NULL;
+ gchar *working_path = NULL;
const gchar *title;
const gchar *message;
GcmCalibrateReferenceKind reference_kind;
@@ -1127,7 +1139,7 @@ gcm_calibrate_argyll_device_generate_profile (GcmCalibrateArgyll *calibrate_argy
/* start up the command */
priv->state = GCM_CALIBRATE_ARGYLL_STATE_RUNNING;
vte_terminal_reset (VTE_TERMINAL(priv->terminal), TRUE, FALSE);
- priv->child_pid = vte_terminal_fork_command (VTE_TERMINAL(priv->terminal), command, argv, NULL, GCM_CALIBRATE_ARGYLL_TEMP_DIR, FALSE, FALSE, FALSE);
+ priv->child_pid = vte_terminal_fork_command (VTE_TERMINAL(priv->terminal), command, argv, NULL, working_path, FALSE, FALSE, FALSE);
/* wait until finished */
g_main_loop_run (priv->loop);
@@ -1157,6 +1169,7 @@ out:
g_ptr_array_unref (array);
if (date != NULL)
g_date_free (date);
+ g_free (working_path);
g_free (description_tmp);
g_free (copyright);
g_free (basename);
@@ -1179,6 +1192,7 @@ gcm_calibrate_argyll_finish (GcmCalibrateArgyll *calibrate_argyll, GError **erro
const gchar *exts[] = {"cal", "ti1", "ti3", "tif", NULL};
const gchar *filenames[] = {"scanin.cht", "scanin-ref.txt", NULL};
gchar *basename = NULL;
+ gchar *working_path = NULL;
/* get shared data */
g_object_get (calibrate_argyll,
@@ -1188,7 +1202,7 @@ gcm_calibrate_argyll_finish (GcmCalibrateArgyll *calibrate_argyll, GError **erro
/* remove all the temp files */
if (basename != NULL) {
for (i=0; exts[i] != NULL; i++) {
- filename_tmp = g_strdup_printf ("%s/%s.%s", GCM_CALIBRATE_ARGYLL_TEMP_DIR, basename, exts[i]);
+ filename_tmp = g_strdup_printf ("%s/%s.%s", working_path, basename, exts[i]);
ret = g_file_test (filename_tmp, G_FILE_TEST_IS_REGULAR);
if (ret) {
egg_debug ("removing %s", filename_tmp);
@@ -1200,7 +1214,7 @@ gcm_calibrate_argyll_finish (GcmCalibrateArgyll *calibrate_argyll, GError **erro
/* remove all the temp files */
for (i=0; filenames[i] != NULL; i++) {
- filename_tmp = g_strdup_printf ("%s/%s", GCM_CALIBRATE_ARGYLL_TEMP_DIR, filenames[i]);
+ filename_tmp = g_strdup_printf ("%s/%s", working_path, filenames[i]);
ret = g_file_test (filename_tmp, G_FILE_TEST_IS_REGULAR);
if (ret) {
egg_debug ("removing %s", filename_tmp);
@@ -1220,7 +1234,7 @@ gcm_calibrate_argyll_finish (GcmCalibrateArgyll *calibrate_argyll, GError **erro
}
/* get the finished icc file */
- filename = g_strdup_printf ("%s/%s.icc", GCM_CALIBRATE_ARGYLL_TEMP_DIR, basename);
+ filename = g_strdup_printf ("%s/%s.icc", working_path, basename);
/* we never finished all the steps */
if (!g_file_test (filename, G_FILE_TEST_EXISTS)) {
@@ -1238,6 +1252,7 @@ gcm_calibrate_argyll_finish (GcmCalibrateArgyll *calibrate_argyll, GError **erro
NULL);
ret = TRUE;
out:
+ g_free (working_path);
g_free (basename);
g_free (filename);
return ret;
@@ -1339,6 +1354,7 @@ gcm_calibrate_argyll_display_generate_targets (GcmCalibrateArgyll *calibrate_arg
gchar **argv = NULL;
GPtrArray *array = NULL;
gchar *basename = NULL;
+ gchar *working_path = NULL;
const gchar *title;
const gchar *message;
GcmColorimeterKind colorimeter_kind;
@@ -1395,7 +1411,7 @@ gcm_calibrate_argyll_display_generate_targets (GcmCalibrateArgyll *calibrate_arg
/* start up the command */
priv->state = GCM_CALIBRATE_ARGYLL_STATE_RUNNING;
vte_terminal_reset (VTE_TERMINAL(priv->terminal), TRUE, FALSE);
- priv->child_pid = vte_terminal_fork_command (VTE_TERMINAL(priv->terminal), command, argv, NULL, GCM_CALIBRATE_ARGYLL_TEMP_DIR, FALSE, FALSE, FALSE);
+ priv->child_pid = vte_terminal_fork_command (VTE_TERMINAL(priv->terminal), command, argv, NULL, working_path, FALSE, FALSE, FALSE);
/* wait until finished */
g_main_loop_run (priv->loop);
@@ -1423,6 +1439,7 @@ gcm_calibrate_argyll_display_generate_targets (GcmCalibrateArgyll *calibrate_arg
out:
if (array != NULL)
g_ptr_array_unref (array);
+ g_free (working_path);
g_free (basename);
g_free (command);
g_strfreev (argv);
@@ -1443,6 +1460,7 @@ gcm_calibrate_argyll_render_cb (GcmPrint *print, GtkPageSetup *page_setup, GcmCa
const gchar *filename;
gchar *basename = NULL;
gchar *filename_tmp;
+ gchar *working_path = NULL;
/* get shared data */
g_object_get (calibrate,
@@ -1461,7 +1479,7 @@ gcm_calibrate_argyll_render_cb (GcmPrint *print, GtkPageSetup *page_setup, GcmCa
//FIXME: we need a temp directory, not just the root of tmp
/* list files */
- dir = g_dir_open (GCM_CALIBRATE_ARGYLL_TEMP_DIR, 0, error);
+ dir = g_dir_open (working_path, 0, error);
if (dir == NULL)
goto out;
@@ -1471,13 +1489,14 @@ gcm_calibrate_argyll_render_cb (GcmPrint *print, GtkPageSetup *page_setup, GcmCa
while (filename != NULL) {
if (g_str_has_prefix (filename, basename) &&
g_str_has_suffix (filename, ".tif")) {
- filename_tmp = g_build_filename (GCM_CALIBRATE_ARGYLL_TEMP_DIR, filename, NULL);
+ filename_tmp = g_build_filename (working_path, filename, NULL);
egg_debug ("add print page %s", filename_tmp);
g_ptr_array_add (array, filename_tmp);
}
filename = g_dir_read_name (dir);
}
out:
+ g_free (working_path);
g_free (basename);
if (dir != NULL)
g_dir_close (dir);
diff --git a/src/gcm-calibrate.c b/src/gcm-calibrate.c
index 7e0713b..e85d603 100644
--- a/src/gcm-calibrate.c
+++ b/src/gcm-calibrate.c
@@ -69,6 +69,7 @@ struct _GcmCalibratePrivate
gchar *description;
gchar *serial;
gchar *device;
+ gchar *working_path;
};
enum {
@@ -88,6 +89,7 @@ enum {
PROP_FILENAME_SOURCE,
PROP_FILENAME_REFERENCE,
PROP_FILENAME_RESULT,
+ PROP_WORKING_PATH,
PROP_LAST
};
@@ -937,6 +939,9 @@ gcm_calibrate_get_property (GObject *object, guint prop_id, GValue *value, GPara
case PROP_MANUFACTURER:
g_value_set_string (value, priv->manufacturer);
break;
+ case PROP_WORKING_PATH:
+ g_value_set_string (value, priv->working_path);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -1023,6 +1028,10 @@ gcm_calibrate_set_property (GObject *object, guint prop_id, const GValue *value,
case PROP_DEVICE_TYPE:
priv->device_type = g_value_get_uint (value);
break;
+ case PROP_WORKING_PATH:
+ g_free (priv->working_path);
+ priv->working_path = g_strdup (g_value_get_string (value));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -1161,6 +1170,14 @@ gcm_calibrate_class_init (GcmCalibrateClass *klass)
G_PARAM_READWRITE);
g_object_class_install_property (object_class, PROP_MANUFACTURER, pspec);
+ /**
+ * GcmCalibrate:working-path:
+ */
+ pspec = g_param_spec_string ("working-path", NULL, NULL,
+ NULL,
+ G_PARAM_READWRITE);
+ g_object_class_install_property (object_class, PROP_WORKING_PATH, pspec);
+
g_type_class_add_private (klass, sizeof (GcmCalibratePrivate));
}
@@ -1181,12 +1198,16 @@ gcm_calibrate_init (GcmCalibrate *calibrate)
calibrate->priv->description = NULL;
calibrate->priv->device = NULL;
calibrate->priv->serial = NULL;
+ calibrate->priv->working_path = NULL;
calibrate->priv->device_kind = GCM_CALIBRATE_DEVICE_KIND_UNKNOWN;
calibrate->priv->print_kind = GCM_CALIBRATE_PRINT_KIND_UNKNOWN;
calibrate->priv->reference_kind = GCM_CALIBRATE_REFERENCE_KIND_UNKNOWN;
calibrate->priv->colorimeter = gcm_colorimeter_new ();
calibrate->priv->calibrate_dialog = gcm_calibrate_dialog_new ();
+ // FIXME: this has to be per-run specific
+ calibrate->priv->working_path = g_strdup ("/tmp");
+
/* 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);
@@ -1211,6 +1232,7 @@ gcm_calibrate_finalize (GObject *object)
g_free (priv->description);
g_free (priv->device);
g_free (priv->serial);
+ g_free (priv->working_path);
g_object_unref (priv->colorimeter);
g_signal_handlers_disconnect_by_func (calibrate->priv->colorimeter, G_CALLBACK (gcm_prefs_colorimeter_changed_cb), calibrate);
g_object_unref (priv->calibrate_dialog);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]