[gtranslator] save dialog: Code refactoring



commit df007bef83824370a8c2c42f6828936e02b9c1b3
Author: Daniel GarcĂ­a Moreno <dani danigm net>
Date:   Thu Apr 30 08:51:40 2020 +0200

    save dialog: Code refactoring

 src/gtr-actions-file.c | 113 +++++++++++++++++++++++--------------------------
 src/gtr-actions.h      |   1 +
 src/gtr-application.c  |  62 +++------------------------
 3 files changed, 60 insertions(+), 116 deletions(-)
---
diff --git a/src/gtr-actions-file.c b/src/gtr-actions-file.c
index f7d27c3c..dd05276c 100644
--- a/src/gtr-actions-file.c
+++ b/src/gtr-actions-file.c
@@ -181,6 +181,54 @@ gtr_file_chooser_analyse (gpointer dialog,
     }
 }
 
+gboolean
+gtr_want_to_save_current_dialog (GtrWindow * window)
+{
+  gint res = 0;
+  GtrTab *tab;
+  GtrPo *po;
+
+  g_autoptr (GtkWidget) dialog = NULL;
+  g_autoptr (GFile) location = NULL;
+  g_autofree gchar *filename = NULL;
+  g_autofree gchar *markup = NULL;
+
+  tab = gtr_window_get_active_tab (window);
+  po = gtr_tab_get_po (tab);
+  location = gtr_po_get_location (po);
+  filename = g_file_get_path (location);
+
+  dialog = gtk_message_dialog_new (GTK_WINDOW (window),
+                                   GTK_DIALOG_DESTROY_WITH_PARENT,
+                                   GTK_MESSAGE_WARNING,
+                                   GTK_BUTTONS_NONE, NULL);
+
+  markup = g_strdup_printf (
+    _("Do you want to save changes to this file: "
+      "<span weight=\"bold\" size=\"large\">%s</span>?"),
+    filename);
+
+  gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (dialog), markup);
+  gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
+    _("If you don't save, all your unsaved changes will be permanently lost."));
+
+  gtk_dialog_add_buttons (GTK_DIALOG (dialog),
+                          _("Save and open"), GTK_RESPONSE_YES,
+                          _("Cancel"), GTK_RESPONSE_CANCEL,
+                          _("Continue without saving"), GTK_RESPONSE_NO,
+                          NULL);
+
+  res = gtk_dialog_run (GTK_DIALOG (dialog));
+
+  if (res == GTK_RESPONSE_CANCEL)
+    return FALSE;
+
+  if (res == GTK_RESPONSE_YES)
+    gtr_save_current_file_dialog (NULL, window);
+
+  return TRUE;
+}
+
 /*
  * The "Open file" dialog.
  */
@@ -188,76 +236,20 @@ void
 gtr_open_file_dialog (GtkAction * action, GtrWindow * window)
 {
   GtkWidget *dialog = NULL;
-  GList *list;
+  g_autoptr (GList) list = NULL;
 
   list = get_modified_documents (window);
   if (list != NULL)
     {
-      GtkWidget *dialog;
-      gint res = 0;
-      GtrTab *tab;
-      GtrPo *po;
-      GFile *location;
-      gchar *filename;
-
-      tab = gtr_window_get_active_tab (window);
-      po = gtr_tab_get_po (tab);
-      location = gtr_po_get_location (po);
-      filename = g_file_get_path (location);
-
-      dialog = gtk_message_dialog_new (GTK_WINDOW (window),
-                                       GTK_DIALOG_DESTROY_WITH_PARENT,
-                                       GTK_MESSAGE_WARNING,
-                                       GTK_BUTTONS_NONE, NULL);
-
-      filename = g_strdup_printf("<span weight=\"bold\" size=\"large\">%s</span>",
-                                 _("Do you want to save changes to this file ?"));
-      gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (dialog), filename);
-      g_free(filename);
-
-      gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG (dialog),
-                                              _("If you don't save, all your unsaved changes will be 
permanently lost."));
-
-      gtk_dialog_add_buttons (GTK_DIALOG (dialog),
-                              _("Save and open"), GTK_RESPONSE_YES,
-                              _("Cancel"), GTK_RESPONSE_CANCEL,
-                              _("Continue without saving"), GTK_RESPONSE_NO,
-                              NULL);
-
-      res = gtk_dialog_run (GTK_DIALOG (dialog));
-      g_list_free (list);
-      gtk_widget_destroy (dialog);
-
-      if (res == GTK_RESPONSE_YES)
-        {
-          gtr_save_current_file_dialog (NULL, window);
-          gtr_open_file_dialog (NULL, window);
-          return;
-        }
-      else if (res == GTK_RESPONSE_CANCEL)
-        {
-            return;
-        }
+      if (!gtr_want_to_save_current_dialog (window))
+        return;
     }
 
-  if (dialog != NULL)
-    {
-      gtk_window_present (GTK_WINDOW (dialog));
-      return;
-    }
   dialog = gtr_file_chooser_new (GTK_WINDOW (window),
                                  FILESEL_OPEN,
                                  _("Open file for translation"),
                                  _gtr_application_get_last_dir (GTR_APP));
 
-  /*
-   * With the gettext parser/writer API, we can't currently read/write
-   * to remote files with gnome-vfs. Eventually, we should intercept
-   * remote requests and use gnome-vfs to retrieve a temporary file to
-   * work on, and transmit it back when saved.
-   */
-  //gtk_file_chooser_set_local_only(GTK_FILE_CHOOSER(dialog), TRUE);
-
   gtr_file_chooser_analyse ((gpointer) dialog, FILESEL_OPEN, window);
 }
 
