summaryrefslogtreecommitdiff
path: root/src/window-commands.c
diff options
context:
space:
mode:
authorIulian Radu <iulian.radu67@gmail.com>2016-11-28 17:12:25 +0200
committerIulian Radu <iulian.radu67@gmail.com>2016-11-28 17:26:27 +0200
commitc4c70dba131a9fefb5ea18ad53a32c67d3ee4f8b (patch)
treea49787e8d368118e0c19640698b2edc7bd4c63f4 /src/window-commands.c
parentbab8f892698f0290af3d726e9a8ba858aff0a385 (diff)
downloadepiphany-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.c51
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