home *** CD-ROM | disk | FTP | other *** search
/ Boldly Go Collection / version40.iso / TS / 17A / DRWIN101.ZIP / MENUTIL.H < prev    next >
C/C++ Source or Header  |  1991-03-13  |  3KB  |  67 lines

  1. #ifndef __MENUTIL_H
  2. #define __MENUTIL_H
  3.  
  4. #include "wutil.h"                     /*windowing stuff*/
  5.  
  6.  
  7. #define HOTKEY         '&'
  8.  
  9. #define WND_ATTR       ATTR(CYAN,BLUE)
  10. #define BRD_ATTR       ATTR(WHITE,BLUE)
  11. #define SEL_ATTR       ATTR(YELLOW,MAGENTA)
  12. #define HOT_ATTR       ATTR(WHITE,BLUE)
  13.  
  14. typedef enum {                         /*menu types*/
  15.   MEN_VERTICAL=0,                      /*vertical list of selections*/
  16.   MEN_HORIZONTAL,                      /*horizontal list of selections*/
  17.  
  18.   MEN_LAST
  19. } MENU_TYPE;
  20.  
  21. enum MENU_RETURNS {                    /*return codes for menu functions*/
  22.   MEN_ERROR=-1,                        /*some fatal error occurred*/
  23.   MEN_ALLOC=-2,                        /*memory allocation error*/
  24.   MEN_ESC=-3,                          /*ESC was pressed to exit menu*/
  25.  
  26.   MEN_LASTCODE                         /*dummy placeholder*/
  27. };   /*return codes*/
  28.  
  29. enum MENU_FLAGS {                      /*flags for menus...*/
  30.   MEN_NONE    =0,                      /*nothing special*/
  31.   MEN_CLOSE   =0x0001,                 /*close menu after select*/
  32.   MEN_NEXT    =0x0002,                 /*go to next selection after select*/
  33.   MEN_SKIP    =0x0004                  /*skip this selection (not used)*/
  34. };   /*menu flags*/
  35.  
  36.  
  37. typedef struct MENU_DESC_s {
  38.   struct MENU_LIST_s {
  39.     char* str;                         /*selctor string*/
  40.     void (*fun)(struct MENU_DESC_s*);  /*function to call upon selection*/
  41.     WORD  flags;                       /*auto-close flag*/
  42.     char  hot;                         /*hotkey -- set by menu handler*/
  43.   } *menu_list;
  44.   char *title;                         /*title of menu*/
  45.   WORD border;                         /*border selection=0,1,2*/
  46.   WORD row;                            /*first row of menu window*/
  47.   WORD col;                            /*first column of menu window*/
  48.   WORD wid;                            /*width of window*/
  49.   WORD wnd_attr;                       /*unselected attribute*/
  50.   WORD brd_attr;                       /*border/title attribute*/
  51.   WORD sel_attr;                       /*selected attribute*/
  52.   WORD hot_attr;                       /*hot-key attribute*/
  53.   WORD cur;                            /*current selection*/
  54.   MENU_TYPE typ;                       /*menu type*/
  55.   WORD siz;                            /*number of selections*/
  56.   WIND* w;                             /*holds window opened by menu func*/
  57. } MENU_DESC;                           /*menu descriptor*/
  58.  
  59. typedef struct MENU_LIST_s MENU_LIST;  /*typecast for use w/o struct*/
  60.  
  61.  
  62. int  menshow(MENU_DESC* md);           /*re-draw menu*/
  63. int  menvert(MENU_DESC* md);           /*vertical menu*/
  64.  
  65.  
  66. #endif                                 /*if not already #included*/
  67.