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'>");
{
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);
"</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);
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);
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))
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;