aboutsummaryrefslogtreecommitdiffstats
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
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.
-rw-r--r--ChangeLog12
-rw-r--r--lib/ephy-string.c55
-rw-r--r--lib/ephy-string.h5
-rw-r--r--lib/widgets/eggtreemultidnd.c10
-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
7 files changed, 215 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index e4504c3e9..11511c7f3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+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.
+
2003-01-01 Marco Pesenti Gritti <marco@it.gnome.org>
* embed/Makefile.am:
diff --git a/lib/ephy-string.c b/lib/ephy-string.c
index 7ca28cf1f..391b275f8 100644
--- a/lib/ephy-string.c
+++ b/lib/ephy-string.c
@@ -444,3 +444,58 @@ ephy_strsplit_multiple_delimiters_with_quotes (const gchar *string,
return str_array;
}
+
+char *
+ephy_str_replace_substring (const char *string,
+ const char *substring,
+ const char *replacement)
+{
+ int substring_length, replacement_length, result_length, remaining_length;
+ const char *p, *substring_position;
+ char *result, *result_position;
+
+ g_return_val_if_fail (substring != NULL, g_strdup (string));
+ g_return_val_if_fail (substring[0] != '\0', g_strdup (string));
+
+ if (string == NULL)
+ {
+ return NULL;
+ }
+
+ substring_length = strlen (substring);
+ replacement_length = replacement == NULL ? 0 : strlen (replacement);
+
+ result_length = strlen (string);
+ for (p = string; ; p = substring_position + substring_length)
+ {
+ substring_position = strstr (p, substring);
+ if (substring_position == NULL)
+ {
+ break;
+ }
+ result_length += replacement_length - substring_length;
+ }
+
+ result = g_malloc (result_length + 1);
+
+ result_position = result;
+ for (p = string; ; p = substring_position + substring_length)
+ {
+ substring_position = strstr (p, substring);
+ if (substring_position == NULL)
+ {
+ remaining_length = strlen (p);
+ memcpy (result_position, p, remaining_length);
+ result_position += remaining_length;
+ break;
+ }
+ memcpy (result_position, p, substring_position - p);
+ result_position += substring_position - p;
+ memcpy (result_position, replacement, replacement_length);
+ result_position += replacement_length;
+ }
+ g_assert (result_position - result == result_length);
+ result_position[0] = '\0';
+
+ return result;
+}
diff --git a/lib/ephy-string.h b/lib/ephy-string.h
index cc60bd638..3c57d08de 100644
--- a/lib/ephy-string.h
+++ b/lib/ephy-string.h
@@ -57,6 +57,11 @@ char **ephy_strsplit_multiple_delimiters_with_quotes (const gchar *string
gint max_tokens,
const gchar *quotes);
+char *ephy_str_replace_substring (const char *string,
+ const char *substring,
+ const char *replacement);
+
+
G_END_DECLS
diff --git a/lib/widgets/eggtreemultidnd.c b/lib/widgets/eggtreemultidnd.c
index 8be54f442..5215a7bfc 100644
--- a/lib/widgets/eggtreemultidnd.c
+++ b/lib/widgets/eggtreemultidnd.c
@@ -22,6 +22,7 @@
#include <gtk/gtksignal.h>
#include <gtk/gtkwidget.h>
#include <gtk/gtkmain.h>
+#include <gtk/gtkstock.h>
#include "eggtreemultidnd.h"
#define EGG_TREE_MULTI_DND_STRING "EggTreeMultiDndString"
@@ -325,6 +326,15 @@ egg_tree_multi_drag_motion_event (GtkWidget *widget,
priv_data->pressed_button,
(GdkEvent*)event);
set_context_data (context, path_list);
+
+ if (g_list_length (path_list) > 1)
+ {
+ gtk_drag_set_icon_stock (context, GTK_STOCK_DND_MULTIPLE, -2, -2);
+ }
+ else
+ {
+ gtk_drag_set_icon_stock (context, GTK_STOCK_DND, -2, -2);
+ }
}
else
{
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