@@ -424,8 +416,7 @@ gtr_save_current_file_dialog (GtkWidget * widget, GtrWindow * window)
       dialog = gtk_message_dialog_new (GTK_WINDOW (window),
                                        GTK_DIALOG_DESTROY_WITH_PARENT,
                                        GTK_MESSAGE_WARNING,
-                                       GTK_BUTTONS_OK,
-                                       "%s", error->message);
+                                       GTK_BUTTONS_OK, "%s", error->message);
       gtk_dialog_run (GTK_DIALOG (dialog));
       gtk_widget_destroy (dialog);
       g_clear_error (&error);
diff --git a/src/gtr-actions.h b/src/gtr-actions.h
index bd4de361..358b60f5 100644
--- a/src/gtr-actions.h
+++ b/src/gtr-actions.h
@@ -43,6 +43,7 @@ struct _LastSearchData
   gint wrap_around:1;
 };
 
+gboolean gtr_want_to_save_current_dialog (GtrWindow * window);
 
 void gtr_open_file_dialog (GtkAction * action, GtrWindow * window);
 
diff --git a/src/gtr-application.c b/src/gtr-application.c
index 704965fd..771b296e 100644
--- a/src/gtr-application.c
+++ b/src/gtr-application.c
@@ -185,12 +185,6 @@ gtr_application_init (GtrApplication *application)
   if (!g_file_test (profiles_file, G_FILE_TEST_EXISTS))
     priv->first_run = TRUE;
   g_free (profiles_file);
-
-  /* Custom css */
-  priv->provider = gtk_css_provider_new ();
-  gtk_css_provider_load_from_resource (priv->provider, "/org/gnome/translator/styles.css");
-
-  load_accels ();
 }
 
 static void
@@ -450,62 +444,14 @@ dl_activated (GSimpleAction *action,
   GtrApplicationPrivate *priv = gtr_application_get_instance_private (app);
 
   GtrTab *active_tab = gtr_window_get_active_tab (priv->active_window);
-  GtrPo *po = gtr_tab_get_po (active_tab);
   GtrPoState state = gtr_po_get_state (gtr_tab_get_po (active_tab));
-  GtkWidget *dialog = NULL;
 
   if (state == GTR_PO_STATE_MODIFIED)
     {
-      GtkWidget *dialog;
-      gint res = 0;
-      GFile *location;
-      gchar *filename;
-
-      po = gtr_tab_get_po (active_tab);
-      location = gtr_po_get_location (po);
-      filename = g_file_get_path (location);
-      g_object_unref (location);
-
-      dialog = gtk_message_dialog_new (GTK_WINDOW (priv->active_window),
-                                       GTK_DIALOG_DESTROY_WITH_PARENT,
-                                       GTK_MESSAGE_WARNING,
-                                       GTK_BUTTONS_NONE,NULL);
-
-      filename = g_strdup_printf("<span weight=\"bold\" size=\"large\">%s</span>",
-                                 _("Do you want to save changes to this file ?"));
-      gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (dialog), filename);
-      g_free(filename);
-
-      gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG (dialog),
-                                              _("If you don't save, all your unsaved changes will be 
permanently lost."));
-
-      gtk_dialog_add_buttons (GTK_DIALOG (dialog),
-                              _("Save and open"), GTK_RESPONSE_YES,
-                              _("Cancel"), GTK_RESPONSE_CANCEL,
-                              _("Continue without saving"), GTK_RESPONSE_NO,
-                              NULL);
-
-      res = gtk_dialog_run (GTK_DIALOG (dialog));
-
-      gtk_widget_destroy (dialog);
-
-      if (res == GTK_RESPONSE_YES)
-      {
-        gtr_save_current_file_dialog (NULL, priv->active_window);
-        gtr_window_show_dlteams (priv->active_window);
-        return;
-      }
-
-      else if (res == GTK_RESPONSE_CANCEL){
+      if (!gtr_want_to_save_current_dialog (priv->active_window))
         return;
-      }
     }
 
-  if (dialog != NULL)
-    {
-      gtk_window_present (GTK_WINDOW (dialog));
-      return;
-    }
   gtr_window_show_dlteams (priv->active_window);
 }
 
@@ -699,6 +645,12 @@ gtr_application_startup (GApplication *application)
   g_set_application_name (_("Translation Editor"));
   gtk_window_set_default_icon_name (PACKAGE_APPID);
 
+  /* Custom css */
+  priv->provider = gtk_css_provider_new ();
+  gtk_css_provider_load_from_resource (priv->provider, "/org/gnome/translator/styles.css");
+
+  load_accels ();
+
   /* We set the default icon dir */
   gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (),
                                      gtr_dirs_get_gtr_pixmaps_dir ());


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