Mercurial > geeqie.yaz
diff src/layout_util.c @ 1463:25168240a247
added function to reload external editors at any time
eliminated init_after_global_options()
author | nadvornik |
---|---|
date | Fri, 20 Mar 2009 09:46:35 +0000 |
parents | e015b6573d36 |
children | 1b3751ac4743 |
line wrap: on
line diff
--- a/src/layout_util.c Thu Mar 19 22:58:28 2009 +0000 +++ b/src/layout_util.c Fri Mar 20 09:46:35 2009 +0000 @@ -1666,7 +1666,13 @@ GList *editors_list; GList *work; GList *old_path; - GString *desc = g_string_new( + GString *desc; + + lw->action_group_editors = gtk_action_group_new("MenuActionsExternal"); + gtk_ui_manager_insert_action_group(lw->ui_manager, lw->action_group_editors, 1); + + /* lw->action_group_editors contains translated entries, no translate func is required */ + desc = g_string_new( "<ui>" " <menubar name='MainMenu'>"); @@ -1684,7 +1690,7 @@ { entry.stock_id = editor->key; } - gtk_action_group_add_actions(lw->action_group_external, &entry, 1, lw); + gtk_action_group_add_actions(lw->action_group_editors, &entry, 1, lw); path = layout_actions_editor_menu_path(editor); layout_actions_editor_add(desc, path, old_path); @@ -1701,7 +1707,9 @@ "</ui>" ); error = NULL; - if (!gtk_ui_manager_add_ui_from_string(lw->ui_manager, desc->str, -1, &error)) + + lw->ui_editors_id = gtk_ui_manager_add_ui_from_string(lw->ui_manager, desc->str, -1, &error); + if (!lw->ui_editors_id) { g_message("building menus failed: %s", error->message); g_error_free(error); @@ -1719,8 +1727,6 @@ lw->action_group = gtk_action_group_new("MenuActions"); gtk_action_group_set_translate_func(lw->action_group, menu_translate, NULL, NULL); - lw->action_group_external = gtk_action_group_new("MenuActionsExternal"); - /* lw->action_group_external contains translated entries, no translate func is required */ gtk_action_group_add_actions(lw->action_group, menu_entries, G_N_ELEMENTS(menu_entries), lw); @@ -1739,7 +1745,6 @@ lw->ui_manager = gtk_ui_manager_new(); gtk_ui_manager_set_add_tearoffs(lw->ui_manager, TRUE); gtk_ui_manager_insert_action_group(lw->ui_manager, lw->action_group, 0); - gtk_ui_manager_insert_action_group(lw->ui_manager, lw->action_group_external, 1); error = NULL; if (!gtk_ui_manager_add_ui_from_string(lw->ui_manager, menu_ui_description, -1, &error)) @@ -1757,6 +1762,32 @@ layout_copy_path_update(lw); } +void layout_editors_reload_all(void) +{ + GList *work; + + work = layout_window_list; + while (work) + { + LayoutWindow *lw = work->data; + work = work->next; + + gtk_ui_manager_remove_ui(lw->ui_manager, lw->ui_editors_id); + gtk_ui_manager_remove_action_group(lw->ui_manager, lw->action_group_editors); + g_object_unref(lw->action_group_editors); + } + + editor_load_descriptions(); + + work = layout_window_list; + while (work) + { + LayoutWindow *lw = work->data; + work = work->next; + layout_actions_setup_editors(lw); + } +} + void layout_actions_add_window(LayoutWindow *lw, GtkWidget *window) { GtkAccelGroup *group;