static void roadmap_factory_add_help (RoadMapMenu menu) { int ok; const char *label; RoadMapCallback callback; for (ok = roadmap_help_first_topic(&label, &callback); ok; ok = roadmap_help_next_topic(&label, &callback)) { roadmap_main_add_menu_item (menu, roadmap_lang_get (label), roadmap_lang_get (label), callback); } }
RoadMapMenu roadmap_factory_menu (const char *name, const char *items[], const RoadMapAction *actions) { int i; RoadMapMenu menu = NULL; const char **menu_items = roadmap_factory_user_config (name, "menu", actions); menu = roadmap_main_new_menu (); if (menu_items == NULL) menu_items = items; for (i = 0; menu_items[i] != NULL; ++i) { const char *item = menu_items[i]; if (item == RoadMapFactorySeparator) { roadmap_main_add_separator (menu); } else { const RoadMapAction *this_action; this_action = roadmap_factory_find_action (actions, item); if (this_action != NULL) { roadmap_main_add_menu_item (menu, roadmap_lang_get (this_action->label_long), roadmap_lang_get (this_action->tip), this_action->callback); } } } return menu; }
void roadmap_factory (const char *name, const RoadMapAction *actions, const char *menu[], const char *toolbar[]) { int i; int prefix = strlen(ROADMAP_MENU); int use_toolbar = roadmap_config_match (&RoadMapConfigGeneralToolbar, "yes"); int use_icons = roadmap_config_match (&RoadMapConfigGeneralIcons, "yes"); RoadMapMenu gui_menu = NULL; for (i = 0; menu[i] != NULL; ++i) { const char *item = menu[i]; if (item == RoadMapFactorySeparator) { roadmap_main_add_separator (gui_menu); } else if (item == RoadMapFactoryHelpTopics) { roadmap_factory_add_help (gui_menu); } else if (strncmp (item, ROADMAP_MENU, prefix) == 0) { gui_menu = roadmap_main_new_menu (); roadmap_main_add_menu (gui_menu, roadmap_lang_get (item + prefix)); } else { const RoadMapAction *this_action; this_action = roadmap_factory_find_action (actions, item); if (this_action != NULL) { roadmap_main_add_menu_item (gui_menu, roadmap_lang_get (this_action->label_long), roadmap_lang_get (this_action->tip), this_action->callback); } } } if (use_toolbar) { const char **usertoolbar = roadmap_factory_user_config (name, "toolbar", actions); if (usertoolbar == NULL) usertoolbar = toolbar; for (i = 0; usertoolbar[i] != NULL; ++i) { const char *item = usertoolbar[i]; if (item == RoadMapFactorySeparator) { roadmap_main_add_tool_space (); } else { const RoadMapAction *this_action; this_action = roadmap_factory_find_action (actions, item); if (this_action != NULL) { roadmap_main_add_tool (roadmap_factory_terse(this_action), (use_icons) ? this_action->name : NULL, this_action->tip, this_action->callback); } } } } /* if (RoadMapFactoryBindings != NULL) { roadmap_main_set_keyboard (RoadMapFactoryBindings, roadmap_factory_keyboard); } */ }
void roadmap_main_add_separator (RoadMapMenu menu) { roadmap_main_add_menu_item (menu, NULL, NULL, NULL); }