[gimp] app: Merge almost identical higher level file_save() wrappers



commit 3c1366a0c15b2d8bb7f3e038400c257af0ef87f4
Author: Martin Nordholts <martinn src gnome org>
Date:   Sat May 2 15:58:32 2009 +0200

    app: Merge almost identical higher level file_save() wrappers
    
    Merge file_savefile_write_with_uri_and_proc() and
    file_save_dialog_save_image() which contains the same logic. Call the
    result file_save_dialog_save_image() in lack of a better name, and
    keep it in file-save-dialog.[ch] for now in lack of a better place.
---
 app/actions/file-commands.c    |   80 +++-------------------------------------
 app/dialogs/file-save-dialog.c |   33 +++++++++-------
 app/dialogs/file-save-dialog.h |   12 +++++-
 3 files changed, 35 insertions(+), 90 deletions(-)

diff --git a/app/actions/file-commands.c b/app/actions/file-commands.c
index 6fd74ac..007ddf6 100644
--- a/app/actions/file-commands.c
+++ b/app/actions/file-commands.c
@@ -53,6 +53,7 @@
 #include "display/gimpdisplay-foreach.h"
 
 #include "dialogs/dialogs.h"
+#include "dialogs/file-save-dialog.h"
 
 #include "actions.h"
 #include "file-commands.h"
@@ -77,11 +78,6 @@ static void     file_save_dialog_show        (Gimp                *gimp,
                                               const gchar         *title,
                                               gboolean             save_a_copy,
                                               gboolean             close_after_saving);
