[gimp] app: return a GFile from gimp_tool_info_build_options_filename()



commit a31cb024053250ea4645b91d80f38b0f0e14b239
Author: Michael Natterer <mitch gimp org>
Date:   Tue Jul 1 15:41:12 2014 +0200

    app: return a GFile from gimp_tool_info_build_options_filename()
    
    and rename it to gimp_tool_info_get_options_file().

 app/core/gimptoolinfo.c      |   25 +++++++--------
 app/core/gimptoolinfo.h      |    3 +-
 app/core/gimptooloptions.c   |   70 ++++++++++++++++++++++-------------------
 app/tools/gimpimagemaptool.c |   16 +++------
 4 files changed, 56 insertions(+), 58 deletions(-)
---
diff --git a/app/core/gimptoolinfo.c b/app/core/gimptoolinfo.c
index de67dec..ce48124 100644
--- a/app/core/gimptoolinfo.c
+++ b/app/core/gimptoolinfo.c
@@ -333,22 +333,18 @@ gimp_tool_info_get_standard (Gimp *gimp)
   return gimp->standard_tool_info;
 }
 
-gchar *
-gimp_tool_info_build_options_filename (GimpToolInfo *tool_info,
-                                       const gchar  *suffix)
+GFile *
+gimp_tool_info_get_options_file (GimpToolInfo *tool_info,
+                                 const gchar  *suffix)
 {
-  const gchar *name;
-  gchar       *filename;
-  gchar       *basename;
+  gchar *filename;
+  gchar *basename;
+  GFile *file;
 
   g_return_val_if_fail (GIMP_IS_TOOL_INFO (tool_info), NULL);
 
-  name = gimp_object_get_name (tool_info);
-
-  if (suffix)
-    basename = g_strconcat (name, suffix, NULL);
-  else
-    basename = g_strdup (name);
+  /* also works for a NULL suffix */
+  basename = g_strconcat (gimp_object_get_name (tool_info), suffix, NULL);
 
   filename = g_build_filename (gimp_directory (),
                                "tool-options",
@@ -356,5 +352,8 @@ gimp_tool_info_build_options_filename (GimpToolInfo *tool_info,
                                NULL);
   g_free (basename);
 
-  return filename;
+  file = g_file_new_for_path (filename);
+  g_free (filename);
+
+  return file;
 }
diff --git a/app/core/gimptoolinfo.h b/app/core/gimptoolinfo.h
index 6275677..b2fdc55 100644
--- a/app/core/gimptoolinfo.h
+++ b/app/core/gimptoolinfo.h
@@ -84,8 +84,7 @@ void           gimp_tool_info_set_standard (Gimp                *gimp,
                                             GimpToolInfo        *tool_info);
 GimpToolInfo * gimp_tool_info_get_standard (Gimp                *gimp);
 
-gchar *
-     gimp_tool_info_build_options_filename (GimpToolInfo        *tool_info,
+GFile    * gimp_tool_info_get_options_file (GimpToolInfo        *tool_info,
                                             const gchar         *suffix);
 
 
diff --git a/app/core/gimptooloptions.c b/app/core/gimptooloptions.c
index 94e6b9e..017b2f9 100644
--- a/app/core/gimptooloptions.c
+++ b/app/core/gimptooloptions.c
@@ -17,8 +17,6 @@
 
 #include "config.h"
 
-#include <errno.h>
-
 #ifdef HAVE_UNISTD_H
 #include <unistd.h>
 #endif
@@ -298,7 +296,7 @@ gboolean
 gimp_tool_options_serialize (GimpToolOptions  *tool_options,
                              GError          **error)
 {
-  gchar    *filename;
+  GFile    *file;
   gchar    *header;
   gchar    *footer;
   gboolean  retval;
@@ -306,27 +304,27 @@ gimp_tool_options_serialize (GimpToolOptions  *tool_options,
   g_return_val_if_fail (GIMP_IS_TOOL_OPTIONS (tool_options), FALSE);
   g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
 
-  filename = gimp_tool_info_build_options_filename (tool_options->tool_info,
-                                                    NULL);
+  file = gimp_tool_info_get_options_file (tool_options->tool_info, NULL);
 
   if (tool_options->tool_info->gimp->be_verbose)
-    g_print ("Writing '%s'\n", gimp_filename_to_utf8 (filename));
+    g_print ("Writing '%s'\n", gimp_file_get_utf8_name (file));
 
   header = g_strdup_printf ("GIMP %s options",
                             gimp_object_get_name (tool_options->tool_info));
   footer = g_strdup_printf ("end of %s options",
                             gimp_object_get_name (tool_options->tool_info));
 
-  retval = gimp_config_serialize_to_file (GIMP_CONFIG (tool_options),
-                                          filename,
-                                          header, footer,
-                                          NULL,
-                                          error);
+  retval = gimp_config_serialize_to_gfile (GIMP_CONFIG (tool_options),
+                                           file,
+                                           header, footer,
+                                           NULL,
+                                           error);
 
-  g_free (filename);
   g_free (header);
   g_free (footer);
 
+  g_object_unref (file);
+
   return retval;
 }
 
@@ -334,24 +332,23 @@ gboolean
 gimp_tool_options_deserialize (GimpToolOptions  *tool_options,
                                GError          **error)
 {
-  gchar    *filename;
+  GFile    *file;
   gboolean  retval;
 
   g_return_val_if_fail (GIMP_IS_TOOL_OPTIONS (tool_options), FALSE);
   g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
 
-  filename = gimp_tool_info_build_options_filename (tool_options->tool_info,
-                                                    NULL);
+  file = gimp_tool_info_get_options_file (tool_options->tool_info, NULL);
 
   if (tool_options->tool_info->gimp->be_verbose)
-    g_print ("Parsing '%s'\n", gimp_filename_to_utf8 (filename));
+    g_print ("Parsing '%s'\n", gimp_file_get_utf8_name (file));
 
-  retval = gimp_config_deserialize_file (GIMP_CONFIG (tool_options),
-                                         filename,
-                                         NULL,
-                                         error);
+  retval = gimp_config_deserialize_gfile (GIMP_CONFIG (tool_options),
+                                          file,
+                                          NULL,
+                                          error);
 
-  g_free (filename);
+  g_object_unref (file);
 
   return retval;
 }
@@ -360,26 +357,35 @@ gboolean
 gimp_tool_options_delete (GimpToolOptions  *tool_options,
                           GError          **error)
 {
-  gchar    *filename;
-  gboolean  retval = TRUE;
+  GFile    *file;
+  GError   *my_error = NULL;
+  gboolean  success  = TRUE;
 
   g_return_val_if_fail (GIMP_IS_TOOL_OPTIONS (tool_options), FALSE);
   g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
 
-  filename = gimp_tool_info_build_options_filename (tool_options->tool_info,
-                                                    NULL);
+  file = gimp_tool_info_get_options_file (tool_options->tool_info, NULL);
 
-  if (g_unlink (filename) != 0 && errno != ENOENT)
+  if (tool_options->tool_info->gimp->be_verbose)
+    g_print ("Deleting '%s'\n", gimp_file_get_utf8_name (file));
+
+  if (! g_file_delete (file, NULL, &my_error))
     {
-      retval = FALSE;
-      g_set_error (error, GIMP_ERROR, GIMP_FAILED,
-                  _("Deleting \"%s\" failed: %s"),
-                   gimp_filename_to_utf8 (filename), g_strerror (errno));
+      if (my_error->code != G_IO_ERROR_NOT_FOUND)
+        {
+          success = FALSE;
+
+          g_set_error (error, GIMP_ERROR, GIMP_FAILED,
+                       _("Deleting \"%s\" failed: %s"),
+                       gimp_file_get_utf8_name (file), my_error->message);
+        }
+
+      g_clear_error (&my_error);
     }
 
-  g_free (filename);
+  g_object_unref (file);
 
-  return retval;
+  return success;
 }
 
 void
diff --git a/app/tools/gimpimagemaptool.c b/app/tools/gimpimagemaptool.c
index 26e079d..f9bd425 100644
--- a/app/tools/gimpimagemaptool.c
+++ b/app/tools/gimpimagemaptool.c
@@ -372,17 +372,13 @@ gimp_image_map_tool_initialize (GimpTool     *tool,
       if (image_map_tool->config && klass->settings_name)
         {
           GtkWidget *settings_ui;
-          gchar     *settings_filename;
           gchar     *default_folder;
           GFile     *settings_file;
 
-          settings_filename =
-            gimp_tool_info_build_options_filename (tool_info, ".settings");
-
-          default_folder =
-            g_build_filename (gimp_directory (), klass->settings_name, NULL);
-
-          settings_file = g_file_new_for_path (settings_filename);
+          settings_file = gimp_tool_info_get_options_file (tool_info,
+                                                           ".settings");
+          default_folder = g_build_filename (gimp_directory (),
+                                             klass->settings_name, NULL);
 
           settings_ui = klass->get_settings_ui (image_map_tool,
                                                 klass->recent_settings,
@@ -393,10 +389,8 @@ gimp_image_map_tool_initialize (GimpTool     *tool,
                                                 default_folder,
                                                 &image_map_tool->settings_box);
 
-          g_object_unref (settings_file);
-
-          g_free (settings_filename);
           g_free (default_folder);
+          g_object_unref (settings_file);
 
           gtk_box_pack_start (GTK_BOX (vbox), settings_ui, FALSE, FALSE, 0);
           gtk_widget_show (settings_ui);


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