aboutsummaryrefslogtreecommitdiffstats
path: root/src/bookmarks
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@it.gnome.org>2003-01-03 04:24:53 +0800
committerMarco Pesenti Gritti <mpeseng@src.gnome.org>2003-01-03 04:24:53 +0800
commit71219970c53e84d98edc9ac59ef22c8b07fdffa8 (patch)
treeba834d7cb70b834e38a8de16c0a05c3a0b008b0f /src/bookmarks
parent2dd166055fa8702ad52df80d2927f8560b4f73f6 (diff)
downloadgsoc2013-epiphany-71219970c53e84d98edc9ac59ef22c8b07fdffa8.tar
gsoc2013-epiphany-71219970c53e84d98edc9ac59ef22c8b07fdffa8.tar.gz
gsoc2013-epiphany-71219970c53e84d98edc9ac59ef22c8b07fdffa8.tar.bz2
gsoc2013-epiphany-71219970c53e84d98edc9ac59ef22c8b07fdffa8.tar.lz
gsoc2013-epiphany-71219970c53e84d98edc9ac59ef22c8b07fdffa8.tar.xz
gsoc2013-epiphany-71219970c53e84d98edc9ac59ef22c8b07fdffa8.tar.zst
gsoc2013-epiphany-71219970c53e84d98edc9ac59ef22c8b07fdffa8.zip
Use gtk icons for dnd. Basic implementation of bookmarks importing. Still
2003-01-02 Marco Pesenti Gritti <marco@it.gnome.org> * lib/ephy-string.c: (ephy_str_replace_substring): * lib/ephy-string.h: * lib/widgets/eggtreemultidnd.c: (egg_tree_multi_drag_motion_event): * src/bookmarks/Makefile.am: Use gtk icons for dnd. Basic implementation of bookmarks importing. Still not used but functional.
Diffstat (limited to 'src/bookmarks')
-rw-r--r--src/bookmarks/Makefile.am14
-rw-r--r--src/bookmarks/ephy-bookmarks-import.c93
-rw-r--r--src/bookmarks/ephy-bookmarks-import.h31
3 files changed, 133 insertions, 5 deletions
diff --git a/src/bookmarks/Makefile.am b/src/bookmarks/Makefile.am
index 4dd24c1bd..098462cfa 100644
--- a/src/bookmarks/Makefile.am
+++ b/src/bookmarks/Makefile.am
@@ -19,13 +19,17 @@ noinst_LTLIBRARIES = libephybookmarks.la
libephybookmarks_la_SOURCES = \
ephy-bookmarks.c \
ephy-bookmarks.h \
- ephy-tree-model-node.c \
- ephy-tree-model-node.h \
- ephy-node-view.c \
- ephy-node-view.h \
ephy-bookmarks-editor.c \
ephy-bookmarks-editor.h \
+ ephy-bookmarks-import.c \
+ ephy-bookmarks-import.h \
ephy-keywords-entry.c \
ephy-keywords-entry.h \
ephy-new-bookmark.c \
- ephy-new-bookmark.h
+ ephy-new-bookmark.h \
+ ephy-node-view.c \
+ ephy-node-view.h \
+ ephy-tree-model-node.c \
+ ephy-tree-model-node.h
+
+
diff --git a/src/bookmarks/ephy-bookmarks-import.c b/src/bookmarks/ephy-bookmarks-import.c
new file mode 100644
index 000000000..19eaecc0b
--- /dev/null
+++ b/src/bookmarks/ephy-bookmarks-import.c
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2003 Marco Pesenti Gritti
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <glib.h>
+#include <libxml/HTMLtree.h>
+#include <string.h>
+
+#include "ephy-bookmarks-import.h"
+#include "ephy-string.h"
+
+static char *
+build_keyword (const char *folder)
+{
+ return ephy_str_replace_substring (folder, " ", "_");
+}
+
+static void
+mozilla_parse_bookmarks (EphyBookmarks *bookmarks,
+ htmlNodePtr node,
+ char **keyword)
+{
+ htmlNodePtr child = node;
+
+ while (child != NULL)
+ {
+ if (xmlStrEqual (child->name, "h3"))
+ {
+ xmlChar *tmp;
+
+ tmp = xmlNodeGetContent (child);
+ g_free (*keyword);
+ *keyword = build_keyword (tmp);
+ xmlFree (tmp);
+ }
+ else if (xmlStrEqual (child->name, "a"))
+ {
+ xmlChar *title, *url;
+
+ title = xmlNodeGetContent (child);
+ url = xmlGetProp (child, "href");
+ ephy_bookmarks_add (bookmarks,
+ title,
+ url,
+ NULL,
+ *keyword);
+ xmlFree (title);
+ xmlFree (url);
+ }
+
+ mozilla_parse_bookmarks (bookmarks,
+ child->children,
+ keyword);
+ child = child->next;
+ }
+}
+
+gboolean
+ephy_bookmarks_import_mozilla (EphyBookmarks *bookmarks,
+ const char *filename)
+{
+ htmlDocPtr doc;
+ htmlNodePtr child;
+ char *keyword = NULL;
+
+ if (g_file_test (filename, G_FILE_TEST_EXISTS) == FALSE)
+ return FALSE;
+
+ doc = htmlParseFile (filename, "UTF-8");
+ g_assert (doc != NULL);
+
+ child = doc->children;
+ mozilla_parse_bookmarks (bookmarks, child, &keyword);
+
+ g_free (keyword);
+ xmlFreeDoc (doc);
+
+ return TRUE;
+}
diff --git a/src/bookmarks/ephy-bookmarks-import.h b/src/bookmarks/ephy-bookmarks-import.h
new file mode 100644
index 000000000..3280af4c1
--- /dev/null
+++ b/src/bookmarks/ephy-bookmarks-import.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2003 Marco Pesenti Gritti
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef EPHY_BOOKMARKS_IMPORT_H
+#define EPHY_BOOKMARKS_IMPORT_H
+
+#include "ephy-bookmarks.h"
+
+G_BEGIN_DECLS
+
+gboolean ephy_bookmarks_import_mozilla (EphyBookmarks *bookmarks,
+ const char *filename);
+
+G_END_DECLS
+
+#endif