[gimp] app: port GimpImageMapTool settings import/export to streams
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: port GimpImageMapTool settings import/export to streams
- Date: Fri, 4 Jul 2014 16:33:43 +0000 (UTC)
commit 29427fa4f184ab09e5107b90a301d281476c25c5
Author: Michael Natterer <mitch gimp org>
Date: Fri Jul 4 18:19:45 2014 +0200
app: port GimpImageMapTool settings import/export to streams
Simplifies and centralizes error checking and reporting.
app/operations/gimpcurvesconfig.c | 35 +++----------
app/operations/gimpcurvesconfig.h | 2 +-
app/operations/gimplevelsconfig.c | 35 +++----------
app/operations/gimplevelsconfig.h | 2 +-
app/tools/gimpcurvestool.c | 45 ++++------------
app/tools/gimpimagemaptool-settings.c | 90 +++++++++++++++++++++++----------
app/tools/gimpimagemaptool-settings.h | 4 +-
app/tools/gimpimagemaptool.h | 4 +-
app/tools/gimplevelstool.c | 45 ++++------------
9 files changed, 105 insertions(+), 157 deletions(-)
---
diff --git a/app/operations/gimpcurvesconfig.c b/app/operations/gimpcurvesconfig.c
index 3f1e670..c79d102 100644
--- a/app/operations/gimpcurvesconfig.c
+++ b/app/operations/gimpcurvesconfig.c
@@ -599,32 +599,17 @@ gimp_curves_config_load_cruft (GimpCurvesConfig *config,
gboolean
gimp_curves_config_save_cruft (GimpCurvesConfig *config,
- GFile *file,
+ GOutputStream *output,
GError **error)
{
- GOutputStream *output;
- GString *string;
- gsize bytes_written;
- gint i;
- GError *my_error = NULL;
+ GString *string;
+ gsize bytes_written;
+ gint i;
g_return_val_if_fail (GIMP_IS_CURVES_CONFIG (config), FALSE);
- g_return_val_if_fail (G_IS_FILE (file), FALSE);
+ g_return_val_if_fail (G_IS_OUTPUT_STREAM (output), FALSE);
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
- output = G_OUTPUT_STREAM (g_file_replace (file,
- NULL, FALSE, G_FILE_CREATE_NONE,
- NULL, &my_error));
- if (! output)
- {
- g_set_error (error, GIMP_DATA_ERROR, GIMP_DATA_ERROR_OPEN,
- _("Could not open '%s' for writing: %s"),
- gimp_file_get_utf8_name (file),
- my_error->message);
- g_clear_error (&my_error);
- return FALSE;
- }
-
string = g_string_new ("# GIMP Curves File\n");
for (i = 0; i < 5; i++)
@@ -682,21 +667,15 @@ gimp_curves_config_save_cruft (GimpCurvesConfig *config,
}
if (! g_output_stream_write_all (output, string->str, string->len,
- &bytes_written, NULL, &my_error) ||
+ &bytes_written, NULL, error) ||
bytes_written != string->len)
{
- g_set_error (error, GIMP_DATA_ERROR, GIMP_DATA_ERROR_WRITE,
- _("Writing curves file '%s' failed: %s"),
- gimp_file_get_utf8_name (file),
- my_error->message);
- g_clear_error (&my_error);
+ g_prefix_error (error, _("Writing curves file failed: "));
g_string_free (string, TRUE);
- g_object_unref (output);
return FALSE;
}
g_string_free (string, TRUE);
- g_object_unref (output);
return TRUE;
}
diff --git a/app/operations/gimpcurvesconfig.h b/app/operations/gimpcurvesconfig.h
index 990a8e9..c73afec 100644
--- a/app/operations/gimpcurvesconfig.h
+++ b/app/operations/gimpcurvesconfig.h
@@ -72,7 +72,7 @@ gboolean gimp_curves_config_load_cruft (GimpCurvesConfig *config,
GInputStream *input,
GError **error);
gboolean gimp_curves_config_save_cruft (GimpCurvesConfig *config,
- GFile *file,
+ GOutputStream *output,
GError **error);
diff --git a/app/operations/gimplevelsconfig.c b/app/operations/gimplevelsconfig.c
index ead15ce..cc5702f 100644
--- a/app/operations/gimplevelsconfig.c
+++ b/app/operations/gimplevelsconfig.c
@@ -840,32 +840,17 @@ gimp_levels_config_load_cruft (GimpLevelsConfig *config,
gboolean
gimp_levels_config_save_cruft (GimpLevelsConfig *config,
- GFile *file,
+ GOutputStream *output,
GError **error)
{
- GOutputStream *output;
- GString *string;
- gsize bytes_written;
- gint i;
- GError *my_error = NULL;
+ GString *string;
+ gsize bytes_written;
+ gint i;
g_return_val_if_fail (GIMP_IS_LEVELS_CONFIG (config), FALSE);
- g_return_val_if_fail (G_IS_FILE (file), FALSE);
+ g_return_val_if_fail (G_IS_OUTPUT_STREAM (output), FALSE);
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
- output = G_OUTPUT_STREAM (g_file_replace (file,
- NULL, FALSE, G_FILE_CREATE_NONE,
- NULL, &my_error));
- if (! output)
- {
- g_set_error (error, GIMP_DATA_ERROR, GIMP_DATA_ERROR_OPEN,
- _("Could not open '%s' for writing: %s"),
- gimp_file_get_utf8_name (file),
- my_error->message);
- g_clear_error (&my_error);
- return FALSE;
- }
-
string = g_string_new ("# GIMP Levels File\n");
for (i = 0; i < 5; i++)
@@ -883,21 +868,15 @@ gimp_levels_config_save_cruft (GimpLevelsConfig *config,
}
if (! g_output_stream_write_all (output, string->str, string->len,
- &bytes_written, NULL, &my_error) ||
+ &bytes_written, NULL, error) ||
bytes_written != string->len)
{
- g_set_error (error, GIMP_DATA_ERROR, GIMP_DATA_ERROR_WRITE,
- _("Writing levels file '%s' failed: %s"),
- gimp_file_get_utf8_name (file),
- my_error->message);
- g_clear_error (&my_error);
+ g_prefix_error (error, _("Writing levels file failed: "));
g_string_free (string, TRUE);
- g_object_unref (output);
return FALSE;
}
g_string_free (string, TRUE);
- g_object_unref (output);
return TRUE;
}
diff --git a/app/operations/gimplevelsconfig.h b/app/operations/gimplevelsconfig.h
index 71ac037..bac4137 100644
--- a/app/operations/gimplevelsconfig.h
+++ b/app/operations/gimplevelsconfig.h
@@ -79,7 +79,7 @@ gboolean gimp_levels_config_load_cruft (GimpLevelsConfig *config,
GInputStream *input,
GError **error);
gboolean gimp_levels_config_save_cruft (GimpLevelsConfig *config,
- GFile *file,
+ GOutputStream *output,
GError **error);
diff --git a/app/tools/gimpcurvestool.c b/app/tools/gimpcurvestool.c
index 07392ff..fecdf8b 100644
--- a/app/tools/gimpcurvestool.c
+++ b/app/tools/gimpcurvestool.c
@@ -93,10 +93,10 @@ static GeglNode * gimp_curves_tool_get_operation (GimpImageMapTool *image_m
static void gimp_curves_tool_dialog (GimpImageMapTool *image_map_tool);
static void gimp_curves_tool_reset (GimpImageMapTool *image_map_tool);
static gboolean gimp_curves_tool_settings_import(GimpImageMapTool *image_map_tool,
- GFile *file,
+ GInputStream *input,
GError **error);
static gboolean gimp_curves_tool_settings_export(GimpImageMapTool *image_map_tool,
- GFile *file,
+ GOutputStream *output,
GError **error);
static void gimp_curves_tool_export_setup (GimpSettingsBox *settings_box,
@@ -594,66 +594,43 @@ gimp_curves_tool_reset (GimpImageMapTool *image_map_tool)
static gboolean
gimp_curves_tool_settings_import (GimpImageMapTool *image_map_tool,
- GFile *file,
+ GInputStream *input,
GError **error)
{
GimpCurvesTool *tool = GIMP_CURVES_TOOL (image_map_tool);
- GInputStream *input;
gchar header[64];
gsize bytes_read;
- input = G_INPUT_STREAM (g_file_read (file, NULL, error));
- if (! input)
- {
- g_prefix_error (error,
- _("Could not open '%s' for reading: "),
- gimp_file_get_utf8_name (file));
- return FALSE;
- }
-
if (! g_input_stream_read_all (input, header, sizeof (header),
&bytes_read, NULL, error) ||
bytes_read != sizeof (header))
{
- g_prefix_error (error,
- _("Could not read header from '%s': "),
- gimp_file_get_utf8_name (file));
- g_object_unref (input);
+ g_prefix_error (error, _("Could not read header: "));
return FALSE;
}
- if (g_str_has_prefix (header, "# GIMP Curves File\n"))
- {
- gboolean success;
-
- g_seekable_seek (G_SEEKABLE (input), 0, G_SEEK_SET, NULL, NULL);
-
- success = gimp_curves_config_load_cruft (tool->config, input, error);
-
- g_object_unref (input);
+ g_seekable_seek (G_SEEKABLE (input), 0, G_SEEK_SET, NULL, NULL);
- return success;
- }
-
- g_object_unref (input);
+ if (g_str_has_prefix (header, "# GIMP Curves File\n"))
+ return gimp_curves_config_load_cruft (tool->config, input, error);
return GIMP_IMAGE_MAP_TOOL_CLASS (parent_class)->settings_import (image_map_tool,
- file,
+ input,
error);
}
static gboolean
gimp_curves_tool_settings_export (GimpImageMapTool *image_map_tool,
- GFile *file,
+ GOutputStream *output,
GError **error)
{
GimpCurvesTool *tool = GIMP_CURVES_TOOL (image_map_tool);
if (tool->export_old_format)
- return gimp_curves_config_save_cruft (tool->config, file, error);
+ return gimp_curves_config_save_cruft (tool->config, output, error);
return GIMP_IMAGE_MAP_TOOL_CLASS (parent_class)->settings_export (image_map_tool,
- file,
+ output,
error);
}
diff --git a/app/tools/gimpimagemaptool-settings.c b/app/tools/gimpimagemaptool-settings.c
index d8ac0f0..5f10fc7 100644
--- a/app/tools/gimpimagemaptool-settings.c
+++ b/app/tools/gimpimagemaptool-settings.c
@@ -114,24 +114,17 @@ gimp_image_map_tool_real_get_settings_ui (GimpImageMapTool *image_map_tool,
gboolean
gimp_image_map_tool_real_settings_import (GimpImageMapTool *tool,
- GFile *file,
+ GInputStream *input,
GError **error)
{
- gboolean success;
-
- if (GIMP_TOOL (tool)->tool_info->gimp->be_verbose)
- g_print ("Parsing '%s'\n", gimp_file_get_utf8_name (file));
-
- success = gimp_config_deserialize_gfile (GIMP_CONFIG (tool->config),
- file,
- NULL, error);
-
- return success;
+ return gimp_config_deserialize_stream (GIMP_CONFIG (tool->config),
+ input,
+ NULL, error);
}
gboolean
gimp_image_map_tool_real_settings_export (GimpImageMapTool *tool,
- GFile *file,
+ GOutputStream *output,
GError **error)
{
GimpImageMapToolClass *klass = GIMP_IMAGE_MAP_TOOL_GET_CLASS (tool);
@@ -142,13 +135,10 @@ gimp_image_map_tool_real_settings_export (GimpImageMapTool *tool,
header = g_strdup_printf ("GIMP %s tool settings", klass->settings_name);
footer = g_strdup_printf ("end of %s tool settings", klass->settings_name);
- if (GIMP_TOOL (tool)->tool_info->gimp->be_verbose)
- g_print ("Writing '%s'\n", gimp_file_get_utf8_name (file));
-
- success = gimp_config_serialize_to_gfile (GIMP_CONFIG (tool->config),
- file,
- header, footer,
- NULL, error);
+ success = gimp_config_serialize_to_stream (GIMP_CONFIG (tool->config),
+ output,
+ header, footer,
+ NULL, error);
g_free (header);
g_free (footer);
@@ -165,20 +155,42 @@ gimp_image_map_tool_settings_import (GimpSettingsBox *box,
GimpImageMapTool *tool)
{
GimpImageMapToolClass *tool_class = GIMP_IMAGE_MAP_TOOL_GET_CLASS (tool);
+ GInputStream *input;
GError *error = NULL;
g_return_val_if_fail (tool_class->settings_import != NULL, FALSE);
- if (! tool_class->settings_import (tool, file, &error))
+ if (GIMP_TOOL (tool)->tool_info->gimp->be_verbose)
+ g_print ("Parsing '%s'\n", gimp_file_get_utf8_name (file));
+
+ input = G_INPUT_STREAM (g_file_read (file, NULL, &error));
+ if (! input)
{
- gimp_message_literal (GIMP_TOOL (tool)->tool_info->gimp,
- G_OBJECT (gimp_tool_gui_get_dialog (tool->gui)),
- GIMP_MESSAGE_ERROR, error->message);
+ gimp_message (GIMP_TOOL (tool)->tool_info->gimp,
+ G_OBJECT (gimp_tool_gui_get_dialog (tool->gui)),
+ GIMP_MESSAGE_ERROR,
+ _("Could not open '%s' for reading: %s"),
+ gimp_file_get_utf8_name (file),
+ error->message);
g_clear_error (&error);
+ return FALSE;
+ }
+ if (! tool_class->settings_import (tool, input, &error))
+ {
+ gimp_message (GIMP_TOOL (tool)->tool_info->gimp,
+ G_OBJECT (gimp_tool_gui_get_dialog (tool->gui)),
+ GIMP_MESSAGE_ERROR,
+ _("Error reading '%s': %s"),
+ gimp_file_get_utf8_name (file),
+ error->message);
+ g_clear_error (&error);
+ g_object_unref (input);
return FALSE;
}
+ g_object_unref (input);
+
gimp_image_map_tool_preview (tool);
g_object_set (GIMP_TOOL_GET_OPTIONS (tool),
@@ -194,20 +206,44 @@ gimp_image_map_tool_settings_export (GimpSettingsBox *box,
GimpImageMapTool *tool)
{
GimpImageMapToolClass *tool_class = GIMP_IMAGE_MAP_TOOL_GET_CLASS (tool);
+ GOutputStream *output;
GError *error = NULL;
g_return_val_if_fail (tool_class->settings_export != NULL, FALSE);
- if (! tool_class->settings_export (tool, file, &error))
+ if (GIMP_TOOL (tool)->tool_info->gimp->be_verbose)
+ g_print ("Writing '%s'\n", gimp_file_get_utf8_name (file));
+
+ output = G_OUTPUT_STREAM (g_file_replace (file,
+ NULL, FALSE, G_FILE_CREATE_NONE,
+ NULL, &error));
+ if (! output)
{
- gimp_message_literal (GIMP_TOOL (tool)->tool_info->gimp,
- G_OBJECT (gimp_tool_gui_get_dialog (tool->gui)),
- GIMP_MESSAGE_ERROR, error->message);
+ gimp_message (GIMP_TOOL (tool)->tool_info->gimp,
+ G_OBJECT (gimp_tool_gui_get_dialog (tool->gui)),
+ GIMP_MESSAGE_ERROR,
+ _("Could not open '%s' for writing: %s"),
+ gimp_file_get_utf8_name (file),
+ error->message);
g_clear_error (&error);
+ return FALSE;
+ }
+ if (! tool_class->settings_export (tool, output, &error))
+ {
+ gimp_message (GIMP_TOOL (tool)->tool_info->gimp,
+ G_OBJECT (gimp_tool_gui_get_dialog (tool->gui)),
+ GIMP_MESSAGE_ERROR,
+ _("Error writing '%s': %s"),
+ gimp_file_get_utf8_name (file),
+ error->message);
+ g_clear_error (&error);
+ g_object_unref (output);
return FALSE;
}
+ g_object_unref (output);
+
gimp_message (GIMP_TOOL (tool)->tool_info->gimp,
G_OBJECT (GIMP_TOOL (tool)->display),
GIMP_MESSAGE_INFO,
diff --git a/app/tools/gimpimagemaptool-settings.h b/app/tools/gimpimagemaptool-settings.h
index 0ed225f..1fddf86 100644
--- a/app/tools/gimpimagemaptool-settings.h
+++ b/app/tools/gimpimagemaptool-settings.h
@@ -30,10 +30,10 @@ GtkWidget * gimp_image_map_tool_real_get_settings_ui (GimpImageMapTool *tool,
const gchar *default_folder,
GtkWidget **settings_box);
gboolean gimp_image_map_tool_real_settings_import (GimpImageMapTool *tool,
- GFile *file,
+ GInputStream *input,
GError **error);
gboolean gimp_image_map_tool_real_settings_export (GimpImageMapTool *tool,
- GFile *file,
+ GOutputStream *output,
GError **error);
diff --git a/app/tools/gimpimagemaptool.h b/app/tools/gimpimagemaptool.h
index 6fda8a5..23722ad 100644
--- a/app/tools/gimpimagemaptool.h
+++ b/app/tools/gimpimagemaptool.h
@@ -85,10 +85,10 @@ struct _GimpImageMapToolClass
GtkWidget **settings_box);
gboolean (* settings_import) (GimpImageMapTool *image_map_tool,
- GFile *file,
+ GInputStream *input,
GError **error);
gboolean (* settings_export) (GimpImageMapTool *image_map_tool,
- GFile *file,
+ GOutputStream *output,
GError **error);
void (* color_picked) (GimpImageMapTool *image_map_tool,
diff --git a/app/tools/gimplevelstool.c b/app/tools/gimplevelstool.c
index b4ff5c1..5c22ad1 100644
--- a/app/tools/gimplevelstool.c
+++ b/app/tools/gimplevelstool.c
@@ -77,10 +77,10 @@ static GeglNode * gimp_levels_tool_get_operation (GimpImageMapTool *im_tool,
static void gimp_levels_tool_dialog (GimpImageMapTool *im_tool);
static void gimp_levels_tool_reset (GimpImageMapTool *im_tool);
static gboolean gimp_levels_tool_settings_import(GimpImageMapTool *im_tool,
- GFile *file,
+ GInputStream *input,
GError **error);
static gboolean gimp_levels_tool_settings_export(GimpImageMapTool *im_tool,
- GFile *file,
+ GOutputStream *output,
GError **error);
static void gimp_levels_tool_color_picked (GimpImageMapTool *im_tool,
gpointer identifier,
@@ -611,66 +611,43 @@ gimp_levels_tool_reset (GimpImageMapTool *image_map_tool)
static gboolean
gimp_levels_tool_settings_import (GimpImageMapTool *image_map_tool,
- GFile *file,
+ GInputStream *input,
GError **error)
{
GimpLevelsTool *tool = GIMP_LEVELS_TOOL (image_map_tool);
- GInputStream *input;
gchar header[64];
gsize bytes_read;
- input = G_INPUT_STREAM (g_file_read (file, NULL, error));
- if (! input)
- {
- g_prefix_error (error,
- _("Could not open '%s' for reading: "),
- gimp_file_get_utf8_name (file));
- return FALSE;
- }
-
if (! g_input_stream_read_all (input, header, sizeof (header),
&bytes_read, NULL, error) ||
bytes_read != sizeof (header))
{
- g_prefix_error (error,
- _("Could not read header from '%s': "),
- gimp_file_get_utf8_name (file));
- g_object_unref (input);
+ g_prefix_error (error, _("Could not read header: "));
return FALSE;
}
- if (g_str_has_prefix (header, "# GIMP Levels File\n"))
- {
- gboolean success;
-
- g_seekable_seek (G_SEEKABLE (input), 0, G_SEEK_SET, NULL, NULL);
-
- success = gimp_levels_config_load_cruft (tool->config, input, error);
-
- g_object_unref (input);
+ g_seekable_seek (G_SEEKABLE (input), 0, G_SEEK_SET, NULL, NULL);
- return success;
- }
-
- g_object_unref (input);
+ if (g_str_has_prefix (header, "# GIMP Levels File\n"))
+ return gimp_levels_config_load_cruft (tool->config, input, error);
return GIMP_IMAGE_MAP_TOOL_CLASS (parent_class)->settings_import (image_map_tool,
- file,
+ input,
error);
}
static gboolean
gimp_levels_tool_settings_export (GimpImageMapTool *image_map_tool,
- GFile *file,
+ GOutputStream *output,
GError **error)
{
GimpLevelsTool *tool = GIMP_LEVELS_TOOL (image_map_tool);
if (tool->export_old_format)
- return gimp_levels_config_save_cruft (tool->config, file, error);
+ return gimp_levels_config_save_cruft (tool->config, output, error);
return GIMP_IMAGE_MAP_TOOL_CLASS (parent_class)->settings_export (image_map_tool,
- file,
+ output,
error);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]