home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / ftes46b5.zip / ftes46b5 / src / g_menu.cpp < prev    next >
C/C++ Source or Header  |  1997-05-30  |  2KB  |  81 lines

  1. /*    g_menu.cpp
  2.  *
  3.  *    Copyright (c) 1994-1996, Marko Macek
  4.  *
  5.  *    You may distribute under the terms of either the GNU General Public
  6.  *    License or the Artistic License, as specified in the README file.
  7.  *
  8.  */
  9.  
  10. #include <stdio.h>
  11. #include <stdlib.h>
  12. #include <string.h>
  13. #include <assert.h>
  14. #include <signal.h>
  15. #include <stdarg.h>
  16. #include "console.h"
  17. #include "gui.h"
  18.  
  19. int MenuCount = 0;
  20. mMenu *Menus = 0;
  21.  
  22. int NewMenu(char *Name) {
  23.     int n;
  24.     
  25.     Menus = (mMenu *) realloc((void *) Menus,
  26.                               sizeof(mMenu) * (MenuCount + 1));
  27.     n = MenuCount;
  28.     
  29.     Menus[n].Name = strdup(Name);
  30.     Menus[n].Count = 0;
  31.     Menus[n].Items = 0;
  32.     
  33.     MenuCount++;
  34.     return n;
  35. }
  36.  
  37. int NewItem(int menu, char *Name) {
  38.     int n;
  39.     
  40.     assert (menu < MenuCount);
  41.     
  42.     Menus[menu].Items = (mItem *) realloc(Menus[menu].Items,
  43.                                           sizeof(mItem) * (Menus[menu].Count + 1));
  44.     n = Menus[menu].Count;
  45.     
  46.     Menus[menu].Items[n].SubMenu = -1;
  47.     Menus[menu].Items[n].Name = Name ? strdup(Name) : 0;
  48.     Menus[menu].Items[n].Arg = 0;
  49.     Menus[menu].Items[n].Cmd = -1;
  50.     
  51.     Menus[menu].Count++;
  52.     return n;
  53. }
  54.  
  55. int NewSubMenu(int menu, char *Name, int submenu, int Type) {
  56.     int n;
  57.     
  58.     assert (menu < MenuCount);
  59.     
  60.     Menus[menu].Items = (mItem *) realloc(Menus[menu].Items,
  61.                                           sizeof(mItem) * (Menus[menu].Count + 1));
  62.     n = Menus[menu].Count;
  63.     
  64.     Menus[menu].Items[n].SubMenu = submenu;
  65.     Menus[menu].Items[n].Name = Name ? strdup(Name) : 0;
  66.     Menus[menu].Items[n].Arg = 0;
  67.     Menus[menu].Items[n].Cmd = Type;
  68.     
  69.     Menus[menu].Count++;
  70.     return n;
  71. }
  72.  
  73. int GetMenuId(char *Name) {
  74.     if (Name)
  75.         for (int i = 0; i < MenuCount; i++)
  76.             if (strcmp(Name, Menus[i].Name) == 0)
  77.                 return i;
  78.     return -1;
  79. }
  80.  
  81.