home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 5 / FreshFish_July-August1994.bin / bbs / util / yak-1.59.lha / Yak-1.59 / Src / misc_Window.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-05-26  |  10.9 KB  |  328 lines

  1.  
  2. /*
  3.  *  Source machine generated by GadToolsBox V2.0b
  4.  *  which is (c) Copyright 1991-1993 Jaba Development
  5.  *
  6.  *  GUI Designed by : Martin W Scott and GaĆ«l Marziou
  7.  */
  8.  
  9.  
  10.  
  11.  
  12. #include <exec/types.h>
  13. #include <intuition/intuition.h>
  14. #include <intuition/classes.h>
  15. #include <intuition/classusr.h>
  16. #include <intuition/imageclass.h>
  17. #include <intuition/gadgetclass.h>
  18. #include <intuition/intuitionbase.h>
  19. #include <libraries/gadtools.h>
  20. #include <graphics/displayinfo.h>
  21. #include <graphics/gfxbase.h>
  22. #include <proto/exec.h>
  23. #include <proto/intuition.h>
  24. #include <proto/gadtools.h>
  25. #include <proto/graphics.h>
  26. #include <proto/locale.h>
  27. #include <proto/utility.h>
  28. #include <string.h>
  29.  
  30.  
  31. #include "version.h"
  32. #include "hotkey_types.h"
  33. #include "yak.h"
  34. #include "gui.h"
  35.  
  36. #define CATCOMP_NUMBERS
  37. #include "locale/yak_locale_strings.h"
  38.  
  39. extern struct Catalog    *Catalog;
  40. extern struct DosLibrary *DOSBase;
  41.  
  42. extern LONG (*HandleIDCMP)(void);
  43.  
  44. struct Window   *MiscWnd = NULL;
  45. struct Gadget   *MiscGList = NULL;
  46. struct Gadget   *MiscGadgets[Misc_CNT];
  47. UWORD            MiscLeft = 0;
  48. UWORD            MiscWidth = 443;
  49. UWORD            MiscHeight = 92;
  50. UBYTE           *MiscWdt = NULL;
  51.  
  52.  
  53. UWORD MiscGTypes[] = {
  54.         INTEGER_KIND,
  55.         INTEGER_KIND,
  56.         BUTTON_KIND,
  57.         CHECKBOX_KIND,
  58.         CHECKBOX_KIND,
  59.         CHECKBOX_KIND
  60. };
  61.  
  62. struct NewGadget MiscNGad[] = {
  63.         240,4,60,14,NULL,NULL,GD_ClickVol         ,PLACETEXT_LEFT  ,NULL ,NULL,
  64.         240,18,60,14,NULL,NULL,GD_AutoPointDelay  ,PLACETEXT_LEFT  ,NULL ,NULL,
  65.         170,75,100,13,NULL,NULL,GD_Return2        ,PLACETEXT_IN    ,NULL ,NULL,
  66.         227,42,26,11,NULL,NULL,GD_BlackBorderCheck,PLACETEXT_RIGHT ,NULL ,NULL,
  67.           7,42,26,11,NULL,NULL,GD_WildStarCheck   ,PLACETEXT_RIGHT ,NULL ,NULL,
  68.           7,54,26,11,NULL,NULL,GD_NoClickCheck    ,PLACETEXT_RIGHT ,NULL ,NULL
  69. };
  70.  
  71. VOID InitMiscNGad (VOID)
  72. {
  73.         MiscNGad[GD_ClickVol].ng_GadgetText = getString(CLICKVOLUME_STRING);
  74.         MiscNGad[GD_AutoPointDelay].ng_GadgetText = getString(AUTOPOINT_DELAY_STRING);
  75.         MiscNGad[GD_Return2].ng_GadgetText = getString(OK_STRING);
  76.         MiscNGad[GD_BlackBorderCheck].ng_GadgetText = getString(BLACK_BORDER);
  77.         MiscNGad[GD_WildStarCheck].ng_GadgetText = getString(WILD_STAR_STRING);
  78.         MiscNGad[GD_NoClickCheck].ng_GadgetText = getString(NOCLICK_STRING);
  79. }
  80.  
  81.  
  82. ULONG MiscGTags[] = {
  83.         (GTIN_Number),0,(GTIN_MaxChars),4,(STRINGA_Justification),STRINGRIGHT,(TAG_DONE),
  84.         (GTIN_Number),0,(GTIN_MaxChars),4,(STRINGA_Justification),STRINGRIGHT,(TAG_DONE),
  85.         (TAG_DONE),
  86.         (GTCB_Scaled),TRUE,(TAG_DONE),
  87.         (GTCB_Scaled),TRUE,(TAG_DONE),
  88.         (GTCB_Scaled),TRUE,(TAG_DONE)
  89. };
  90.  
  91.  
  92.  
  93. VOID
  94. MiscRender()
  95. {
  96.     UWORD X,Width;
  97.  
  98.     ComputeFont(MiscWidth,MiscHeight);
  99.  
  100.     Width = ComputeX( 440 );
  101.     X = OffX + ComputeX( 2 ) ;
  102.  
  103.     DrawBevelBox( MiscWnd->RPort, X,
  104.                  OffY + ComputeY( 72 ),
  105.                  Width,
  106.                  ComputeY( 19 ),
  107.                  GT_VisualInfo, VisualInfo, TAG_DONE );
  108.     DrawBevelBox( MiscWnd->RPort,  X,
  109.                  OffY + ComputeY( 38 ),
  110.                  Width,
  111.                  ComputeY( 34 ),
  112.                  GT_VisualInfo, VisualInfo, TAG_DONE );
  113.     DrawBevelBox( MiscWnd->RPort, X,
  114.                  OffY + ComputeY( 1 ),
  115.                  Width,
  116.                  ComputeY( 37 ),
  117.                  GT_VisualInfo, VisualInfo, TAG_DONE );
  118. }
  119.  
  120.  
  121.  
  122.  
  123. int
  124. OpenMiscWindow()
  125. {
  126.         struct NewGadget        ng;
  127.         struct Gadget   *g;
  128.         UWORD           lc,tc;
  129.         UWORD           wleft = MiscLeft,wtop = WindowTop,ww,wh;
  130.  
  131.         ComputeFont(MiscWidth,MiscHeight);
  132.  
  133.         ww = ComputeX(MiscWidth);
  134.         wh = ComputeY(MiscHeight); 
  135.  
  136.         if ((wleft +ww +OffX +Scr->WBorRight) > Scr->Width) wleft = Scr->Width -ww;
  137.         if ((wtop +wh +OffY +Scr->WBorBottom) > Scr->Height) wtop = Scr->Height -wh;
  138.  
  139.         if (! (g = CreateContext(&MiscGList))) 
  140.         {
  141.                 return(1L);
  142.         }
  143.  
  144.         for(lc = 0,tc = 0; lc < Misc_CNT; lc++) 
  145.         {
  146.  
  147.                 CopyMem((char *)&MiscNGad[ lc ],(char *)&ng,(long)sizeof(struct NewGadget));
  148.  
  149.                 ng.ng_VisualInfo = VisualInfo;
  150.                 ng.ng_TextAttr   = Font;
  151.                 ng.ng_LeftEdge   = OffX +ComputeX(ng.ng_LeftEdge);
  152.                 ng.ng_TopEdge    = OffY +ComputeY(ng.ng_TopEdge);
  153.                 ng.ng_Width      = ComputeX(ng.ng_Width);
  154.                 ng.ng_Height     = ComputeY(ng.ng_Height);
  155.  
  156.                 MiscGadgets[ lc ] = g = CreateGadgetA((ULONG)MiscGTypes[ lc ],g,&ng,(struct TagItem *) &MiscGTags[ tc ]);
  157.  
  158.                 while(MiscGTags[ tc ]) tc += 2;
  159.                 tc++;
  160.  
  161.                 if (NOT g)
  162.                         return(2L);
  163.         }
  164.     if (NOT (MiscWnd = OpenWindowTags(NULL,
  165.                         WA_Left,         wleft,
  166.                         WA_Top,          wtop,
  167.                         WA_Width,        ww +OffX +Scr->WBorRight,
  168.                         WA_Height,       wh +OffY +Scr->WBorBottom,
  169.                         WA_IDCMP,        LISTVIEWIDCMP|STRINGIDCMP|CYCLEIDCMP|BUTTONIDCMP|IDCMP_CLOSEWINDOW|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW,
  170.                         WA_Flags,        WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH,
  171.                         WA_Gadgets,      MiscGList,
  172.                         WA_Title,        MiscWdt,
  173.                         WA_ScreenTitle,  getString(COPYRIGHT_STRING),
  174.                         WA_PubScreen,    TRUE,
  175.                         WA_PubScreenName,PubScreenName,
  176.                         TAG_DONE)))
  177.     return(4L);
  178.  
  179.     GT_RefreshWindow(MiscWnd,NULL);
  180.  
  181.     MiscRender();
  182.  
  183.     return(0L);
  184. }
  185.  
  186.  
  187.  
  188.  
  189.  
  190. VOID
  191. CloseMiscWindow()
  192. {
  193.     CloseOneWindow(MiscWnd,NULL,MiscGList);
  194.     MiscWnd = NULL;
  195. }
  196.  
  197.  
  198.  
  199. /* initialise all gadgets of Misc window */
  200. static void
  201. InitMiscGadgets(void)
  202. {
  203.         InitToggleGadgets(MISC_WINDOW);
  204.         InitWindowGadget(GDX_ClickVol, GTIN_Number, click_volume, MISC_WINDOW);
  205.         InitWindowGadget(GDX_AutoPointDelay, GTIN_Number, autopoint_delay, MISC_WINDOW);
  206. }
  207.  
  208.  
  209. /* handle Misc window events */
  210. LONG
  211. HandleMiscIDCMP(void)
  212. {
  213.         struct IntuiMessage *msg;
  214.         struct Gadget   *gadget;
  215.         ULONG           class;
  216.         UWORD           code;
  217.         LONG            num;
  218.  
  219.         while (msg = GT_GetIMsg(MiscWnd->UserPort))
  220.         {
  221.                 class = msg->Class;
  222.                 code = msg->Code;
  223.                 gadget = (struct Gadget *)msg->IAddress;
  224.                 GT_ReplyIMsg(msg);
  225.  
  226.                 switch (class)
  227.                 {
  228.                   case CLOSEWINDOW:
  229.                         HideInterface();
  230.                         return ROOT_OKAY;
  231.  
  232.                   case GADGETUP:
  233.                   case GADGETDOWN:
  234.                         switch (gadget->GadgetID)
  235.                         {
  236.                           case GD_Return2:
  237.                                 UpdateWindowsPosition();
  238.                                 CloseMiscWindow();
  239.                                 if (!ShowRootWindow())
  240.                                         PostError(getString(Couldnt_open_other_window_ERR));
  241.                                 return ROOT_OKAY;
  242.  
  243.                           case GD_ClickVol:
  244.                                 num = GetNumber(gadget);
  245.                                                                 if (num<0)
  246.                                                                 {
  247.                                                                         num = 0;
  248.                                                                 }
  249.                                                                 else
  250.                                                                 {
  251.                                                                         if (num>64)
  252.                                                                         {
  253.                                                                                 num = 64;
  254.                                                                         }
  255.                                                                 }
  256.                                                                 click_volume = num;
  257.                                                                 InitWindowGadget(GDX_ClickVol, GTIN_Number, click_volume, MISC_WINDOW);
  258.                                                                 break;
  259.  
  260.                           case GD_AutoPointDelay:
  261.                                 num = GetNumber(gadget);
  262.                                                                 if (num<0)
  263.                                                                 {
  264.                                                                         num = 0;
  265.                                                                 }
  266.                                                                 else
  267.                                                                 {
  268.                                                                         if (num>5)
  269.                                                                         {
  270.                                                                                 num = 5;
  271.                                                                         }
  272.                                                                 }
  273.                                                                 autopoint_delay = num;
  274.                                                                 InitWindowGadget(GDX_AutoPointDelay, GTIN_Number, autopoint_delay, MISC_WINDOW);
  275.                                 break;
  276.  
  277.                           case GD_BlackBorderCheck:
  278.                                 blackborder ^= TRUE;
  279.                                 ToggleBlackBorder(blackborder);
  280.                                 break;
  281.         
  282.                           case GD_WildStarCheck: /* toggle */
  283.                                 wildstar ^= TRUE;
  284.                                 if (wildstar) WILDSTARON; else WILDSTAROFF;
  285.                                 break;
  286.  
  287.  
  288.                           case GD_NoClickCheck: /* toggle */
  289.                                 noclick ^= TRUE;
  290.                                 SetClickDrive(noclick);
  291.                                 break;
  292.  
  293.                         }                                       /* switch (gadget->GadgetID) */
  294.                         break;
  295.  
  296.                   case REFRESHWINDOW:
  297.                         GT_BeginRefresh(MiscWnd);
  298.                         GT_EndRefresh(MiscWnd, TRUE);
  299.                         break;
  300.  
  301.                 }                                               /* switch (class) */
  302.  
  303.         }                                                       /* while more messages */
  304.  
  305.         return ROOT_OKAY;
  306. }
  307.         
  308.  
  309.  
  310.         
  311. /* show our misc window */
  312. BOOL
  313. ShowMiscWindow(void)
  314. {
  315.         if (!OpenMiscWindow())  /* like the name says... */
  316.         {
  317.                 InitMiscGadgets();
  318.                 wndsigflag = 1 << MiscWnd->UserPort->mp_SigBit;
  319.                 curwin = MiscWnd;
  320.                 HandleIDCMP = HandleMiscIDCMP;
  321.                 return TRUE;
  322.         }
  323.         CloseDownScreen();
  324.         return FALSE;
  325. }
  326.  
  327.  
  328.