-static gboolean file_write_with_uri_and_proc (GimpImage           *image,
-                                              GimpContext         *context,
-                                              GimpDisplay         *display,
-                                              const gchar         *uri,
-                                              GimpPlugInProcedure *proc);
 static void     file_save_dialog_destroyed   (GtkWidget           *dialog,
                                               GimpImage           *image);
 static void     file_new_template_callback   (GtkWidget           *widget,
@@ -246,11 +242,11 @@ file_save_cmd_callback (GtkAction *action,
 
           if (uri && save_proc)
             {
-              saved = file_write_with_uri_and_proc (image,
-                                                    action_data_get_context (data),
-                                                    display,
-                                                    uri,
-                                                    save_proc);
+              saved = file_save_dialog_save_image (GIMP_PROGRESS (display),
+                                                   gimp, image, uri,
+                                                   save_proc,
+                                                   GIMP_RUN_WITH_LAST_VALS,
+                                                   FALSE, TRUE);
               break;
             }
 
@@ -507,70 +503,6 @@ file_save_dialog_show (Gimp        *gimp,
     }
 }
 
-static gboolean
-file_write_with_uri_and_proc (GimpImage           *image,
-                              GimpContext         *context,
-                              GimpDisplay         *display,
-                              const gchar         *uri,
-                              GimpPlugInProcedure *proc)
-{
-  gboolean           saved = FALSE;
-  GimpPDBStatusType  status;
-  GError            *error = NULL;
-  GList             *list;
-
-  for (list = gimp_action_groups_from_name ("file");
-       list;
-       list = g_list_next (list))
-    {
-      gimp_action_group_set_action_sensitive (list->data,
-                                              "file-quit",
-                                              FALSE);
-    }
-
-  status = file_save (image, context,
-                      GIMP_PROGRESS (display),
-                      uri, proc,
-                      GIMP_RUN_WITH_LAST_VALS, FALSE, &error);
-
-  switch (status)
-    {
-    case GIMP_PDB_SUCCESS:
-      saved = TRUE;
-      break;
-
-    case GIMP_PDB_CANCEL:
-      gimp_message_literal (image->gimp,
-                            G_OBJECT (display), GIMP_MESSAGE_INFO,
-                            _("Saving canceled"));
-      break;
-
-    default:
-      {
-        gchar *filename = file_utils_uri_display_name (uri);
-
-        gimp_message (image->gimp, G_OBJECT (display),
-                      GIMP_MESSAGE_ERROR,
-                      _("Saving '%s' failed:\n\n%s"),
-                      filename, error->message);
-        g_free (filename);
-        g_clear_error (&error);
-      }
-      break;
-    }
-
-  for (list = gimp_action_groups_from_name ("file");
-       list;
-       list = g_list_next (list))
-    {
-      gimp_action_group_set_action_sensitive (list->data,
-                                              "file-quit",
-                                              TRUE);
-    }
-
-  return saved;
-}
-
 static void
 file_save_dialog_destroyed (GtkWidget *dialog,
                             GimpImage *image)
diff --git a/app/dialogs/file-save-dialog.c b/app/dialogs/file-save-dialog.c
index 6e479bc..3a97b19 100644
--- a/app/dialogs/file-save-dialog.c
+++ b/app/dialogs/file-save-dialog.c
@@ -68,11 +68,6 @@ static void      file_save_dialog_unknown_ext_msg (GimpFileDialog       *dialog,
                                                    Gimp                 *gimp);
 static gboolean  file_save_dialog_use_extension   (GtkWidget            *save_dialog,
                                                    const gchar          *uri);
-static gboolean  file_save_dialog_save_image      (GtkWidget            *save_dialog,
-                                                   GimpImage            *image,
-                                                   const gchar          *uri,
-                                                   GimpPlugInProcedure  *save_proc,
-                                                   gboolean              save_a_copy);
 
 
 /*  public functions  */
@@ -137,11 +132,14 @@ file_save_dialog_response (GtkWidget *save_dialog,
   if (file_save_dialog_check_uri (save_dialog, gimp,
                                   &uri, &basename, &save_proc))
     {
-      if (file_save_dialog_save_image (save_dialog,
+      if (file_save_dialog_save_image (GIMP_PROGRESS (save_dialog),
+                                       gimp,
                                        dialog->image,
                                        uri,
                                        save_proc,
-                                       dialog->save_a_copy))
+                                       GIMP_RUN_INTERACTIVE,
+                                       dialog->save_a_copy,
+                                       FALSE))
         {
           g_object_set_data_full (G_OBJECT (dialog->image->gimp),
                                   GIMP_FILE_SAVE_LAST_URI_KEY,
@@ -467,12 +465,15 @@ file_save_dialog_use_extension (GtkWidget   *save_dialog,
   return use_name;
 }
 
-static gboolean
-file_save_dialog_save_image (GtkWidget           *save_dialog,
+gboolean
+file_save_dialog_save_image (GimpProgress        *progress,
+                             Gimp                *gimp,
                              GimpImage           *image,
                              const gchar         *uri,
                              GimpPlugInProcedure *save_proc,
-                             gboolean             save_a_copy)
+                             GimpRunMode          run_mode,
+                             gboolean             save_a_copy,
+                             gboolean             verbose_cancel)
 {
   GimpPDBStatusType  status;
   GError            *error   = NULL;
@@ -486,10 +487,8 @@ file_save_dialog_save_image (GtkWidget           *save_dialog,
       gimp_action_group_set_action_sensitive (list->data, "file-quit", FALSE);
     }
 
-  status = file_save (image, gimp_get_user_context (image->gimp),
-                      GIMP_PROGRESS (save_dialog),
-                      uri, save_proc,
-                      GIMP_RUN_INTERACTIVE, save_a_copy, &error);
+  status = file_save (image, gimp_get_user_context (gimp), progress,
+                      uri, save_proc, run_mode, save_a_copy, &error);
 
   switch (status)
     {
@@ -498,13 +497,17 @@ file_save_dialog_save_image (GtkWidget           *save_dialog,
       break;
 
     case GIMP_PDB_CANCEL:
+      if (verbose_cancel)
+        gimp_message_literal (gimp,
+                              G_OBJECT (progress), GIMP_MESSAGE_INFO,
+                              _("Saving canceled"));
       break;
 
     default:
       {
         gchar *filename = file_utils_uri_display_name (uri);
 
-        gimp_message (image->gimp, G_OBJECT (save_dialog), GIMP_MESSAGE_ERROR,
+        gimp_message (gimp, G_OBJECT (progress), GIMP_MESSAGE_ERROR,
                       _("Saving '%s' failed:\n\n%s"), filename, error->message);
         g_clear_error (&error);
         g_free (filename);
diff --git a/app/dialogs/file-save-dialog.h b/app/dialogs/file-save-dialog.h
index ce48834..c4ac371 100644
--- a/app/dialogs/file-save-dialog.h
+++ b/app/dialogs/file-save-dialog.h
@@ -19,7 +19,17 @@
 #define __FILE_SAVE_DIALOG_H__
 
 
-GtkWidget * file_save_dialog_new (Gimp *gimp);
+GtkWidget * file_save_dialog_new        (Gimp *gimp);
+
+gboolean    file_save_dialog_save_image (GimpProgress        *progress_and_handler,
+                                         Gimp                *gimp,
+                                         GimpImage           *image,
+                                         const gchar         *uri,
+                                         GimpPlugInProcedure *write_proc,
+                                         GimpRunMode          run_mode,
+                                         gboolean             save_a_copy,
+                                         gboolean             verbose_cancel);
+
 
 
 #endif /* __FILE_SAVE_DIALOG_H__ */



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