diff options
author | Marco Pesenti Gritti <marco@it.gnome.org> | 2003-01-03 04:24:53 +0800 |
---|---|---|
committer | Marco Pesenti Gritti <mpeseng@src.gnome.org> | 2003-01-03 04:24:53 +0800 |
commit | 71219970c53e84d98edc9ac59ef22c8b07fdffa8 (patch) | |
tree | ba834d7cb70b834e38a8de16c0a05c3a0b008b0f /src | |
parent | 2dd166055fa8702ad52df80d2927f8560b4f73f6 (diff) | |
download | gsoc2013-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')
-rw-r--r-- | src/bookmarks/Makefile.am | 14 | ||||
-rw-r--r-- | src/bookmarks/ephy-bookmarks-import.c | 93 | ||||
-rw-r--r-- | src/bookmarks/ephy-bookmarks-import.h | 31 |
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 |