Пример #1
0
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);
   }
}
Пример #2
0
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;
}
Пример #3
0
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);
   }
   */
}
Пример #4
0
void roadmap_main_add_separator (RoadMapMenu menu) {

   roadmap_main_add_menu_item (menu, NULL, NULL, NULL);
}