- if (newmenu == TRUE) {
- if (!parse_attr_string("id", node->parent, &id))
- goto parse_menu_fail;
- if (!parse_attr_string("label", node->parent, &title))
- goto parse_menu_fail;
+ client_list_menu_startup(reconfig);
+ client_list_combined_menu_startup(reconfig);
+ client_menu_startup();
+
+ menu_parse_inst = obt_parse_instance_new();
+
+ menu_parse_state.parent = NULL;
+ menu_parse_state.pipe_creator = NULL;
+ obt_parse_register(menu_parse_inst, "menu", parse_menu, &menu_parse_state);
+ obt_parse_register(menu_parse_inst, "item", parse_menu_item,
+ &menu_parse_state);
+ obt_parse_register(menu_parse_inst, "separator",
+ parse_menu_separator, &menu_parse_state);
+
+ for (it = config_menu_files; it; it = g_slist_next(it)) {
+ if (obt_parse_load_config_file(menu_parse_inst,
+ "openbox",
+ it->data,
+ "openbox_menu"))
+ {
+ loaded = TRUE;
+ obt_parse_tree_from_root(menu_parse_inst);
+ obt_parse_close(menu_parse_inst);
+ } else
+ g_message(_("Unable to find a valid menu file \"%s\""),
+ (const gchar*)it->data);
+ }
+ if (!loaded) {
+ if (obt_parse_load_config_file(menu_parse_inst,
+ "openbox",
+ "menu.xml",
+ "openbox_menu"))
+ {
+ obt_parse_tree_from_root(menu_parse_inst);
+ obt_parse_close(menu_parse_inst);
+ } else
+ g_message(_("Unable to find a valid menu file \"%s\""),
+ "menu.xml");
+ }