diff options
author | Iulian Radu <iulian.radu67@gmail.com> | 2016-11-28 14:07:32 +0200 |
---|---|---|
committer | Iulian Radu <iulian.radu67@gmail.com> | 2016-11-28 17:26:27 +0200 |
commit | bab8f892698f0290af3d726e9a8ba858aff0a385 (patch) | |
tree | 1127074e2eb02272a1905fb4681b3744ab1780e1 /src/window-commands.c | |
parent | a015616f1f20d8a11db3034f95d0e1847a7f8f9b (diff) | |
download | epiphany-bab8f892698f0290af3d726e9a8ba858aff0a385.tar.gz |
bookmarks: Add option to import bookmarks from .gvdb file
Diffstat (limited to 'src/window-commands.c')
-rw-r--r-- | src/window-commands.c | 94 |
1 files changed, 87 insertions, 7 deletions
diff --git a/src/window-commands.c b/src/window-commands.c index 28aca786d..4c33a9528 100644 --- a/src/window-commands.c +++ b/src/window-commands.c @@ -26,6 +26,8 @@ #include "window-commands.h" #include "ephy-add-bookmark-popover.h" +#include "ephy-bookmarks-manager.h" +#include "ephy-bookmarks-import.h" #include "ephy-debug.h" #include "ephy-embed-container.h" #include "ephy-embed-prefs.h" @@ -92,13 +94,13 @@ window_cmd_new_incognito_window (GSimpleAction *action, ephy_open_incognito_window (NULL); } +const gchar *option_names[1] = { + N_("Import from .gvdb file") + }; + static GtkTreeModel * create_tree_model (void) { - const gchar *option_names[1] = { - N_("Import from file") - }; - enum { TEXT_COL }; @@ -118,6 +120,74 @@ create_tree_model (void) return GTK_TREE_MODEL (list_store); } +static void +dialog_bookmarks_import_cb (GtkDialog *dialog, + int response, + GtkComboBox *combo_box) +{ + EphyBookmarksManager *manager = ephy_shell_get_bookmarks_manager (ephy_shell_get_default ()); + GtkWidget *file_chooser_dialog; + GtkWidget *import_info_dialog; + GtkWidget *suggested; + int active; + int chooser_response; + gboolean imported; + + if (response == GTK_RESPONSE_OK) { + active = gtk_combo_box_get_active (combo_box); + if (active == 0) { + GtkFileFilter *filter; + + filter = gtk_file_filter_new (); + gtk_file_filter_add_pattern (filter, "*.gvdb"); + + file_chooser_dialog = g_object_new (GTK_TYPE_FILE_CHOOSER_DIALOG, + "action", GTK_FILE_CHOOSER_ACTION_OPEN, + "filter", filter, + "modal", TRUE, + "show-hidden", TRUE, + "transient-for", GTK_WINDOW (dialog), + "title", _("Choose File"), + NULL); + gtk_dialog_add_buttons (GTK_DIALOG (file_chooser_dialog), + _("Cancel"), GTK_RESPONSE_CANCEL, + _("Import"), GTK_RESPONSE_OK, + NULL); + gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK); + + suggested = gtk_dialog_get_widget_for_response (GTK_DIALOG (file_chooser_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 (file_chooser_dialog)); + if (chooser_response == GTK_RESPONSE_OK) { + char *filename; + + gtk_widget_hide (file_chooser_dialog); + + filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (file_chooser_dialog)); + imported = ephy_bookmarks_import (manager, filename); + g_free (filename); + + import_info_dialog = gtk_message_dialog_new (GTK_WINDOW (dialog), + GTK_DIALOG_MODAL, + imported ? GTK_MESSAGE_INFO : GTK_MESSAGE_WARNING, + GTK_BUTTONS_OK, + imported ? "Bookmarks successfully imported!" : + "There was an error importing bookmarks!"); + gtk_dialog_run (GTK_DIALOG (import_info_dialog)); + gtk_widget_destroy (import_info_dialog); + } + gtk_widget_destroy (file_chooser_dialog); + + if (imported) + gtk_widget_destroy (GTK_WIDGET (dialog)); + } + } else if (response == GTK_RESPONSE_CANCEL) { + gtk_widget_destroy (GTK_WIDGET (dialog)); + } +} + void window_cmd_import_bookmarks (GSimpleAction *action, GVariant *parameter, @@ -127,21 +197,25 @@ window_cmd_import_bookmarks (GSimpleAction *action, GtkWidget *dialog; GtkWidget *content_area; GtkWidget *combo_box; + GtkWidget *suggested; GtkTreeModel *tree_model; GtkCellRenderer *cell_renderer; - /* Show dialog with icon, title. */ dialog = gtk_dialog_new_with_buttons (_("Import bookmarks"), GTK_WINDOW (window), GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_USE_HEADER_BAR, _("_Cancel"), GTK_RESPONSE_CANCEL, - _("_Import"), + _("_Choose File"), GTK_RESPONSE_OK, NULL); + 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); + content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); - gtk_container_set_border_width (GTK_CONTAINER (content_area), 5); tree_model = create_tree_model (); combo_box = gtk_combo_box_new_with_model (GTK_TREE_MODEL (tree_model)); @@ -154,7 +228,13 @@ window_cmd_import_bookmarks (GSimpleAction *action, "text", 0, NULL); gtk_container_add (GTK_CONTAINER (content_area), combo_box); + gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK); + g_signal_connect (dialog, "response", + G_CALLBACK (dialog_bookmarks_import_cb), + GTK_COMBO_BOX (combo_box)); + gtk_widget_show_all (dialog); + gtk_container_set_border_width (GTK_CONTAINER (content_area), 25); } void |