[gtranslator] save dialog: Code refactoring
- From: Daniel Garcia Moreno <danigm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtranslator] save dialog: Code refactoring
- Date: Thu, 30 Apr 2020 07:03:41 +0000 (UTC)
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]