From 70c5d9a1d5598f03a7717ba8028952ba65abaff2 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Mon, 28 Apr 2003 09:05:56 +0000 Subject: Sync toolbar on bookmark properties changes. 2003-04-28 Marco Pesenti Gritti * src/bookmarks/ephy-bookmark-action.c: (sync_bookmark_properties), (bookmarks_child_changed_cb), (ephy_bookmark_action_init), (ephy_bookmark_action_new): * src/bookmarks/ephy-topic-action.c: (ephy_topic_action_set_property), (ephy_topic_action_get_property), (ephy_topic_action_class_init), (sync_topic_properties), (topic_child_changed_cb), (ephy_topic_action_init), (ephy_topic_action_new): Sync toolbar on bookmark properties changes. --- src/bookmarks/ephy-topic-action.c | 57 ++++++++++++++++++++++++++++++--------- 1 file changed, 45 insertions(+), 12 deletions(-) (limited to 'src/bookmarks/ephy-topic-action.c') diff --git a/src/bookmarks/ephy-topic-action.c b/src/bookmarks/ephy-topic-action.c index b8d8ab9ee..121701286 100644 --- a/src/bookmarks/ephy-topic-action.c +++ b/src/bookmarks/ephy-topic-action.c @@ -34,7 +34,7 @@ struct EphyTopicActionPrivate enum { PROP_0, - PROP_BOOKMARK_ID + PROP_TOPIC_ID }; enum @@ -310,7 +310,7 @@ ephy_topic_action_set_property (GObject *object, switch (prop_id) { - case PROP_BOOKMARK_ID: + case PROP_TOPIC_ID: bmk->priv->topic_id = g_value_get_int (value); break; } @@ -328,7 +328,7 @@ ephy_topic_action_get_property (GObject *object, switch (prop_id) { - case PROP_BOOKMARK_ID: + case PROP_TOPIC_ID: g_value_set_boolean (value, bmk->priv->topic_id); break; } @@ -381,7 +381,7 @@ ephy_topic_action_class_init (EphyTopicActionClass *class) G_TYPE_STRING); g_object_class_install_property (object_class, - PROP_BOOKMARK_ID, + PROP_TOPIC_ID, g_param_spec_int ("topic_id", "topic_id", "topic_id", @@ -391,31 +391,64 @@ ephy_topic_action_class_init (EphyTopicActionClass *class) G_PARAM_READWRITE)); } +static void +sync_topic_properties (EggAction *action, EphyNode *bmk) +{ + const char *title; + + title = ephy_node_get_property_string + (bmk, EPHY_NODE_KEYWORD_PROP_NAME); + + g_object_set (action, "label", title, NULL); +} + +static void +topic_child_changed_cb (EphyNode *node, EphyNode *child, EggAction *action) +{ + gulong id; + + id = EPHY_TOPIC_ACTION (action)->priv->topic_id; + + if (id == ephy_node_get_id (child)) + { + sync_topic_properties (action, child); + } +} + static void ephy_topic_action_init (EphyTopicAction *action) { + EphyBookmarks *bookmarks; + EphyNode *node; + action->priv = g_new0 (EphyTopicActionPrivate, 1); + + bookmarks = ephy_shell_get_bookmarks (ephy_shell); + node = ephy_bookmarks_get_keywords (bookmarks); + g_signal_connect_object (node, "child_changed", + G_CALLBACK (topic_child_changed_cb), + action, 0); } EggAction * ephy_topic_action_new (const char *name, guint id) { EphyNode *bmk; - const char *title; EphyBookmarks *bookmarks; + EggAction *action; bookmarks = ephy_shell_get_bookmarks (ephy_shell); bmk = ephy_node_get_from_id (id); g_return_val_if_fail (bmk != NULL, NULL); - title = ephy_node_get_property_string - (bmk, EPHY_NODE_KEYWORD_PROP_NAME); + action = EGG_ACTION (g_object_new (EPHY_TYPE_TOPIC_ACTION, + "topic_id", id, + "name", name, + NULL)); + + sync_topic_properties (action, bmk); - return EGG_ACTION (g_object_new (EPHY_TYPE_TOPIC_ACTION, - "topic_id", id, - "name", name, - "label", title, - NULL)); + return action; } -- cgit v1.2.3