home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 6 / FreshFish_September1994.bin / new / dev / c / hce / examples / amiga / pools / gadtools.c < prev    next >
C/C++ Source or Header  |  1992-09-02  |  14KB  |  537 lines

  1. /*
  2.  * Copyright (c) 1994. Author: Jason Petty.
  3.  *
  4.  * Permission is granted to anyone to use this software for any purpose
  5.  * on any computer system, and to redistribute it freely, with the
  6.  * following restrictions:
  7.  * 1) No charge may be made other than reasonable charges for reproduction.
  8.  * 2) Modified versions must be clearly marked as such.
  9.  * 3) The authors are not responsible for any harmful consequences
  10.  *    of using this software, even if they result from defects in it.
  11.  *
  12.  *
  13.  *     GadTools.c:
  14.  *
  15.  *     GadTool functions. (gadtools.library, V36 or higher)
  16.  */
  17.  
  18. #include <exec/types.h>
  19. #include <clib/stdio.h>
  20. #include <intuition/intuition.h>
  21. #include <libraries/gadtools.h>
  22.  
  23. #ifndef STRING_H
  24. #include <clib/string.h>
  25. #endif
  26.  
  27. #include "pools.h"
  28.  
  29. extern struct Screen *my_screen;   /* Screen all windows are attached to. */
  30. struct Gadget *gt_gadlist=0;       /* Head of leagues Gadget list.        */
  31. struct Gadget *sl_gadlist=0;       /* Head of choose league Gadget list.  */
  32. struct TagItem up_cycleTags1[2];
  33.  
  34. APTR gt_visual=0;                  /* Screen private data for GadTools.   */
  35.  
  36. char *CycleNames1[] = {"YES","NO", NULL}; /* Cycle gadget names. */
  37. char *CycleNames2[] = {"NO","YES", NULL};
  38. char *CycleNames3[] = {"ON","OFF", NULL};
  39. char *CycleNames4[] = {"OFF","ON", NULL};
  40. char *CycleNames5[] = {"32 BIT","16 BIT", NULL};
  41. char *CycleNames6[] = {"16 BIT","32 BIT", NULL};
  42.  
  43.  
  44. /* BUTTON GADGET FUNCTIONS. */
  45. struct Gadget *MakeButtonGad(name,prevGad,vis,lE,tE,w,h)
  46. UBYTE *name;
  47. struct Gadget *prevGad;
  48. APTR vis;
  49. WORD lE,tE,w,h;
  50. {
  51.  struct Gadget *mcgad;
  52.  chip struct NewGadget newGad;
  53.  
  54.      newGad.ng_LeftEdge = lE;
  55.      newGad.ng_TopEdge = tE;
  56.      newGad.ng_Width = w;
  57.      newGad.ng_Height = h;
  58.    if(name)
  59.      newGad.ng_GadgetText = (UBYTE *)name;
  60.    else
  61.      newGad.ng_GadgetText = NULL;
  62.      newGad.ng_TextAttr = NULL;
  63.      newGad.ng_GadgetID = 0L;
  64.      newGad.ng_Flags = PLACETEXT_IN|NG_HIGHLABEL;
  65.      newGad.ng_VisualInfo = vis;
  66.      newGad.ng_UserData = NULL;
  67.  
  68.    if(!(mcgad = (struct Gadget *)
  69.      CreateGadgetA(BUTTON_KIND,prevGad,&newGad,NULL))) /* No tags needed. */
  70.      return(NULL);
  71.  
  72.  return(mcgad);
  73. }
  74.  
  75. /* CYCLE GADGET FUNCTIONS. */
  76. void SetCycleTags(sc_tags,sc_type)   /* Set Tags for Cycle Gadget. */
  77. struct TagItem sc_tags[2];
  78. int sc_type;
  79. {
  80.    sc_tags[0].ti_Tag = GTCY_Labels;
  81.  
  82.    switch(sc_type)  /* Set cycle Messages. */
  83.     {
  84.       case YES_NO: sc_tags[0].ti_Data = (ULONG)CycleNames1;
  85.                    break;
  86.       case NO_YES: sc_tags[0].ti_Data = (ULONG)CycleNames2;
  87.                    break;
  88.       case ON_OFF: sc_tags[0].ti_Data = (ULONG)CycleNames3;
  89.                    break;
  90.       case OFF_ON: sc_tags[0].ti_Data = (ULONG)CycleNames4;
  91.                    break;
  92.       case BIT32_BIT16: sc_tags[0].ti_Data = (ULONG)CycleNames5;
  93.                    break;
  94.       case BIT16_BIT32: sc_tags[0].ti_Data = (ULONG)CycleNames6;
  95.                    break;
  96.       default:     sc_tags[0].ti_Data = (ULONG)CycleNames1;
  97.                    break;
  98.      }
  99.    sc_tags[1].ti_Tag = TAG_DONE;
  100.   sc_tags[1].ti_Data = TAG_DONE;
  101. }
  102.  
  103. struct Gadget *MakeCycleGad(name,prevGad,CTags,vis,lE,tE,w,h)
  104. UBYTE *name;
  105. struct Gadget *prevGad;
  106. struct TagItem CTags[2];
  107. APTR vis;
  108. WORD lE,tE,w,h;
  109. {
  110.  struct Gadget *mcgad;
  111.  struct NewGadget newGad;
  112.  
  113.      newGad.ng_LeftEdge = lE;
  114.      newGad.ng_TopEdge = tE;
  115.      newGad.ng_Width = w;
  116.      newGad.ng_Height = h;
  117.      newGad.ng_GadgetText = (UBYTE *)name;
  118.      newGad.ng_TextAttr = NULL;
  119.      newGad.ng_GadgetID = 0L;
  120.      newGad.ng_Flags = PLACETEXT_LEFT|NG_HIGHLABEL;
  121.      newGad.ng_VisualInfo = vis;
  122.      newGad.ng_UserData = NULL;
  123.  
  124.    if(!(mcgad = (struct Gadget *)
  125.      CreateGadgetA(CYCLE_KIND,prevGad,&newGad,CTags)))
  126.      return(NULL);
  127.  
  128.  return(mcgad);
  129. }
  130.  
  131.  
  132. /* STRING GADGET FUNCTIONS. */
  133. void SetStringTags(ss_tags,ss_msg,slen)   /* Set Tags for String Gadget. */
  134. struct TagItem ss_tags[3];
  135. char *ss_msg;
  136. int slen;
  137. {
  138.       ss_tags[0].ti_Tag = GTST_String;
  139.  
  140.    if(ss_msg)    /* If Gad message string exists, use it. */
  141.        ss_tags[0].ti_Data = (ULONG)ss_msg;
  142.      else
  143.        ss_tags[0].ti_Data = NULL;
  144.  
  145.       ss_tags[1].ti_Tag = GTST_MaxChars;
  146.     ss_tags[1].ti_Data = (ULONG)slen;   /* Max typed chars. */
  147.   ss_tags[2].ti_Tag = TAG_DONE;
  148. ss_tags[2].ti_Data = TAG_DONE;
  149. }
  150.  
  151. struct Gadget *MakeStringGad(name,prevGad,CTags,vis,lE,tE,w,h)
  152. UBYTE *name;
  153. struct Gadget *prevGad;
  154. struct TagItem CTags[3];
  155. APTR vis;
  156. WORD lE,tE,w,h;
  157. {
  158.  struct Gadget *mcgad;
  159.  struct NewGadget newGad;
  160.  
  161.      newGad.ng_LeftEdge = lE;
  162.      newGad.ng_TopEdge = tE;
  163.      newGad.ng_Width = w;
  164.      newGad.ng_Height = h;
  165.      newGad.ng_GadgetText = (UBYTE *)name;
  166.      newGad.ng_TextAttr = NULL;
  167.      newGad.ng_GadgetID = 0L;
  168.      newGad.ng_Flags = PLACETEXT_LEFT|NG_HIGHLABEL;
  169.      newGad.ng_VisualInfo = vis;
  170.      newGad.ng_UserData = NULL;
  171.  
  172.    if(!(mcgad = (struct Gadget *)
  173.      CreateGadgetA(STRING_KIND,prevGad,&newGad,CTags)))
  174.      return(NULL);
  175.  
  176.  return(mcgad);
  177. }
  178.  
  179.  
  180. /* INTEGER GADGET FUNCTIONS. */
  181. struct Gadget *MakeIntegerGad(name,prevGad,vis,lE,tE,w,h)
  182. UBYTE *name;
  183. struct Gadget *prevGad;
  184. APTR vis;
  185. WORD lE,tE,w,h;
  186. {
  187.  struct Gadget *mcgad;
  188.  struct NewGadget newGad;
  189.  
  190.      newGad.ng_LeftEdge = lE;
  191.      newGad.ng_TopEdge = tE;
  192.      newGad.ng_Width = w;
  193.      newGad.ng_Height = h;
  194.    if(name)
  195.      newGad.ng_GadgetText = (UBYTE *)name;
  196.    else
  197.      newGad.ng_GadgetText = NULL;
  198.      newGad.ng_TextAttr = NULL;
  199.      newGad.ng_GadgetID = 0L;
  200.      newGad.ng_Flags = PLACETEXT_LEFT;
  201.      newGad.ng_VisualInfo = vis;
  202.      newGad.ng_UserData = NULL;
  203.  
  204.    if(!(mcgad = (struct Gadget *)
  205.      CreateGadgetA(INTEGER_KIND,prevGad,&newGad,NULL))) /* No tags needed. */
  206.      return(NULL);
  207.  
  208.  return(mcgad);
  209. }
  210.  
  211. int Alloc_VisualInfoA() /* Get visual info for gadtools. */
  212. {
  213.   if(!(gt_visual = (APTR)GetVisualInfoA(my_screen, NULL)))
  214.       return(NULL);
  215.   return(1);
  216. }
  217.  
  218. void Free_VisualInfo() /* Free memory allocated with Alloc_VisualInfoA(). */
  219. {                      /* NOTE: call just before CloseScreen(). */
  220.   if(gt_visual)
  221.    FreeVisualInfo(gt_visual);
  222. }
  223.  
  224.  
  225. /* MOST FUNCTIONS FROM HERE ON ,USE THE ABOVE FUNCTIONS!!. */
  226. int Alloc_L_Gadgets()    /* Allocate LEAGUE window gadgets. */
  227. {
  228.   struct Gadget *prevGad;
  229.   struct Gadget *nextGad;
  230.   int inn = INN_X;       /* Left row gads start x.  */
  231.   int mid = MID_X;       /* Middle row gads start x.*/
  232.   int out = OUT_X;       /* Right row gads start x. */
  233.   int t = TOP_Y;         /* Start y for all gads.   */
  234.   int g = GAP_Y;         /* Gap between gads in y direction. */
  235.   int h = WID_Y;         /* Height of each gad.     */
  236.  
  237. /* MAKE CONTEXT GADGET. */
  238.  if(!(prevGad = (struct Gadget *)CreateContext(>_gadlist)))
  239.         return(NULL);
  240.  
  241. /* BUTTON GAD 1. */
  242.  if(!(nextGad = MakeButtonGad((UBYTE *)"1",
  243.      prevGad,gt_visual,inn,t,24,h)))
  244.      {
  245.        return(NULL);
  246.       }
  247. /* BUTTON GAD 2. */
  248.  if(!(prevGad = MakeButtonGad((UBYTE *)"2",
  249.      nextGad,gt_visual,mid,t,24,h)))
  250.      {
  251.        return(NULL);
  252.       }
  253. /* BUTTON GAD 3. */
  254.  if(!(nextGad = MakeButtonGad((UBYTE *)"3",
  255.      prevGad,gt_visual,out,t,24,h)))
  256.      {
  257.        return(NULL);
  258.       }
  259. /* BUTTON GAD 4. */
  260.  if(!(prevGad = MakeButtonGad((UBYTE *)"4",
  261.      nextGad,gt_visual,inn,t+h+g,24,h)))
  262.      {
  263.        return(NULL);
  264.       }
  265. /* BUTTON GAD 5. */
  266.  if(!(nextGad = MakeButtonGad((UBYTE *)"5",
  267.      prevGad,gt_visual,mid,t+h+g,24,h)))
  268.      {
  269.        return(NULL);
  270.       }
  271. /* BUTTON GAD 6. */
  272.  if(!(prevGad = MakeButtonGad((UBYTE *)"6",
  273.      nextGad,gt_visual,out,t+h+g,24,h)))
  274.      {
  275.        return(NULL);
  276.       }
  277. /* BUTTON GAD 7. */
  278.  if(!(nextGad = MakeButtonGad((UBYTE *)"7",
  279.      prevGad,gt_visual,inn,t+((h+g)*2),24,h)))
  280.      {
  281.        return(NULL);
  282.       }
  283. /* BUTTON GAD 8. */
  284.  if(!(prevGad = MakeButtonGad((UBYTE *)"8",
  285.      nextGad,gt_visual,mid,t+((h+g)*2),24,h)))
  286.      {
  287.        return(NULL);
  288.       }
  289. /* BUTTON GAD 9. */
  290.  if(!(nextGad = MakeButtonGad((UBYTE *)"9",
  291.      prevGad,gt_visual,out,t+((h+g)*2),24,h)))
  292.      {
  293.        return(NULL);
  294.       }
  295. /* BUTTON GAD 10. */
  296.  if(!(prevGad = MakeButtonGad((UBYTE *)"10",
  297.      nextGad,gt_visual,inn,t+((h+g)*3),24,h)))
  298.      {
  299.        return(NULL);
  300.       }
  301. /* BUTTON GAD 11. */
  302.  if(!(nextGad = MakeButtonGad((UBYTE *)"11",
  303.      prevGad,gt_visual,mid,t+((h+g)*3),24,h)))
  304.      {
  305.        return(NUL