diff options
author | Iulian Radu <iulian.radu67@gmail.com> | 2016-11-28 17:12:25 +0200 |
---|---|---|
committer | Iulian Radu <iulian.radu67@gmail.com> | 2016-11-28 17:26:27 +0200 |
commit | c4c70dba131a9fefb5ea18ad53a32c67d3ee4f8b (patch) | |
tree | a49787e8d368118e0c19640698b2edc7bd4c63f4 /src/window-commands.c | |
parent | bab8f892698f0290af3d726e9a8ba858aff0a385 (diff) | |
download | epiphany-c4c70dba131a9fefb5ea18ad53a32c67d3ee4f8b.tar.gz |
bookmarks: Add option to export bookmarks as .gvdb filewip/bookmarks-import-export
Diffstat (limited to 'src/window-commands.c')
-rw-r--r-- | src/window-commands.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/window-commands.c b/src/window-commands.c index 4c33a9528..d77344060 100644 --- a/src/window-commands.c +++ b/src/window-commands.c @@ -27,6 +27,7 @@ #include "ephy-add-bookmark-popover.h" #include "ephy-bookmarks-manager.h" +#include "ephy-bookmarks-export.h" #include "ephy-bookmarks-import.h" #include "ephy-debug.h" #include "ephy-embed-container.h" @@ -242,7 +243,57 @@ window_cmd_export_bookmarks (GSimpleAction *action, GVariant *parameter, gpointer user_data) { + EphyBookmarksManager *manager = ephy_shell_get_bookmarks_manager (ephy_shell_get_default ()); + GtkWidget *dialog; + GtkWidget *export_info_dialog; + GtkWidget *suggested; + int chooser_response; + gboolean exported; + GtkFileFilter *filter; + + filter = gtk_file_filter_new (); + gtk_file_filter_add_pattern (filter, "*.gvdb"); + + dialog = g_object_new (GTK_TYPE_FILE_CHOOSER_DIALOG, + "action", GTK_FILE_CHOOSER_ACTION_SAVE, + "filter", filter, + "modal", TRUE, + "show-hidden", TRUE, + "transient-for", GTK_WINDOW (user_data), + "title", _("Choose File"), + NULL); + gtk_dialog_add_buttons (GTK_DIALOG (dialog), + _("Cancel"), GTK_RESPONSE_CANCEL, + _("Save"), GTK_RESPONSE_OK, + NULL); + gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK); + // Translators: Only translate the part before ".gvdb" (e.g. "bookmarks") + gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), _("bookmarks.gvdb")); + suggested = gtk_dialog_get_widget_for_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK); + gtk_style_context_add_class (gtk_widget_get_style_context (suggested), + GTK_STYLE_CLASS_SUGGESTED_ACTION); + + chooser_response = gtk_dialog_run (GTK_DIALOG (dialog)); + if (chooser_response == GTK_RESPONSE_OK) { + char *filename; + + gtk_widget_hide (dialog); + + filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); + exported = ephy_bookmarks_export (manager, filename); + g_free (filename); + + export_info_dialog = gtk_message_dialog_new (GTK_WINDOW (dialog), + GTK_DIALOG_MODAL, + exported ? GTK_MESSAGE_INFO : GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + exported ? "Bookmarks successfully exported!" : + "There was an error exporting bookmarks!"); + gtk_dialog_run (GTK_DIALOG (export_info_dialog)); + gtk_widget_destroy (export_info_dialog); + } + gtk_widget_destroy (dialog); } void |