home *** CD-ROM | disk | FTP | other *** search
/ Fish 'n' More 2 / fishmore-publicdomainlibraryvol.ii1991xetec.iso / dirs / rramdisk_451.lzh / 'Liner / Source / gadtools.c < prev    next >
C/C++ Source or Header  |  1991-02-06  |  3KB  |  156 lines

  1.  
  2. /*Source for gadtools.lib V0.20.*/
  3. /*Provides a library of routines to help with creating gadgets with*/
  4. /*gadtools.library*/
  5.  
  6. /*Kinds currently supported:*/
  7. /*BUTTON*/
  8. /*STRING*/
  9. /*CHECK*/
  10.  
  11. #include "graphics/displayinfo.h"
  12. #include "libraries/gadtools.h"
  13. #include <proto/gadtools.h>
  14.  
  15. /* Prototypes for functions defined in gadtools.c */
  16. struct Gadget *MakeButtonGadgets(struct Gadget *Header,
  17.                  struct NewGadget *Buttons,
  18.                  APTR VisInfo,
  19.                  struct TextAttr *Font,
  20.                  UWORD NumOfGadgets,
  21.                  UWORD Add);
  22. struct Gadget *MakeStringGadgets(struct Gadget *Header,
  23.                  struct NewGadget *New,
  24.                  APTR VisInfo,
  25.                  struct TextAttr *Font,
  26.                  UWORD NumOfGadgets,
  27.                  struct StrStrings *StrInfo,
  28.                  UWORD Add);
  29. struct Gadget *MakeCheckGadgets(struct Gadget *Header,
  30.                 struct NewGadget *New,
  31.                 APTR VisInfo,
  32.                 struct TextAttr *Font,
  33.                 UWORD NumOfGadgets,
  34.                 BOOL *States,
  35.                 UWORD Add);
  36.  
  37. struct TagItem StringTag[] =
  38. {
  39.    {GTST_String,NULL},
  40.    {GTST_MaxChars,79},
  41.    {TAG_DONE,NULL}
  42. };
  43.  
  44.  
  45. struct TagItem ButtonTag[] =
  46. {
  47.    {TAG_DONE,NULL}
  48. };
  49.  
  50. struct TagItem CheckTag[] =
  51. {
  52.    {GTCB_Checked,FALSE},
  53.    {TAG_DONE,NULL}
  54. };
  55.  
  56. struct Gadget *MakeButtonGadgets();
  57. struct Gadget *MakeStringGadgets();
  58. struct Gadget *MakeCheckGadgets();
  59.  
  60.  
  61. /*Create gadgets based on the NewGadget BUTTON_KIND*/
  62.  
  63. struct Gadget *MakeButtonGadgets(Header,Buttons,VisInfo,Font,NumOfGadgets,
  64.                  Add)
  65. struct Gadget *Header;
  66. struct NewGadget Buttons[];
  67. APTR VisInfo;
  68. struct TextAttr *Font;
  69. UWORD NumOfGadgets;
  70. UWORD Add;
  71. {
  72.    register UWORD gad;
  73.    register struct Gadget *Cur=(struct Gadget *)Header;
  74.  
  75.    for(gad=0;gad<NumOfGadgets;gad++)
  76.    {
  77.       Buttons[gad].ng_VisualInfo=(APTR)VisInfo;
  78.       Buttons[gad].ng_TextAttr=(struct TextAttr *)Font;
  79.       Buttons[gad].ng_TopEdge+=Add;
  80.       Cur=(struct Gadget *)CreateGadgetA(BUTTON_KIND,Cur,&Buttons[gad],
  81.                      ButtonTag);
  82.       Buttons[gad].ng_TopEdge-=Add;
  83.    }
  84.  
  85.    return(Cur);
  86. }
  87.  
  88. struct StrStrings
  89. {
  90.    char *String;
  91.    UWORD Length;
  92. };
  93.  
  94. /*Create gadgets based on the NewGadget STRING_KIND*/
  95.  
  96. struct Gadget *MakeStringGadgets(Header,New,VisInfo,Font,NumOfGadgets,
  97.                  StrInfo,Add)
  98. struct Gadget *Header;
  99. struct NewGadget New[];
  100. APTR VisInfo;
  101. struct TextAttr *Font;
  102. UWORD NumOfGadgets;
  103. struct StrStrings *StrInfo;
  104. UWORD Add;
  105. {
  106.    register UWORD gad;
  107.    register struct Gadget *Cur=(struct Gadget *)Header;
  108.  
  109.    for(gad=0;gad<NumOfGadgets;gad++)
  110.    {
  111.       New[gad].ng_VisualInfo=(APTR)VisInfo;
  112.       New[gad].ng_TextAttr=(struct TextAttr *)Font;
  113.       New[gad].ng_TopEdge+=Add;
  114.       StringTag[0].ti_Data=StrInfo[gad].String;
  115.       StringTag[1].ti_Data=StrInfo[gad].Length;
  116.       Cur=(struct Gadget *)CreateGadgetA(STRING_KIND,Cur,&New[gad],
  117.                      StringTag);
  118.       New[gad].ng_TopEdge-=Add;
  119.    }
  120.  
  121.    return(Cur);
  122. }
  123.  
  124.  
  125. /*Create gadgets based on the NewGadget CHECKBOX_KIND*/
  126.  
  127. struct Gadget *MakeCheckGadgets(Header,New,VisInfo,Font,NumOfGadgets,
  128.                 States,Add)
  129. struct Gadget *Header;
  130. struct NewGadget New[];
  131. APTR VisInfo;
  132. struct TextAttr *Font;
  133. UWORD NumOfGadgets;
  134. BOOL States[];
  135. UWORD Add;
  136. {
  137.    register UWORD gad;
  138.    register struct Gadget *Cur=(struct Gadget *)Header;
  139.  
  140.    for(gad=0;gad<NumOfGadgets;gad++)
  141.    {
  142.       New[gad].ng_VisualInfo=(APTR)VisInfo;
  143.       New[gad].ng_TextAttr=(struct TextAttr *)Font;
  144.       New[gad].ng_TopEdge+=Add;
  145.       CheckTag[0].ti_Data=States[gad];
  146.  
  147.       Cur=(struct Gadget *)CreateGadgetA(CHECKBOX_KIND,Cur,&New[gad],
  148.                      CheckTag);
  149.       New[gad].ng_TopEdge-=Add;
  150.    }
  151.  
  152.    return(Cur);
  153. }
  154.  
  155.  
  156.