home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 5 / FreshFish_July-August1994.bin / bbs / util / yak-1.59.lha / Yak-1.59 / Src / blank_window.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-06-06  |  8.3 KB  |  359 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 "yak.h"
  33. #include "gui.h"
  34.  
  35. #define CATCOMP_NUMBERS
  36. #include "locale/yak_locale_strings.h"
  37.  
  38.  
  39. extern struct Catalog    *Catalog;
  40.  
  41. extern LONG (*HandleIDCMP)(void);
  42.  
  43. struct Window   *BlankWnd = NULL;
  44. struct Gadget   *BlankGList = NULL;
  45. struct Gadget   *BlankGadgets[Blank_CNT];
  46. UWORD            BlankLeft = 0;
  47. UWORD            BlankWidth = 383;
  48. UWORD            BlankHeight = 105;
  49. UBYTE           *BlankWdt = NULL;
  50.  
  51. UBYTE *MBMethod0Labels[4];
  52.  
  53. VOID
  54. InitMBMethod0Labels()
  55. {
  56.     MBMethod0Labels[0] = getString(NONE_STRING);
  57.     MBMethod0Labels[1] = getString(SPRITES_STRING);
  58.     MBMethod0Labels[2] = getString(COPPER_STRING);
  59.     MBMethod0Labels[3] = NULL;
  60. }
  61.  
  62.  
  63. #define Blank_TNUM 1
  64.  
  65. struct IntuiText BlankIText[Blank_TNUM] = 
  66. {
  67.     2,0,JAM1,261,81,NULL,NULL,NULL 
  68. };
  69.  
  70.  
  71.  
  72. UWORD BlankGTypes[] = 
  73. {
  74.         INTEGER_KIND,
  75.         INTEGER_KIND,
  76.         CYCLE_KIND,
  77.         BUTTON_KIND,
  78.         CHECKBOX_KIND
  79. };
  80.  
  81.  
  82. struct NewGadget BlankNGad[] = 
  83. {
  84.         160,53,51,14,NULL,NULL,GD_ScrTONum       ,PLACETEXT_LEFT ,NULL ,NULL,
  85.         160,68,51,14,NULL,NULL,GD_MouseTONum     ,PLACETEXT_LEFT ,NULL ,NULL,
  86.         195,3,170,14,NULL,NULL,GD_MBMethod       ,PLACETEXT_LEFT ,NULL ,NULL,
  87.         140,88,100,13,NULL,NULL,GD_Return3       ,PLACETEXT_IN   ,NULL ,NULL,
  88.           7,19,26,11,NULL,NULL,GD_BlankMouseOnKey,PLACETEXT_RIGHT,NULL ,NULL
  89. };
  90.  
  91.  
  92. VOID InitBlankNGad (VOID)
  93. {
  94.         BlankNGad[GD_ScrTONum].ng_GadgetText   = getString(SCREENTIMEOUT_STRING);
  95.         BlankNGad[GD_MouseTONum].ng_GadgetText = getString(MOUSETIMEOUT_STRING);
  96.         BlankNGad[GD_MBMethod].ng_GadgetText   = getString(MOUSEBLANK_METHOD_STRING);
  97.         BlankNGad[GD_Return3].ng_GadgetText    = getString(OK_STRING);
  98.         BlankNGad[GD_BlankMouseOnKey].ng_GadgetText = getString(BlankMouseOnKey_STRING);
  99. }
  100.  
  101.  
  102.  
  103.  
  104. ULONG BlankGTags[] = 
  105. {
  106.         (GTIN_Number),0,(GTIN_MaxChars),4,(STRINGA_Justification),STRINGRIGHT,(TAG_DONE),
  107.         (GTIN_Number),0,(GTIN_MaxChars),4,(STRINGA_Justification),STRINGRIGHT,(TAG_DONE),
  108.         (GTCY_Labels),(ULONG)&MBMethod0Labels[ 0 ],(TAG_DONE),
  109.         (TAG_DONE),
  110.         (GTCB_Scaled),TRUE,(TAG_DONE),
  111. };
  112.  
  113.  
  114.  
  115. VOID
  116. BlankRender()
  117. {
  118.     UBYTE cnt;
  119.     UWORD X,Y, Width;
  120.  
  121.     ComputeFont(BlankWidth,BlankHeight);
  122.  
  123.     Width = ComputeX( 380 );
  124.     X = OffX +ComputeX(2);
  125.  
  126.     DrawBevelBox( BlankWnd->RPort, X, 
  127.                  OffY +ComputeY(85),
  128.                  Width,
  129.                  ComputeY( 19 ),
  130.                  GT_VisualInfo, VisualInfo, TAG_DONE );
  131.         
  132.     Y = OffY +ComputeY(35);
  133.  
  134.     BlankIText[ 0 ].LeftEdge  = X +5;
  135.     BlankIText[ 0 ].TopEdge   = Y +3;
  136.  
  137.     DrawBevelBox( BlankWnd->RPort, X, Y,
  138.                  Width,
  139.                  ComputeY( 50 ),
  140.                  GT_VisualInfo, VisualInfo, TAG_DONE );
  141.  
  142.     DrawBevelBox( BlankWnd->RPort, X,
  143.                  OffY + ComputeY( 1 ),
  144.                  Width,
  145.                  ComputeY( 34 ),
  146.                  GT_VisualInfo, VisualInfo, TAG_DONE );
  147.  
  148.     for (cnt = 0; cnt < Blank_TNUM; cnt++) 
  149.     {
  150.         BlankIText[ cnt ].ITextFont = Font;
  151.         PrintIText(BlankWnd->RPort,&BlankIText[ cnt ],0,0);    
  152.     }
  153. }
  154.  
  155.  
  156.  
  157. int
  158. OpenBlankWindow()
  159. {
  160.         struct NewGadget        ng;
  161.         struct Gadget   *g;
  162.         UWORD           lc,tc;
  163.         UWORD           wleft = BlankLeft,wtop = WindowTop,ww,wh;
  164.  
  165.         ComputeFont(BlankWidth,BlankHeight);
  166.  
  167.         ww = ComputeX(BlankWidth);
  168.         wh = ComputeY(BlankHeight);
  169.  
  170.         if ((wleft +ww +OffX +Scr->WBorRight) > Scr->Width) wleft = Scr->Width -ww;
  171.         if ((wtop +wh +OffY +Scr->WBorBottom) > Scr->Height) wtop = Scr->Height -wh;
  172.  
  173.         if (! (g = CreateContext(&BlankGList))) 
  174.         {
  175.                 return(1L);
  176.         }
  177.  
  178.         for(lc = 0,tc = 0; lc < Blank_CNT; lc++) 
  179.         {
  180.  
  181.                 CopyMem((char *)&BlankNGad[ lc ],(char *)&ng,(long)sizeof(struct NewGadget));
  182.  
  183.                 ng.ng_VisualInfo = VisualInfo;
  184.                 ng.ng_TextAttr   = Font;
  185.                 ng.ng_LeftEdge   = OffX +ComputeX(ng.ng_LeftEdge);
  186.                 ng.ng_TopEdge    = OffY +ComputeY(ng.ng_TopEdge);
  187.                 ng.ng_Width      = ComputeX(ng.ng_Width);
  188.                 ng.ng_Height     = ComputeY(ng.ng_Height);
  189.  
  190.                 BlankGadgets[ lc ] = g = CreateGadgetA((ULONG)BlankGTypes[ lc ],g,&ng,(struct TagItem *) &BlankGTags[ tc ]);
  191.  
  192.                 while(BlankGTags[ tc ]) 
  193.                         tc += 2;
  194.  
  195.                 tc++;
  196.  
  197.                 if (NOT g)
  198.                         return(2L);
  199.         }
  200.  
  201.     if (NOT (BlankWnd = OpenWindowTags(NULL,
  202.                         WA_Left,         wleft,
  203.                         WA_Top,          wtop,
  204.                         WA_Width,        ww +OffX +Scr->WBorRight,
  205.                         WA_Height,       wh +OffY +Scr->WBorBottom,
  206.                         WA_IDCMP,        LISTVIEWIDCMP|STRINGIDCMP|CYCLEIDCMP|BUTTONIDCMP|IDCMP_CLOSEWINDOW|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW,
  207.                         WA_Flags,        WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH,
  208.                         WA_Gadgets,      BlankGList,
  209.                         WA_Title,        BlankWdt,
  210.                         WA_ScreenTitle,  getString(COPYRIGHT_STRING),
  211.                         WA_PubScreen,    TRUE,
  212.                         WA_PubScreenName,PubScreenName,
  213.                         TAG_DONE)))
  214.     return(4L);
  215.  
  216.     GT_RefreshWindow(BlankWnd,NULL);
  217.  
  218.     BlankRender();
  219.  
  220.     return(0L);
  221. }
  222.  
  223.  
  224.  
  225. VOID
  226. CloseBlankWindow()
  227. {
  228.     CloseOneWindow(BlankWnd,NULL,BlankGList);
  229.     BlankWnd = NULL;
  230. }
  231.  
  232.  
  233.  
  234.  
  235.  
  236. /* initialise all gadgets of Blank window */
  237.  
  238. static void
  239. InitBlankGadgets(void)
  240. {
  241.         InitToggleGadgets(BLANK_WINDOW);
  242.  
  243.         InitWindowGadget(GDX_ScrTONum, GTIN_Number, blanksecs, BLANK_WINDOW);
  244.         InitWindowGadget(GDX_MouseTONum, GTIN_Number, mblanksecs, BLANK_WINDOW);
  245.         InitWindowGadget(GDX_MBMethod, GTCY_Active, mouseblank, BLANK_WINDOW);
  246. }
  247.  
  248.  
  249.  
  250.  
  251.  
  252. /* handle Blank window events */
  253. LONG
  254. HandleBlankIDCMP(void)
  255. {
  256.     struct IntuiMessage *msg;
  257.     struct Gadget   *gadget;
  258.     ULONG           class;
  259.     UWORD           code;
  260.     LONG            num;
  261.  
  262.     while (msg = GT_GetIMsg(BlankWnd->UserPort))
  263.     {
  264.         class = msg->Class;
  265.         code = msg->Code;
  266.         gadget = (struct Gadget *)msg->IAddress;
  267.         GT_ReplyIMsg(msg);
  268.  
  269.         switch (class)
  270.         {
  271.           case CLOSEWINDOW:
  272.             HideInterface();
  273.             return ROOT_OKAY;
  274.  
  275.           case GADGETUP:
  276.           case GADGETDOWN:
  277.             switch (gadget->GadgetID)
  278.             {
  279.               case GD_Return3:
  280.                 UpdateWindowsPosition();
  281.                 CloseBlankWindow();
  282.                 if (!ShowRootWindow())
  283.                     PostError(getString(Couldnt_open_other_window_ERR));
  284.                 return ROOT_OKAY;
  285.  
  286.         
  287.               case GD_MBMethod:
  288.                 mouseblank = code;
  289.                 mblankcount = mblanktimeout;
  290.                 break;
  291.  
  292.               case GD_ScrTONum:
  293.                 num = GetNumber(gadget);
  294.                 if (num >= 0) 
  295.                 {
  296.                     blanksecs = num;
  297.                     blankcount = blanktimeout = blanksecs*10;
  298.                 } 
  299.                 else 
  300.                 {
  301.                     InitWindowGadget(GDX_ScrTONum, GTIN_Number, blanksecs, ROOT_WINDOW);
  302.                     DisplayBeep(BlankWnd->WScreen);
  303.                 }
  304.                 break;
  305.  
  306.               case GD_MouseTONum:
  307.                 num = GetNumber(gadget);
  308.                 if (num >= 0) 
  309.                 {
  310.                     mblanksecs = num;
  311.                     mblankcount = mblanktimeout = mblanksecs*10;
  312.                 } 
  313.                 else 
  314.                 {
  315.                     InitWindowGadget(GDX_MouseTONum, GTIN_Number, mblanksecs, ROOT_WINDOW);
  316.                     DisplayBeep(BlankWnd->WScreen);
  317.                 }
  318.                 break;
  319.  
  320.  
  321.               case GD_BlankMouseOnKey:
  322.                 blankmouseonkey ^= TRUE;
  323.                 break;
  324.  
  325.             }                    /* switch (gadget->GadgetID) */
  326.             break;
  327.  
  328.           case REFRESHWINDOW:
  329.             GT_BeginRefresh(BlankWnd);
  330.             GT_EndRefresh(BlankWnd, TRUE);
  331.             break;
  332.  
  333.         }                        /* switch (class) */
  334.  
  335.     }                            /* while more messages */
  336.  
  337.     return ROOT_OKAY;
  338. }
  339.  
  340.  
  341.  
  342. /* show our blank window */
  343. BOOL
  344. ShowBlankWindow(void)
  345. {
  346.         if (!OpenBlankWindow()) /* like the name says... */
  347.         {
  348.                 InitBlankGadgets();
  349.                 wndsigflag = 1 << BlankWnd->UserPort->mp_SigBit;
  350.                 curwin = BlankWnd;
  351.                 HandleIDCMP = HandleBlankIDCMP;
  352.                 return TRUE;
  353.         }
  354.         CloseDownScreen();
  355.         return FALSE;
  356. }
  357.  
  358.  
  359.