home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 March B / SCO_CASTOR4RRT.iso / uccs / root.14 / udk / usr / include / menu.h < prev    next >
C/C++ Source or Header  |  1998-08-19  |  7KB  |  247 lines

  1. /*
  2.  * Copyright (c) 1998 The Santa Cruz Operation, Inc.. All Rights Reserved. 
  3.  *                                                                         
  4.  *        THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF THE               
  5.  *                   SANTA CRUZ OPERATION INC.                             
  6.  *                                                                         
  7.  *   The copyright notice above does not evidence any actual or intended   
  8.  *   publication of such source code.                                      
  9.  */
  10.  
  11. #ident    "@(#)menu.h    15.1"
  12. #include <curses.h>
  13. #include "eti.h"
  14.  
  15. #ifndef STI_MENU
  16. #define STI_MENU
  17.  
  18. #ifdef __cplusplus
  19. extern "C" {
  20. #endif
  21.  
  22. /* Menu options: */
  23. #define O_ONEVALUE    0x01
  24. #define O_SHOWDESC    0x02
  25. #define O_ROWMAJOR    0x04
  26. #define O_IGNORECASE    0x08
  27. #define O_SHOWMATCH    0x10
  28. #define O_NONCYCLIC    0x20
  29.  
  30. /* Item options: */
  31. #define O_SELECTABLE    0x01
  32.  
  33. typedef struct {
  34.   char    *str;
  35.   int    length;
  36. } TEXT;
  37.  
  38. typedef struct ITEM {
  39.   TEXT        name;
  40.   TEXT        description;
  41.   int        index;    /* Item number */
  42.   struct MENU    *imenu;    /* Pointer to parent menu */
  43.   int         value;
  44.   char        *userptr;
  45.   OPTIONS     opt;
  46.   int         status;
  47.   short         y;    /* y and x location of item in menu */
  48.   short         x;
  49.   struct ITEM     *left;
  50.   struct ITEM     *right;
  51.   struct ITEM     *up;
  52.   struct ITEM     *down;
  53. } ITEM;
  54.  
  55. #define _POSTED        0x1
  56. #define _IN_DRIVER    0x2
  57. #define _LINK_NEEDED    0x4
  58.  
  59. typedef struct MENU {
  60.   int         height;        /* Number of chars high */
  61.   int         width;            /* Number of chars wide */
  62.   int         rows;            /* Number of items high */
  63.   int         cols;            /* Number of items wide */
  64.   int         frows;            /* Number of formated items high */
  65.   int         fcols;            /* Number of formated items wide */
  66.   int         namelen;        /* Length of widest name */
  67.   int         desclen;        /* Length of widest description */
  68.   int         marklen;        /* Length of mark */
  69.   int         itemlen;        /* Length of an one item */
  70.   char        *pattern;        /* Buffer used to store match chars */
  71.   int         pindex;        /* Index into pattern buffer */
  72.   WINDOW    *win;            /* Window containing entire menu */
  73.   WINDOW    *sub;            /* Portion of menu displayed */
  74.   WINDOW    *userwin;        /* User's window */
  75.   WINDOW    *usersub;        /* User's subwindow */
  76.   ITEM        **items;
  77.   int          nitems;        /* Total number of items in menu */
  78.   ITEM        *curitem;        /* Current item */
  79.   int         toprow;        /* Top row of menu */
  80.   int         pad;            /* Pad character */
  81.   chtype     fore;            /* Attribute for selection */
  82.   chtype     back;            /* Attribute for nonselection */
  83.   chtype     grey;            /* Attribute for inactive */
  84.   PTF_void     menuinit;
  85.   PTF_void     menuterm;
  86.   PTF_void     iteminit;
  87.   PTF_void     itemterm;
  88.   char        *userptr;
  89.   char        *mark;
  90.   OPTIONS     opt;
  91.   int         status;
  92. } MENU;
  93.  
  94. /* Define keys */
  95.  
  96. #define REQ_LEFT_ITEM        KEY_MAX+1
  97. #define REQ_RIGHT_ITEM        KEY_MAX+2
  98. #define REQ_UP_ITEM        KEY_MAX+3
  99. #define REQ_DOWN_ITEM        KEY_MAX+4
  100. #define REQ_SCR_ULINE        KEY_MAX+5
  101. #define REQ_SCR_DLINE        KEY_MAX+6
  102. #define REQ_SCR_DPAGE        KEY_MAX+7
  103. #define REQ_SCR_UPAGE        KEY_MAX+8
  104. #define REQ_FIRST_ITEM        KEY_MAX+9
  105. #define REQ_LAST_ITEM        KEY_MAX+10
  106. #define REQ_NEXT_ITEM        KEY_MAX+11
  107. #define REQ_PREV_ITEM        KEY_MAX+12
  108. #define REQ_TOGGLE_ITEM        KEY_MAX+13
  109. #define REQ_CLEAR_PATTERN    KEY_MAX+14
  110. #define REQ_BACK_PATTERN    KEY_MAX+15
  111. #define REQ_NEXT_MATCH        KEY_MAX+16
  112. #define REQ_PREV_MATCH        KEY_MAX+17
  113.  
  114. #ifdef __STDC__
  115.  
  116. extern ITEM    **menu_items ( MENU * ),
  117.         *current_item ( MENU * ),
  118.         *new_item ( char *, char * );
  119. extern MENU    *new_menu ( ITEM ** );
  120. extern OPTIONS    item_opts ( ITEM * ),
  121.         menu_opts ( MENU * );
  122. extern PTF_void    item_init ( MENU * ),
  123.         item_term ( MENU * ),
  124.         menu_init ( MENU * ),
  125.         menu_term ( MENU * );
  126. extern WINDOW    *menu_sub ( MENU * ),
  127.         *menu_win ( MENU * );
  128. extern char    *item_description ( ITEM * ),
  129.         *item_name ( ITEM * ),
  130.         *item_userptr ( ITEM * ),
  131.         *menu_mark ( MENU * ),
  132.         *menu_pattern ( MENU * ),
  133.         *menu_userptr ( MENU * );
  134. extern chtype    menu_back ( MENU * ),
  135.         menu_fore ( MENU * ),
  136.         menu_grey ( MENU * );
  137. extern int    free_item ( ITEM * ),
  138.         free_menu ( MENU * ),
  139.         item_count ( MENU * ),
  140.         item_index ( ITEM * ),
  141.         item_opts_off ( ITEM *, OPTIONS ),
  142.         item_opts_on ( ITEM *, OPTIONS ),
  143.         item_value ( ITEM * ),
  144.         item_visible ( ITEM * ),
  145.         menu_driver ( MENU *, int ),
  146.         menu_opts_off ( MENU *, OPTIONS ),
  147.         menu_opts_on ( MENU *, OPTIONS ),
  148.         menu_pad ( MENU * ),
  149.         pos_menu_cursor ( MENU * ),
  150.         post_menu ( MENU * ),
  151.         scale_menu ( MENU *, int *, int * ),
  152.         set_current_item ( MENU *, ITEM * ),
  153.         set_item_init ( MENU *, PTF_void ),
  154.         set_item_opts ( ITEM *, OPTIONS ),
  155.         set_item_term ( MENU *, PTF_void ),
  156.         set_item_userptr ( ITEM *, char * ),
  157.         set_item_value ( ITEM *, int ),
  158.         set_menu_back ( MENU *, chtype  ),
  159.         set_menu_fore ( MENU *, chtype  ),
  160.         set_menu_format ( MENU *, int, int ),
  161.         set_menu_grey ( MENU *, chtype  ),
  162.         set_menu_init ( MENU *, PTF_void ),
  163.         set_menu_items ( MENU *, ITEM ** ),
  164.         set_menu_mark ( MENU *, char * ),
  165.         set_menu_opts ( MENU *, OPTIONS ),
  166.         set_menu_pad ( MENU *, int ),
  167.         set_menu_pattern ( MENU *, char * ),
  168.         set_menu_sub ( MENU *, WINDOW * ),
  169.         set_menu_term ( MENU *, PTF_void ),
  170.         set_menu_userptr ( MENU *, char * ),
  171.         set_menu_win ( MENU *, WINDOW * ),
  172.         set_top_row ( MENU *, int ),
  173.         top_row ( MENU * ),
  174.         unpost_menu ( MENU * );
  175. void        menu_format ( MENU *, int *, int * );
  176.  
  177. #else    /* old style extern's */
  178.  
  179. extern ITEM    **menu_items (),
  180.         *current_item (),
  181.         *new_item ();
  182. extern MENU    *new_menu ();
  183. extern OPTIONS    item_opts (),
  184.         menu_opts ();
  185. extern PTF_void    item_init (),
  186.         item_term (),
  187.         menu_init (),
  188.         menu_term ();
  189. extern WINDOW    *menu_sub (),
  190.         *menu_win ();
  191. extern char    *item_description (),
  192.         *item_name (),
  193.         *item_userptr (),
  194.         *menu_mark (),
  195.         *menu_pattern (),
  196.         *menu_userptr ();
  197. extern chtype    menu_back (),
  198.         menu_fore (),
  199.         menu_grey ();
  200. extern int    free_item (),
  201.         free_menu (),
  202.         item_count (),
  203.         item_index (),
  204.         item_opts_off (),
  205.         item_opts_on (),
  206.         item_value (),
  207.         item_visible (),
  208.         menu_driver (),
  209.         menu_opts_off (),
  210.         menu_opts_on (),
  211.         menu_pad (),
  212.         pos_menu_cursor (),
  213.         post_menu (),
  214.         scale_menu (),
  215.         set_current_item (),
  216.         set_item_init (),
  217.         set_item_opts (),
  218.         set_item_term (),
  219.         set_item_userptr (),
  220.         set_item_value (),
  221.         set_menu_back (),
  222.         set_menu_fore (),
  223.         set_menu_format (),
  224.         set_menu_grey (),
  225.         set_menu_init (),
  226.         set_menu_items (),
  227.         set_menu_mark (),
  228.         set_menu_opts (),
  229.         set_menu_pad (),
  230.         set_menu_pattern (),
  231.         set_menu_sub (),
  232.         set_menu_term (),
  233.         set_menu_userptr (),
  234.         set_menu_win (),
  235.         set_top_row (),
  236.         top_row (),
  237.         unpost_menu ();
  238. void        menu_format ();
  239.  
  240. #endif /* __STDC__ */
  241.  
  242. #ifdef __cplusplus
  243. }
  244. #endif
  245.  
  246. #endif /* STI_MENU */
  247.