home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d5xx / d502 / cells.lha / CELLS / CELLSSource.lzh / cReqHelp.c < prev    next >
C/C++ Source or Header  |  1991-04-20  |  9KB  |  265 lines

  1. /*
  2.  *  CELLS       An Implementation of the WireWorld cellular automata
  3.  *              as described in Scientific American, Jan 1990.
  4.  *
  5.  *              Copyright 1990 by Davide P. Cervone.
  6.  *  You may use this code, provided this copyright notice is kept intact.
  7.  *  See the CELLS.HELP file for complete information on distribution conditions.
  8.  */
  9.  
  10. /*
  11.  *  File:  cReqHelp.c       Data structures for the Help and About requesters.
  12.  */
  13.  
  14.  
  15. #include "Cells.h"
  16. #include "cRequest.h"
  17. #include "cHelp.h"
  18. #include "cReqHelp.h"
  19. #include "cBoxes.h"
  20.  
  21. extern USHORT DaveData[];
  22.  
  23. static short HLPPanelBox[]  = FBOX(HLP_PANELW,HLP_PANELH);
  24. static short HLPFrameBox[]  = FBOX(HLP_FRAMEW,HLP_FRAMEH);
  25. static short HLPListBox[]   = FBOX(HLP_LISTW,HLP_LISTH);
  26. static short HLPNameBox[]   = FBOX(HLP_NAMEW,HLP_NAMEH);
  27. static short HLPSlideBox[]  = VBOX(HLP_SLIDEW,HLP_SLIDEH);
  28. static short HLPButtonBox[] = HBOX(HLP_BUTTONW,HLP_BUTTONH);
  29.  
  30. static struct Border HLPBorder[] =
  31. {
  32.       #define NEXTBORDER(n)     &HLPBorder[n+2]
  33.       #define BORDERNAME        HLPBorder
  34.    OUTBRDR(HLPB_PANEL, 0,0, HLPPanelBox),
  35.    INBRDR (HLPB_FRAME, HLP_FRAMEX,HLP_FRAMEY, HLPFrameBox),
  36.    INBRDR (HLPB_LIST,  HLP_LISTX,HLP_LISTY,   HLPListBox),
  37.    INBRDR (HLPB_NAME,  HLP_NAMEX,HLP_NAMEY,   HLPNameBox),
  38.       #undef  NEXTBORDER
  39.       #define NEXTBORDER(n)     NULL
  40.    OUTBRDR(HLPB_SLIDE, HLP_SLIDEX,HLP_SLIDEY, HLPSlideBox),
  41.    OUTBRDR(HLPB_BUTTON, 0,0, HLPButtonBox)
  42.       #undef NEXTBORDER
  43.       #undef BORDERNAME
  44. };
  45.  
  46. static struct Image HLPImage[] =
  47. {
  48.    IMAGE(-1,-1,HLP_NAMEW-2,HLP_NAMEH-2,BACKGROUND),
  49.    IMAGE(0,0,HLP_TITLEW,HLP_TITLEH,FOREGROUND),
  50.    IMAGE(0,0,0,0, FOREGROUND),
  51.    IMAGE(1,1,HLP_LISTW-2,LNAMEH,FOREGROUND),
  52.    IMAGE(1,1,HLP_LISTW-2,LNAMEH,TEXTSELECT),
  53.    IMAGE(HLP_SLIDEX+1,HLP_SLIDEY+1,HLP_SLIDEW-2,HLP_SLIDEH-2,BACKGROUND)
  54. };
  55.  
  56. static char Topics[7] = "Topics";
  57.  
  58. static struct IntuiText HLPText[] =
  59. {
  60.    ITEXT("Done",    11,2),
  61.    ITEXT("Help",    11,2),
  62.    ITEXT("Parent",   5,2),
  63.    ITEXT(&Topics[0], 5,2),
  64.    ITEXT("More",    11,2),
  65.    CTEXT(NULL,      30,1, TITLEPEN),
  66.    ITEXT("                                   ", 3,1),
  67.    ITEXT("                                   ", 3,11),
  68.    ITEXT("                                   ", 3,21),
  69.    ITEXT("                                   ", 3,31),
  70.    ITEXT("                                   ", 3,41),
  71.    ITEXT("                                   ", 3,51),
  72.    ITEXT("                                   ", 3,61),
  73.    ITEXT("                                   ", 3,71),
  74.    ITEXT("                                   ", 3,81),
  75.    ITEXT("                                   ", 3,91),
  76.    ITEXT("                                   ", 3,101),
  77.    ITEXT("                                   ", 3,111),
  78. };
  79.  
  80. char HlpNameBuf[MAXBUFFER];
  81. extern char UndoBuffer[];
  82.  
  83. static struct StringInfo HlpNameInfo =
  84.    {&HlpNameBuf[0], &UndoBuffer[0], 0,MAXBUFFER, 0, 0,0,0, 0,0, NULL, 0, NULL};
  85.  
  86. struct PropInfo HlpSlider =
  87.    {AUTOKNOB|FREEVERT|PROPBORDERLESS,0,0,0xFFFF,0xFFFF, 0,0,0,0,0,0};
  88.  
  89. extern struct ListInfo HlpListInfo;
  90.  
  91.  
  92. #define BUTTON(n,f)\
  93. {\
  94.    &HLPGadget[n+1], HLP_BUTTONX+HLP_BUTTONW*(n-HLP_DONE),HLP_BUTTONY,\
  95.    HLP_BUTTONW,HLP_BUTTONH, GADGHCOMP, (f)+RELVERIFY, BOOLGADGET| REQGADGET,\
  96.    (APTR)&HLPBorder[HLPB_BUTTON],NULL, &HLPText[n-HLP_DONE+HLPT_DONE], 0,\
  97.    NULL, n, NULL\
  98. }
  99.  
  100. #define LIST(n,x,y)\
  101. {\
  102.    &HLPGadget[n+1], x,y, HLP_LISTW,HLP_LISTH, GADGHNONE|GADGIMAGE,\
  103.    GADGIMMEDIATE, BOOLGADGET| REQGADGET, (APTR)&HLPImage[HLPI_BLANK],\
  104.    NULL, &HLPText[HLPT_LIST0], 0, NULL, n, (APTR)&HlpListInfo\
  105. }
  106.  
  107. #define NAME(n)\
  108. {\
  109.    &HLPGadget[n+1], HLP_NAMEX+2,HLP_NAMEY+2,HLP_NAMEW-4,HLP_NAMEH-4,\
  110.    GADGHCOMP|GADGIMAGE, GADGIMMEDIATE|RELVERIFY, STRGADGET|REQGADGET,\
  111.    (APTR)&HLPImage[HLPI_NAME], NULL, NULL, 0, (APTR)&HlpNameInfo, n,\
  112.    (APTR)&HlpListInfo\
  113. }
  114.  
  115. #define TITLE(n)\
  116. {\
  117.    &HLPGadget[n+1], HLP_TITLEX,HLP_TITLEY,0,0, GADGHNONE|GADGIMAGE, 0,\
  118.    BOOLGADGET|REQGADGET, (APTR)&HLPImage[HLPI_TITLE],\
  119.    NULL, &HLPText[HLPT_TITLE], 0, NULL, n, NULL\
  120. }
  121.  
  122. #define ARROW(n,x,y,im)\
  123. {\
  124.    &HLPGadget[n+1], x,y,SLIDEWH,SLIDEWH, GADGHCOMP|GADGIMAGE,\
  125.    GADGIMMEDIATE|RELVERIFY, BOOLGADGET|REQGADGET, (APTR)&cImage[im],\
  126.    NULL, NULL, NULL,NULL, n, (APTR)&HlpListInfo\
  127. }
  128.  
  129. #define SLIDER(n,x,y,w,h)\
  130. {\
  131.    &HLPGadget[n+1], x+2,y+2,w-4,h-4, GADGHCOMP|GADGIMAGE,\
  132.    GADGIMMEDIATE|RELVERIFY, PROPGADGET|REQGADGET, (APTR)&HLPImage[HLPI_SLIDE],\
  133.    NULL, NULL, NULL, (APTR)&HlpSlider, n, (APTR)&HlpListInfo\
  134. }
  135.  
  136. #define ENDLIST\
  137.    {NULL, 0,0,0,0, GADGHNONE|GADGIMAGE, 0, BOOLGADGET|REQGADGET,\
  138.    (APTR)&HLPImage[HLPI_BACK],NULL, NULL, NULL,NULL, HLP_IMGADG, NULL}
  139.  
  140.  
  141. static struct Gadget HLPGadget[] =
  142. {
  143.    BUTTON(HLP_DONE,0),
  144.    BUTTON(HLP_HELP,(TOGGLESELECT|GADGIMMEDIATE)-RELVERIFY),
  145.    BUTTON(HLP_PARENT,0),
  146.    BUTTON(HLP_TOPICS,0),
  147.    BUTTON(HLP_MORE,0),
  148.    LIST  (HLP_LIST,HLP_LISTX,HLP_LISTY),
  149.    NAME  (HLP_NAME),
  150.    SLIDER(HLP_SLIDE,HLP_SLIDEX,HLP_SLIDEY,HLP_SLIDEW,HLP_SLIDEH),
  151.    ARROW (HLP_UARROW,HLP_UARROWX,HLP_UARROWY,HLPI_UARROW),
  152.    ARROW (HLP_DARROW,HLP_DARROWX,HLP_DARROWY,HLPI_DARROW),
  153.    TITLE (HLP_TITLE),
  154.    ENDLIST
  155. };
  156.  
  157. struct ExtRequest HLPRequest =
  158. {
  159.    {NULL, 0,0, HLP_PANELW,HLP_PANELH, 0,0, &HLPGadget[0],
  160.    &HLPBorder[HLPB_PANEL], NULL, 0, FOREGROUND, NULL, NULL, NULL},
  161.    NULL,NULL,NULL, &HLPGadget[HLP_NAME],
  162. };
  163.  
  164. struct ListInfo HlpListInfo =
  165. {
  166.    &HLPRequest, &HLPGadget[HLP_LIST], &HLPGadget[HLP_NAME],
  167.    &HLPGadget[HLP_SLIDE], NULL, NULL, NULL, &HLPText[HLPT_LIST0],
  168.    &HLPImage[HLPI_BLANK], 12,35, 0,0, 0, 0, 0
  169. };
  170.  
  171.  
  172.  
  173. static short ABTPanelBox[]  = FBOX(ABT_PANELW,ABT_PANELH);
  174. static short ABTFrameBox[]  = FBOX(ABT_FRAMEW,ABT_FRAMEH);
  175. static short ABTButtonBox[] = FBOX(ABT_BUTTONW,ABT_BUTTONH);
  176.  
  177. static struct Border ABTBorder[] =
  178. {
  179.       #define NEXTBORDER(n)     &ABTBorder[n+2]
  180.       #define BORDERNAME        ABTBorder
  181.    OUTBRDR(ABTB_PANEL, 0,0, ABTPanelBox),
  182.       #undef  NEXTBORDER
  183.       #define NEXTBORDER(n)     NULL
  184.    INBRDR (ABTB_FRAME, ABT_FRAMEX,ABT_FRAMEY, ABTFrameBox),
  185.    OUTBRDR(ABTB_BUTTON, 0,0, ABTButtonBox)
  186. };
  187.  
  188. static struct Image DaveImage =
  189.    {0,0, ABT_DAVEW,ABT_DAVEH,2, &DaveData[0], 3,0, NULL};
  190.  
  191. static char AbtTitle[32];
  192. static char Free[25];
  193.  
  194. static struct IntuiText ABTText[] =
  195. {
  196.    ATEXT(ABTT_TITLE,    &AbtTitle[0], ABT_TITLEX,ABT_TITLEY, TITLEPEN),
  197.    ALINE(ABTT_COPYRT,   "Copyright (c) 1990"),
  198.    ALINE(ABTT_NAME,     "Davide P. Cervone"),
  199.    ALINE(ABTT_ADDR,     "50 Armstrong Avenue"),
  200.    ALINE(ABTT_CITY,     "Providence, RI 02903"),
  201.    ALAST(ABTT_FREE,     &Free[0], ABT_FREEX,ABT_FREEY, FREEPEN),
  202.    ALAST(ABTT_OK,       "OK", 7,3, TEXTPEN),
  203. };
  204.  
  205.  
  206. static struct Gadget ABTGadget[] =
  207. {
  208.    {&ABTGadget[1], ABT_BUTTONX,ABT_BUTTONY, ABT_BUTTONW,ABT_BUTTONH,
  209.       GADGHCOMP, RELVERIFY, BOOLGADGET|REQGADGET, (APTR)&ABTBorder[ABTB_BUTTON],
  210.       NULL, &ABTText[ABTT_OK], 0, NULL, ABT_OK, NULL},
  211.    {NULL, ABT_DAVEX, ABT_DAVEY, 0,0, GADGHNONE|GADGIMAGE, 0,
  212.       BOOLGADGET|REQGADGET, (APTR)&DaveImage, NULL,NULL, NULL,NULL,
  213.       ABT_DAVE, NULL}
  214. };
  215.  
  216. struct ExtRequest ABTRequest =
  217. {
  218.    {NULL, 0,0, ABT_PANELW,ABT_PANELH, 0,0, &ABTGadget[0],
  219.     &ABTBorder[ABTB_PANEL], &ABTText[ABTT_TITLE], 0, FOREGROUND,
  220.     NULL,NULL,NULL}, NULL,NULL,NULL, NULL,
  221. };
  222.  
  223.  
  224. /*
  225.  *  The main default HELP topic
  226.  */
  227.  
  228. #define HFIRST(i,s)   {NULL,&HelpLine[i+1],s,0,HLP_STATIC}
  229. #define HLINE(i,s)    {&HelpLine[i-1],&HelpLine[i+1],s,0,HLP_STATIC}
  230. #define HLAST(i,s)    {&HelpLine[i-1],NULL,s,0,HLP_STATIC}
  231.  
  232. static HELPLINE HelpLine[] =
  233. {
  234.    HFIRST(0,"Control Help with the buttons:"),
  235.    HLINE(1,""),
  236.    HLINE(2,"MORE    for the next page of text"),
  237.    HLINE(3,"TOPICS  for a list of sub-topics"),
  238.    HLINE(4,"PARENT  to go to the previous"),
  239.    HLINE(5,"          help topic level"),
  240.    HLINE(6,"HELP    to get this message"),
  241.    HLINE(7,"DONE    when you are all finished"),
  242.    HLINE(8,""),
  243.    HLINE(9,"The slider scrolls the text."),
  244.    HLINE(10,""),
  245.    HLINE(11,"           [Press MORE]"),
  246.    HLINE(12,"Double-Click on a topic to select"),
  247.    HLINE(13,"it, or type one in at the bottom"),
  248.    HLINE(14,"(prefix matching is performed)."),
  249.    HLINE(15,""),
  250.    HLINE(16,"Topics are in a hierarchy with"),
  251.    HLINE(17,"sub-topics nested to any depth."),
  252.    HLINE(18,""),
  253.    HLINE(19,"Use PARENT to go up a level, and"),
  254.    HLINE(20,"TOPICS to go down a level.  SHIFT"),
  255.    HLINE(21,"PARENT takes you to the top level."),
  256.    HLINE(22,""),
  257.    HLAST(23," [Press HELP when ready to go on]"),
  258. };
  259.  
  260. HELPITEM DefaultHelp =
  261. {
  262.    NULL,NULL, NULL,0, HLP_STATIC|HLP_LOADED, NULL, 0, NULL, &HelpLine[23],
  263.    "How to use HELP:", 0
  264. };
  265.