aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@it.gnome.org>2003-04-09 03:44:22 +0800
committerMarco Pesenti Gritti <mpeseng@src.gnome.org>2003-04-09 03:44:22 +0800
commitbf5ae80d6a2281da9a661cc59fa0de7b0b4cc13d (patch)
tree5183e93fad2ca5634034d844c858c40439c9cd69
parent20dd70b526a557dccd623f9a1c0b05720317e9f7 (diff)
downloadgsoc2013-epiphany-bf5ae80d6a2281da9a661cc59fa0de7b0b4cc13d.tar.gz
gsoc2013-epiphany-bf5ae80d6a2281da9a661cc59fa0de7b0b4cc13d.tar.zst
gsoc2013-epiphany-bf5ae80d6a2281da9a661cc59fa0de7b0b4cc13d.zip
Update.
2003-04-08 Marco Pesenti Gritti <marco@it.gnome.org> * lib/egg/egg-toolbars-group.c: * lib/egg/egg-toolbars-group.h: Update. * src/bookmarks/ephy-bookmarks.c: (ephy_bookmarks_class_init), (bookmarks_removed_cb), (topics_removed_cb), (ephy_bookmarks_init): * src/bookmarks/ephy-bookmarks.h: * src/bookmarks/ephy-new-bookmark.c: (ephy_new_bookmark_response_cb): * src/popup-commands.c: (popup_cmd_bookmark_link): * src/toolbar.c: (toolbar_get_action_name), (toolbar_get_action), (topic_remove_cb), (bookmark_remove_cb), (toolbar_init): * src/window-commands.c: (window_cmd_file_bookmark_page): Update toolbars when bookmarks and topics are removed. Use dialog_run for new_bookmark dialog. (Dave I hope this doesnt break something, but it's necessary to url dnd to toolbars to work correctly)
-rw-r--r--ChangeLog22
-rwxr-xr-xlib/egg/egg-toolbars-group.c25
-rwxr-xr-xlib/egg/egg-toolbars-group.h4
-rw-r--r--src/bookmarks/ephy-bookmarks.c53
-rw-r--r--src/bookmarks/ephy-bookmarks.h5
-rw-r--r--src/bookmarks/ephy-new-bookmark.c2
-rw-r--r--src/popup-commands.c3
-rwxr-xr-xsrc/toolbar.c61
-rw-r--r--src/window-commands.c3
9 files changed, 168 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 34ec51925..284877ede 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,25 @@
+2003-04-08 Marco Pesenti Gritti <marco@it.gnome.org>
+
+ * lib/egg/egg-toolbars-group.c:
+ * lib/egg/egg-toolbars-group.h:
+
+ Update.
+
+ * src/bookmarks/ephy-bookmarks.c: (ephy_bookmarks_class_init),
+ (bookmarks_removed_cb), (topics_removed_cb), (ephy_bookmarks_init):
+ * src/bookmarks/ephy-bookmarks.h:
+ * src/bookmarks/ephy-new-bookmark.c:
+ (ephy_new_bookmark_response_cb):
+ * src/popup-commands.c: (popup_cmd_bookmark_link):
+ * src/toolbar.c: (toolbar_get_action_name), (toolbar_get_action),
+ (topic_remove_cb), (bookmark_remove_cb), (toolbar_init):
+ * src/window-commands.c: (window_cmd_file_bookmark_page):
+
+ Update toolbars when bookmarks and topics are removed.
+ Use dialog_run for new_bookmark dialog.
+ (Dave I hope this doesnt break something, but it's necessary
+ to url dnd to toolbars to work correctly)
+
2003-04-07 Marco Pesenti Gritti <marco@it.gnome.org>
* lib/widgets/Makefile.am:
diff --git a/lib/egg/egg-toolbars-group.c b/lib/egg/egg-toolbars-group.c
index c99f0cd06..975456b8e 100755
--- a/lib/egg/egg-toolbars-group.c
+++ b/lib/egg/egg-toolbars-group.c
@@ -465,6 +465,31 @@ egg_toolbars_group_new (void)
return t;
}
+static void
+remove_action (EggToolbarsItem *item,
+ gpointer *data)
+{
+ char *action = data[0];
+ EggToolbarsGroup *group = EGG_TOOLBARS_GROUP (data[1]);
+
+ if (strcmp (item->action, action) == 0)
+ {
+ egg_toolbars_group_remove_item (group, item);
+ }
+}
+
+void
+egg_toolbars_group_remove_action (EggToolbarsGroup *group,
+ const char *action)
+{
+ gpointer data[2];
+ data[0] = (char *)action;
+ data[1] = group;
+ egg_toolbars_group_foreach_item
+ (group, (EggToolbarsGroupForeachItemFunc) remove_action, data);
+ g_signal_emit (G_OBJECT (group), egg_toolbars_group_signals[CHANGED], 0);
+}
+
void
egg_toolbars_group_remove_toolbar (EggToolbarsGroup *t,
EggToolbarsToolbar *toolbar)
diff --git a/lib/egg/egg-toolbars-group.h b/lib/egg/egg-toolbars-group.h
index 7e278dcf3..ec4163281 100755
--- a/lib/egg/egg-toolbars-group.h
+++ b/lib/egg/egg-toolbars-group.h
@@ -73,6 +73,10 @@ EggToolbarsGroup *egg_toolbars_group_new (void);
void egg_toolbars_group_set_source (EggToolbarsGroup *group,
const char *defaults,
const char *user);
+void egg_toolbars_group_remove_action (EggToolbarsGroup *group,
+ const char *action);
+
+/* These should be used only by editable toolbar */
EggToolbarsToolbar *egg_toolbars_group_add_toolbar (EggToolbarsGroup *t);
void egg_toolbars_group_add_item (EggToolbarsGroup *t,
EggToolbarsToolbar *parent,
diff --git a/src/bookmarks/ephy-bookmarks.c b/src/bookmarks/ephy-bookmarks.c
index cd159994d..5db21ad14 100644
--- a/src/bookmarks/ephy-bookmarks.c
+++ b/src/bookmarks/ephy-bookmarks.c
@@ -49,8 +49,17 @@ ephy_bookmarks_finalize (GObject *object);
static void
ephy_bookmarks_autocompletion_source_init (EphyAutocompletionSourceIface *iface);
+enum
+{
+ BOOKMARK_REMOVE,
+ TOPIC_REMOVE,
+ LAST_SIGNAL
+};
+
static GObjectClass *parent_class = NULL;
+static guint ephy_bookmarks_signals[LAST_SIGNAL] = { 0 };
+
GType
ephy_bookmarks_get_type (void)
{
@@ -160,6 +169,27 @@ ephy_bookmarks_class_init (EphyBookmarksClass *klass)
parent_class = g_type_class_peek_parent (klass);
object_class->finalize = ephy_bookmarks_finalize;
+
+ ephy_bookmarks_signals[BOOKMARK_REMOVE] =
+ g_signal_new ("bookmark_remove",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (EphyBookmarksClass, bookmark_remove),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__INT,
+ G_TYPE_NONE,
+ 1,
+ G_TYPE_INT);
+ ephy_bookmarks_signals[TOPIC_REMOVE] =
+ g_signal_new ("topic_remove",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (EphyBookmarksClass, topic_remove),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__INT,
+ G_TYPE_NONE,
+ 1,
+ G_TYPE_INT);
}
static void
@@ -374,10 +404,28 @@ bookmarks_removed_cb (EphyNode *node,
EphyNode *child,
EphyBookmarks *eb)
{
+ long id;
+
+ id = ephy_node_get_id (child);
+ g_signal_emit (eb, ephy_bookmarks_signals[BOOKMARK_REMOVE],
+ 0, id);
+
ephy_bookmarks_emit_data_changed (eb);
}
static void
+topics_removed_cb (EphyNode *node,
+ EphyNode *child,
+ EphyBookmarks *eb)
+{
+ long id;
+
+ id = ephy_node_get_id (child);
+ g_signal_emit (eb, ephy_bookmarks_signals[TOPIC_REMOVE],
+ 0, id);
+}
+
+static void
ephy_bookmarks_init (EphyBookmarks *eb)
{
GValue value = { 0, };
@@ -417,6 +465,11 @@ ephy_bookmarks_init (EphyBookmarks *eb)
EPHY_NODE_KEYWORD_PROP_PRIORITY,
&value);
g_value_unset (&value);
+ g_signal_connect_object (G_OBJECT (eb->priv->keywords),
+ "child_removed",
+ G_CALLBACK (topics_removed_cb),
+ G_OBJECT (eb),
+ 0);
ephy_node_add_child (eb->priv->keywords,
eb->priv->bookmarks);
diff --git a/src/bookmarks/ephy-bookmarks.h b/src/bookmarks/ephy-bookmarks.h
index e31831c6f..174c3c930 100644
--- a/src/bookmarks/ephy-bookmarks.h
+++ b/src/bookmarks/ephy-bookmarks.h
@@ -63,6 +63,11 @@ struct EphyBookmarks
struct EphyBookmarksClass
{
GObjectClass parent_class;
+
+ void (* bookmark_remove) (EphyBookmarks *eb,
+ long id);
+ void (* topic_remove) (EphyBookmarks *eb,
+ long id);
};
GType ephy_bookmarks_get_type (void);
diff --git a/src/bookmarks/ephy-new-bookmark.c b/src/bookmarks/ephy-new-bookmark.c
index 6eb5d7a12..f133e167d 100644
--- a/src/bookmarks/ephy-new-bookmark.c
+++ b/src/bookmarks/ephy-new-bookmark.c
@@ -183,8 +183,6 @@ ephy_new_bookmark_response_cb (GtkDialog *dialog,
ephy_new_bookmark_add (new_bookmark);
break;
}
-
- gtk_widget_destroy (GTK_WIDGET (new_bookmark));
}
static GtkWidget *
diff --git a/src/popup-commands.c b/src/popup-commands.c
index b66c92c31..2e2bb9080 100644
--- a/src/popup-commands.c
+++ b/src/popup-commands.c
@@ -162,7 +162,8 @@ popup_cmd_bookmark_link (EggAction *action,
(EPHY_NEW_BOOKMARK (new_bookmark), title);
ephy_new_bookmark_set_smarturl
(EPHY_NEW_BOOKMARK (new_bookmark), rel);
- gtk_widget_show (new_bookmark);
+ gtk_dialog_run (GTK_DIALOG (new_bookmark));
+ gtk_widget_destroy (new_bookmark);
}
void
diff --git a/src/toolbar.c b/src/toolbar.c
index ff28353a0..18fc59f61 100755
--- a/src/toolbar.c
+++ b/src/toolbar.c
@@ -62,6 +62,8 @@ enum
PROP_EPHY_WINDOW
};
+static EggToolbarsGroup *toolbars_group = NULL;
+
static GObjectClass *parent_class = NULL;
struct ToolbarPrivate
@@ -197,6 +199,8 @@ toolbar_get_action_name (EggEditableToolbar *etoolbar,
}
}
+ LOG ("Action name is %s", res)
+
return res;
}
@@ -219,6 +223,7 @@ toolbar_get_action (EggEditableToolbar *etoolbar,
}
else if (g_str_has_prefix (name, "GoBookmarkId"))
{
+ LOG ("Create action %s", name)
if (!ephy_str_to_int (name + strlen ("GoBookmarkId"), &id))
{
return NULL;
@@ -228,6 +233,7 @@ toolbar_get_action (EggEditableToolbar *etoolbar,
}
else if (g_str_has_prefix (name, "GoTopicId"))
{
+ LOG ("Create action %s", name)
if (!ephy_str_to_int (name + strlen ("GoTopicId"), &id))
{
return NULL;
@@ -395,10 +401,46 @@ toolbar_set_window (Toolbar *t, EphyWindow *window)
}
static void
-toolbar_init (Toolbar *t)
+topic_remove_cb (EphyBookmarks *eb,
+ long id,
+ Toolbar *t)
+{
+ EggAction *action;
+ char *name;
+
+ name = g_strdup_printf ("GoTopicId%ld", id);
+ action = egg_action_group_get_action (t->priv->action_group, name);
+ if (action)
+ {
+ egg_toolbars_group_remove_action (toolbars_group, action->name);
+ egg_action_group_remove_action (t->priv->action_group, action);
+ }
+
+ g_free (name);
+}
+
+static void
+bookmark_remove_cb (EphyBookmarks *eb,
+ long id,
+ Toolbar *t)
{
- static EggToolbarsGroup *group = NULL;
+ EggAction *action;
+ char *name;
+
+ name = g_strdup_printf ("GoBookmarkId%ld", id);
+ action = egg_action_group_get_action (t->priv->action_group, name);
+ if (action)
+ {
+ egg_toolbars_group_remove_action (toolbars_group, action->name);
+ egg_action_group_remove_action (t->priv->action_group, action);
+ }
+ g_free (name);
+}
+
+static void
+toolbar_init (Toolbar *t)
+{
t->priv = g_new0 (ToolbarPrivate, 1);
t->priv->window = NULL;
@@ -410,18 +452,25 @@ toolbar_init (Toolbar *t)
egg_editable_toolbar_add_drag_type (EGG_EDITABLE_TOOLBAR (t),
EPHY_DND_URL_TYPE);
- if (group == NULL)
+ if (toolbars_group == NULL)
{
char *user;
+ EphyBookmarks *bookmarks;
user = g_build_filename (ephy_dot_dir (), "toolbar.xml", NULL);
- group = egg_toolbars_group_new ();
+ toolbars_group = egg_toolbars_group_new ();
egg_toolbars_group_set_source
- (group, ephy_file ("epiphany-toolbar.xml"), user);
+ (toolbars_group, ephy_file ("epiphany-toolbar.xml"), user);
g_free (user);
+
+ bookmarks = ephy_shell_get_bookmarks (ephy_shell);
+ g_signal_connect (bookmarks, "bookmark_remove",
+ G_CALLBACK (bookmark_remove_cb), t);
+ g_signal_connect (bookmarks, "topic_remove",
+ G_CALLBACK (topic_remove_cb), t);
}
- g_object_set (t, "ToolbarsGroup", group, NULL);
+ g_object_set (t, "ToolbarsGroup", toolbars_group, NULL);
}
static void
diff --git a/src/window-commands.c b/src/window-commands.c
index a4c5844e0..f9e5ecf72 100644
--- a/src/window-commands.c
+++ b/src/window-commands.c
@@ -315,7 +315,8 @@ window_cmd_file_bookmark_page (EggAction *action,
(EPHY_NEW_BOOKMARK (new_bookmark), title);
ephy_new_bookmark_set_icon
(EPHY_NEW_BOOKMARK (new_bookmark), icon);
- gtk_widget_show (new_bookmark);
+ gtk_dialog_run (GTK_DIALOG (new_bookmark));
+ gtk_widget_destroy (new_bookmark);
}
void