From 45f9b007f1a057866dc0a44fe498993ef5293bfd Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Wed, 3 Sep 2003 13:09:32 +0000 Subject: Use the api for dynamic menus creation. Far cleaner. 2003-09-03 Marco Pesenti Gritti * src/ephy-favorites-menu.c: (ephy_favorites_menu_rebuild): * src/ephy-tabs-menu.c: (ephy_tabs_menu_update): Use the api for dynamic menus creation. Far cleaner. --- ChangeLog | 7 +++++++ src/ephy-favorites-menu.c | 37 +++++++++---------------------------- src/ephy-tabs-menu.c | 29 ++++++++--------------------- 3 files changed, 24 insertions(+), 49 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8a63d033c..d24e51ca0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2003-09-03 Marco Pesenti Gritti + + * src/ephy-favorites-menu.c: (ephy_favorites_menu_rebuild): + * src/ephy-tabs-menu.c: (ephy_tabs_menu_update): + + Use the api for dynamic menus creation. Far cleaner. + 2003-09-03 Christian Persch * src/bookmarks/ephy-bookmarks-import.c: (xbel_parse_single_bookmark), diff --git a/src/ephy-favorites-menu.c b/src/ephy-favorites-menu.c index 99afe038c..89333809e 100644 --- a/src/ephy-favorites-menu.c +++ b/src/ephy-favorites-menu.c @@ -28,6 +28,7 @@ #include "ephy-debug.h" #include +#include /** * Private data @@ -115,7 +116,6 @@ static void ephy_favorites_menu_rebuild (EphyFavoritesMenu *wrhm) { EphyFavoritesMenuPrivate *p = wrhm->priv; - GString *xml; gint i; EphyNode *fav; GPtrArray *children; @@ -130,21 +130,19 @@ ephy_favorites_menu_rebuild (EphyFavoritesMenu *wrhm) fav = ephy_bookmarks_get_favorites (p->bookmarks); children = ephy_node_get_children (fav); - xml = g_string_new (NULL); - g_string_append (xml, "" - "" - ""); - p->action_group = gtk_action_group_new ("FavoritesActions"); gtk_ui_manager_insert_action_group (merge, p->action_group, 0); + p->ui_id = gtk_ui_manager_new_merge_id (merge); for (i = 0; i < children->len; i++) { - char *verb; + char verb[20]; + char name[20]; EphyNode *node; GtkAction *action; - verb = g_strdup_printf ("GoFav%d", i); + g_sprintf (verb, "GoFav%d", i); + g_sprintf (name, "GoFav%dMenu", i); node = g_ptr_array_index (children, i); @@ -155,29 +153,12 @@ ephy_favorites_menu_rebuild (EphyFavoritesMenu *wrhm) g_signal_connect (action, "go_location", G_CALLBACK (go_location_cb), p->window); - g_string_append (xml, "\n"); - - g_free (verb); + gtk_ui_manager_add_ui (merge, p->ui_id, + "/menubar/GoMenu/GoFavorites", + name, verb); } ephy_node_thaw (fav); - g_string_append (xml, ""); - - if (children->len > 0) - { - GError *error = NULL; - LOG ("Merging ui\n%s",xml->str); - p->ui_id = gtk_ui_manager_add_ui_from_string - (merge, xml->str, -1, &error); - } - - g_string_free (xml, TRUE); - STOP_PROFILER ("Rebuild favorites menu") } diff --git a/src/ephy-tabs-menu.c b/src/ephy-tabs-menu.c index 02bcd9b08..0dad11885 100644 --- a/src/ephy-tabs-menu.c +++ b/src/ephy-tabs-menu.c @@ -254,11 +254,9 @@ ephy_tabs_menu_update (EphyTabsMenu *menu) GtkUIManager *merge; EphyTab *tab; GtkAction *action; - GString *xml; guint i = 0; guint num = 0; GList *tabs = NULL, *l; - GError *error = NULL; g_return_if_fail (EPHY_IS_TABS_MENU (menu)); p = menu->priv; @@ -276,43 +274,32 @@ ephy_tabs_menu_update (EphyTabsMenu *menu) if (num == 0) return; p->action_group = gtk_action_group_new ("TabsActions"); - - /* it's faster to preallocate, MIN is sanity check */ - xml = g_string_sized_new (44 * MIN (num, 64) + 105); - - g_string_append (xml, "" - ""); + p->ui_id = gtk_ui_manager_new_merge_id (merge); for (l = tabs; l != NULL; l = l->next) { const char *action_name; + char *name; + tab = (EphyTab *) l->data; action = GTK_ACTION (ephy_tab_get_action (tab)); action_name = gtk_action_get_name (action); + name = g_strdup_printf ("%sMenu", action_name); tab_set_action_accelerator (p->action_group, action, i); gtk_action_group_add_action (p->action_group, action); - g_string_append (xml, "\n"); - - ++i; + gtk_ui_manager_add_ui (merge, p->ui_id, + "/menubar/TabsMenu/TabsOpen", + name, action_name); + g_free (name); } g_list_free (tabs); - g_string_append (xml, ""); - gtk_ui_manager_insert_action_group (merge, p->action_group, 0); - p->ui_id = gtk_ui_manager_add_ui_from_string - (merge, xml->str, -1, &error); - - g_string_free (xml, TRUE); STOP_PROFILER ("Rebuilding tabs menu") } -- cgit v1.2.3