summaryrefslogtreecommitdiff
path: root/src/window-commands.c
diff options
context:
space:
mode:
authorIulian Radu <iulian.radu67@gmail.com>2016-11-28 14:07:32 +0200
committerIulian Radu <iulian.radu67@gmail.com>2016-11-28 17:26:27 +0200
commitbab8f892698f0290af3d726e9a8ba858aff0a385 (patch)
tree1127074e2eb02272a1905fb4681b3744ab1780e1 /src/window-commands.c
parenta015616f1f20d8a11db3034f95d0e1847a7f8f9b (diff)
downloadepiphany-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.c94
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