home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / CSAPE32.ARJ / INCLUDE / MSYS.H < prev    next >
C/C++ Source or Header  |  1990-09-10  |  6KB  |  171 lines

  1. /*
  2.       msys.h
  3.  
  4.     % Header for menuing systems.
  5.  
  6.     C-scape 3.2
  7.     Copyright (c) 1988, by Oakland Group, Inc.
  8.     ALL RIGHTS RESERVED.
  9.  
  10.     Revision History:
  11.     -----------------
  12.      8/30/88 jdc    Created
  13.     10/17/88 jmd    Added _arg, preened
  14.     11/30/88 jmd    Fixed spelling of vertical
  15.     12/20/88 jmd    removed mouse handler
  16.  
  17.      2/02/89 jdc    fixed frame_Unlock bug
  18.      7/26/89 jmd    made frame_Lock a function
  19.                     removed msys_Lock (it should be made a function)
  20.      9/10/89 jmd    re-wrote msys_dir
  21.  
  22.     11/27/89 ted    removed prototypes for slug & framer field funcs; made'em static.
  23.  
  24.     12/09/89 ted    Added MSYS_IN conditional.
  25.     12/11/89 ted    Moved framer & slug stuff around
  26.     12/18/89 ted    Added msys_ macros accessing bob_Ubits.
  27.      1/09/90 gam    Removed Ted's new slug_Go macro.
  28.      1/24/90 ted    Added msys_SetPixShadow stuff.
  29.      2/26/90 ted    Made slug_Repaint a function again.
  30.      3/28/90 jmd    ansi-fied
  31.      9/09/90 jmd    added msys_SetHiColors
  32. */
  33.  
  34. #ifndef MSYS_IN
  35. #define MSYS_IN
  36.  
  37. #include "ufuncobj.h"
  38. /* -------------------------------------------------------------------------- */
  39.  
  40. /* NMENU definitions */
  41.  
  42. #define MENU_VERTICAL   1
  43. #define MENU_HORIZONTAL 2
  44.  
  45. #define MSYS_LOCK        1
  46. #define MSYS_UNLOCK        2
  47. #define MSYS_ISLOCKED    3
  48. #define MSYS_SETBOB        4
  49. #define MSYS_GETBOB        5
  50.  
  51. /* messages for msys_doall */
  52. #define MSYSALL_SETFFUNCS    1
  53. #define MSYSALL_SETMFUNC    2
  54. #define MSYSALL_SETSPCFUNC    3
  55. #define MSYSALL_SETPARMOVE    4
  56. #define MSYSALL_SETSHADOW    5
  57. #define MSYSALL_SETHICOLOR    6
  58.  
  59. #define msys_UnLock(sed, code)         msys_do(sed, code, MSYS_UNLOCK, NULL)
  60. #define msys_IsLocked(sed, code)     msys_do(sed, code, MSYS_ISLOCKED, NULL)
  61. #define msys_SetBob(sed, code, bob)    msys_do(sed, code, MSYS_SETBOB, (VOID *)bob)
  62. #define msys_GetBob(s, c, bobp)        msys_do(sed, code, MSYS_GETBOB, (VOID *)bobp)
  63.  
  64. #define msys_SetFfunc(sed, ffp)        msys_doall(sed, MSYSALL_SETFFUNC, (VOID *)(ffp))
  65.  
  66. /* structure for set hicol msg */
  67. struct msys_hicolor {
  68.     byte     hisel;
  69.     byte     hireg;
  70. };
  71.  
  72. /* MSYS.C */
  73. extern void     msys_SetSpecial(sed_type sed, spc_fptr spcfunc);
  74. extern void     msys_SetMouse(sed_type sed, mouhandler_fptr mfunc);
  75. extern void     msys_SetParentMove(sed_type sed, boolean move);
  76. extern void     msys_SetPixShadow(sed_type sed, opcoord xshad, opcoord yshad);
  77. extern void     msys_SetHiColors(sed_type sed, byte hreg, byte hsel);
  78. extern int      msys_bobgo(sed_type sed, unsigned scancode);
  79. extern void     msys_doall(sed_type sed, int msg, VOID *data);
  80. extern int      msys_dir(sed_type sed);
  81.  
  82. /* MSYSDO.C */
  83. extern boolean  msys_Lock(sed_type sed, int *code, byte attr);
  84. extern boolean  msys_do(sed_type sed, int *code, int msg, VOID *data);
  85.  
  86. /* MSYSPARS.C */
  87. extern int      msys_ParseChoice(char *in, char *out, int slen);
  88.  
  89. /* -------------------------------------------------------------------------- */
  90. /* Obsolete stuff that's in the 3.1 manual */
  91.  
  92. #define frame_Repaint(sed)                     sed_Repaint(sed)
  93. #define frame_SetPosition(sed, row, col)    sed_SetPosition(sed, row, col)
  94. #define frame_Close(sed)                     sed_Close(sed)
  95.  
  96. #define slug_Close(sed)                     sed_Close(sed)
  97. /* -------------------------------------------------------------------------- */
  98. /* Framer stuff */
  99.  
  100. struct frame_def {
  101.     char         *choice;
  102.     ufunc_fptr    frame_func;
  103.     int          value;
  104. };
  105. typedef sed_type frame_type;
  106.  
  107. #define FRAME_END    NULL, FNULL, 0
  108.  
  109. #define msys_SetFramer(win, f)        bob_SetUbit0(win, f)
  110. #define msys_IsFramer(win)            bob_GetUbit0(win)
  111. #define msys_SetFrameRtn(win, fr)    bob_SetUbit1(win, fr)
  112. #define msys_IsFrameRtn(win)        bob_GetUbit1(win)
  113.  
  114. /* fnframer.c */
  115. OEXTERN field_funcs_struct  framer_funcs;
  116.  
  117. #define frame_Open(frame_list, bord, bkg, sel, bdc) \
  118.     frame_create(frame_list, bord, bkg, sel, bdc, &framer_funcs, sedmou_Framer)
  119.  
  120. #define frame_UnLock(sed, family, member) \
  121.             frame_do(sed, MSYS_UNLOCK, family, member, NULL)
  122. #define frame_IsLocked(sed, family, member) \
  123.             frame_do(sed, MSYS_ISLOCKED, family, member, NULL)
  124. #define frame_SetBob(sed, family, member, bob) \
  125.             frame_do(sed, MSYS_SETBOB, family, member, (VOID *)bob)
  126.  
  127. /* FRAMER.C */
  128. extern sed_type frame_create(struct frame_def frame_list[], bd_fptr bord, byte bkg, byte sel, byte bdr, field_funcs_ptr ffuncs, mouhandler_fptr fmfunc);
  129. extern boolean  frame_Lock(sed_type sed, int family, int member, byte attr);
  130. extern boolean  frame_do(sed_type sed, int msg, int family, int member, VOID *indata);
  131. extern int      frame_Go(sed_type sed, int chr, VOID *data);
  132.  
  133. /* FNFRAMER.C */
  134. extern void     framerbar_help(sed_type sed);
  135.  
  136. /* -------------------------------------------------------------------------- */
  137. /* Slug stuff */
  138.  
  139. struct slug_list {
  140.     char         *choice;
  141.     char         *message;
  142.     struct         slug_list *child;
  143.     ufunc_fptr     slug_func;
  144.     int          value;
  145. };
  146. typedef sed_type slug_type;
  147.  
  148. #define SLUG_VERTICAL       MENU_VERTICAL
  149. #define SLUG_HORIZONTAL     MENU_HORIZONTAL
  150.  
  151. /* fnslug.c */
  152. OEXTERN field_funcs_struct  slug_funcs;
  153.  
  154. /* fnmsys.c */
  155. OEXTERN field_funcs_struct  msys_funcs;
  156.  
  157. #define slug_Open(slist, dir, bord, bkg, sel, bdc) \
  158.      slug_create(slist, dir, bord, bkg, sel, bdc, &slug_funcs, sedmou_GreedyTrack)
  159.  
  160. /* SLUG.C */
  161. extern sed_type slug_create(struct slug_list slug_def[], int dir, bd_fptr bord, byte bkg, byte sel, byte bdr, field_funcs_ptr ffuncs, mouhandler_fptr mfunc);
  162. extern int      slug_Go(sed_type sed, int startfld, int row, int col, VOID *data);
  163. extern void     slug_Repaint(sed_type sed, int row, int col);
  164.  
  165. /* FNSLUG.C */
  166. extern void     slug_dokey(sed_type sed, unsigned scancode);
  167.  
  168. /* -------------------------------------------------------------------------- */
  169. #endif
  170.  
  171.