home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Commodities / Watcher / Sources / Sources.lha / WatcherPrefs / WatcherPrefs.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-05-06  |  15.2 KB  |  454 lines

  1. /*
  2.  *  Source machine generated by GadToolsBox V2.0b
  3.  *  which is (c) Copyright 1991-1993 Jaba Development
  4.  *
  5.  *  GUI Designed by : Franz Hemmer
  6.  */
  7.  
  8. #include <exec/types.h>
  9. #include <intuition/intuition.h>
  10. #include <intuition/classes.h>
  11. #include <intuition/classusr.h>
  12. #include <intuition/imageclass.h>
  13. #include <intuition/gadgetclass.h>
  14. #include <libraries/gadtools.h>
  15. #include <graphics/displayinfo.h>
  16. #include <graphics/gfxbase.h>
  17. #include <clib/exec_protos.h>
  18. #include <clib/intuition_protos.h>
  19. #include <clib/gadtools_protos.h>
  20. #include <clib/graphics_protos.h>
  21. #include <clib/utility_protos.h>
  22. #include <string.h>
  23. #include <clib/diskfont_protos.h>
  24.  
  25. #include <pragmas/exec_pragmas.h>
  26. #include <pragmas/intuition_pragmas.h>
  27. #include <pragmas/gadtools_pragmas.h>
  28. #include <pragmas/graphics_pragmas.h>
  29. #include <pragmas/utility_pragmas.h>
  30.  
  31. #include "WatcherPrefs.h"
  32.  
  33. struct Screen         *Scr = NULL;
  34. UBYTE                 *PubScreenName = NULL;
  35. APTR                   VisualInfo = NULL;
  36. struct Window         *WatcherPrefsWnd = NULL;
  37. struct Gadget         *WatcherPrefsGList = NULL;
  38. struct Menu           *WatcherPrefsMenus = NULL;
  39. struct IntuiMessage    WatcherPrefsMsg;
  40. struct Gadget         *WatcherPrefsGadgets[32];
  41. extern Class          *initGet( void );
  42. struct IClass         *getClass = NULL;
  43. struct _Object        *getImage = NULL;
  44. UWORD                  WatcherPrefsLeft = 0;
  45. UWORD                  WatcherPrefsTop = 11;
  46. UWORD                  WatcherPrefsWidth = 621;
  47. UWORD                  WatcherPrefsHeight = 224;
  48. UBYTE                 *WatcherPrefsWdt = (UBYTE *)"Watcher Preferences";
  49. struct TextAttr       *Font, Attr;
  50. UWORD                  FontX, FontY;
  51. UWORD                  OffX, OffY;
  52. struct TextFont       *WatcherPrefsFont = NULL;
  53.  
  54. UBYTE *DATE_FORMAT0Labels[] = {
  55.     (UBYTE *)"dd-mm-yy",
  56.     (UBYTE *)"dd/mm/yy",
  57.     (UBYTE *)"mm-dd-yy",
  58.     (UBYTE *)"mm/dd/yy",
  59.     NULL };
  60.  
  61. extern struct MinList LANGUAGE0List;
  62.  
  63. struct Node LANGUAGE0Nodes[] = {
  64.     &LANGUAGE0Nodes[1], ( struct Node * )&LANGUAGE0List.mlh_Head, 0, 0, "dansk",
  65.     &LANGUAGE0Nodes[2], &LANGUAGE0Nodes[0], 0, 0, "english",
  66.     ( struct Node * )&LANGUAGE0List.mlh_Tail, &LANGUAGE0Nodes[1], 0, 0, "internal" };
  67.  
  68. struct MinList LANGUAGE0List = {
  69.     ( struct MinNode * )&LANGUAGE0Nodes[0], ( struct MinNode * )NULL, ( struct MinNode * )&LANGUAGE0Nodes[2] };
  70.  
  71. struct IntuiText WatcherPrefsIText[] = {
  72.     2, 0, JAM1,307, 8, NULL, (UBYTE *)"- Watcher Preferences Options -", NULL };
  73.  
  74. #define WatcherPrefs_TNUM 1
  75.  
  76. struct NewMenu WatcherPrefsNewMenu[] = {
  77.     NM_TITLE, (STRPTR)"Project", NULL, 0, NULL, NULL,
  78.     NM_ITEM, (STRPTR)"Open", (STRPTR)"O", 0, 0L, (APTR)WatcherPrefsItem0,
  79.     NM_ITEM, (STRPTR)"Save as...", (STRPTR)"A", 0, 0L, (APTR)WatcherPrefsItem1,
  80.     NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
  81.     NM_ITEM, (STRPTR)"Quit", (STRPTR)"Q", 0, 0L, (APTR)WatcherPrefsItem2,
  82.     NM_TITLE, (STRPTR)"Edit", NULL, 0, NULL, NULL,
  83.     NM_ITEM, (STRPTR)"Reset to defaults", (STRPTR)"D", 0, 0L, (APTR)WatcherPrefsItem3,
  84.     NM_ITEM, (STRPTR)"Last Saved", (STRPTR)"L", 0, 0L, (APTR)WatcherPrefsItem4,
  85.     NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
  86.     NM_ITEM, (STRPTR)"Restore", (STRPTR)"R", 0, 0L, (APTR)WatcherPrefsItem5,
  87.     NM_TITLE, (STRPTR)"Settings", NULL, 0, NULL, NULL,
  88.     NM_ITEM, (STRPTR)"Create Icons", (STRPTR)"I", CHECKIT|CHECKED|MENUTOGGLE, 0L, (APTR)WatcherPrefsItem6,
  89.     NM_END, NULL, NULL, 0, 0L, NULL };
  90.  
  91. UWORD WatcherPrefsGTypes[] = {
  92.     STRING_KIND,
  93.     CHECKBOX_KIND,
  94.     CHECKBOX_KIND,
  95.     CHECKBOX_KIND,
  96.     CHECKBOX_KIND,
  97.     CHECKBOX_KIND,
  98.     CHECKBOX_KIND,
  99.     CHECKBOX_KIND,
  100.     CHECKBOX_KIND,
  101.     CHECKBOX_KIND,
  102.     INTEGER_KIND,
  103.     INTEGER_KIND,
  104.     INTEGER_KIND,
  105.     INTEGER_KIND,
  106.     INTEGER_KIND,
  107.     CHECKBOX_KIND,
  108.     CHECKBOX_KIND,
  109.     STRING_KIND,
  110.     STRING_KIND,
  111.     CHECKBOX_KIND,
  112.     STRING_KIND,
  113.     STRING_KIND,
  114.     BUTTON_KIND,
  115.     BUTTON_KIND,
  116.     BUTTON_KIND,
  117.     GENERIC_KIND,
  118.     CHECKBOX_KIND,
  119.     INTEGER_KIND,
  120.     INTEGER_KIND,
  121.     LISTVIEW_KIND,
  122.     CHECKBOX_KIND,
  123.     CYCLE_KIND
  124. };
  125.  
  126. struct NewGadget WatcherPrefsNGad[] = {
  127.     82, 20, 185, 14, (UBYTE *)"Volumes:", NULL, GD_VOLUMES, PLACETEXT_LEFT, NULL, (APTR)VOLUMESClicked,
  128.     430, 73, 26, 11, (UBYTE *)"Total Memory:", NULL, GD_TOTAL, PLACETEXT_LEFT, NULL, (APTR)TOTALClicked,
  129.     430, 62, 26, 11, (UBYTE *)"Fast Memory:", NULL, GD_FAST, PLACETEXT_LEFT, NULL, (APTR)FASTClicked,
  130.     430, 51, 26, 11, (UBYTE *)"Chip Memory:", NULL, GD_CHIP, PLACETEXT_LEFT, NULL, (APTR)CHIPClicked,
  131.     430, 40, 26, 11, (UBYTE *)"Largest Mem. Block:", NULL, GD_LARGEST, PLACETEXT_LEFT, NULL, (APTR)LARGESTClicked,
  132.     430, 29, 26, 11, (UBYTE *)"Largest Fast Block:", NULL, GD_LARGESTFAST, PLACETEXT_LEFT, NULL, (APTR)LARGESTFASTClicked,
  133.     430, 18, 26, 11, (UBYTE *)"Largest Chip Block:", NULL, GD_LARGESTCHIP, PLACETEXT_LEFT, NULL, (APTR)LARGESTCHIPClicked,
  134.     461, 73, 26, 11, (UBYTE *)":Day of week", NULL, GD_DAYOFWEEK, PLACETEXT_RIGHT, NULL, (APTR)DAYOFWEEKClicked,
  135.     461, 62, 26, 11, (UBYTE *)":Date", NULL, GD_DATE, PLACETEXT_RIGHT, NULL, (APTR)DATEClicked,
  136.     461, 51, 26, 11, (UBYTE *)":Time", NULL, GD_TIME, PLACETEXT_RIGHT, NULL, (APTR)TIMEClicked,
  137.     217, 35, 49, 14, (UBYTE *)"Window LeftEdge:", NULL, GD_WINLEFTEDGE, PLACETEXT_LEFT, NULL, (APTR)WINLEFTEDGEClicked,
  138.     217, 50, 49, 14, (UBYTE *)"Window TopEdge:", NULL, GD_WINTOPEDGE, PLACETEXT_LEFT, NULL, (APTR)WINTOPEDGEClicked,
  139.     217, 65, 49, 14, (UBYTE *)"Window Width:", NULL, GD_WINWIDTH, PLACETEXT_LEFT, NULL, (APTR)WINWIDTHClicked,
  140.     217, 80, 49, 14, (UBYTE *)"Update rate sec.:", NULL, GD_UPDATESEC, PLACETEXT_LEFT, NULL, (APTR)UPDATESECClicked,
  141.     217, 95, 49, 14, (UBYTE *)"Update rate mic.:", NULL, GD_UPDATEMIC, PLACETEXT_LEFT, NULL, (APTR)UPDATEMICClicked,
  142.     461, 40, 26, 11, (UBYTE *)":No Jump Gadget", NULL, GD_NOJUMPGADGET, PLACETEXT_RIGHT, NULL, (APTR)NOJUMPGADGETClicked,
  143.     461, 29, 26, 11, (UBYTE *)":CPU load", NULL, GD_CPU, PLACETEXT_RIGHT, NULL, (APTR)CPUClicked,
  144.     135, 110, 131, 14, (UBYTE *)"Public Screen:", NULL, GD_PUBLICSCREEN, PLACETEXT_LEFT, NULL, (APTR)PUBLICSCREENClicked,
  145.     135, 125, 131, 14, (UBYTE *)"Guide file:", NULL, GD_GUIDEFILE, PLACETEXT_LEFT, NULL, (APTR)GUIDEFILEClicked,
  146.     461, 18, 26, 11, (UBYTE *)":Vol. Free Dir.", NULL, GD_VOLUMEFREEDIRECTION, PLACETEXT_RIGHT, NULL, (APTR)VOLUMEFREEDIRECTIONClicked,
  147.     219, 140, 47, 14, (UBYTE *)"Volume Free Indicators", NULL, GD_VOLUMEFREEDIRECTIONINDICATORS, PLACETEXT_LEFT, NULL, (APTR)VOLUMEFREEDIRECTIONINDICATORSClicked,
  148.     135, 155, 131, 14, (UBYTE *)"Volume Alert:", NULL, GD_VOLUMALERT, PLACETEXT_LEFT, NULL, (APTR)VOLUMALERTClicked,
  149.     4, 206, 91, 15, (UBYTE *)"_Save", NULL, GD_SAVE, PLACETEXT_IN, NULL, (APTR)SAVEClicked,
  150.     266, 206, 91, 15, (UBYTE *)"_Use", NULL, GD_USE, PLACETEXT_IN, NULL, (APTR)USEClicked,
  151.     526, 206, 91, 15, (UBYTE *)"_Cancel", NULL, GD_CANCEL, PLACETEXT_IN, NULL, (APTR)CANCELClicked,
  152.     267, 125, 20, 14, NULL, NULL, GD_GUIDEFILEGET, 0, NULL, (APTR)GUIDEFILEGETClicked,
  153.     430, 84, 26, 11, (UBYTE *)"App Info autostart:", NULL, GD_APPINFOAUTOSTART, PLACETEXT_LEFT, NULL, (APTR)APPINFOAUTOSTARTClicked,
  154.     217, 169, 49, 14, (UBYTE *)"App Info Left Edge:", NULL, GD_APPINFOLEFTEDGE, PLACETEXT_LEFT, NULL, (APTR)APPINFOLEFTEDGEClicked,
  155.     217, 183, 49, 14, (UBYTE *)"App Info Top Edge:", NULL, GD_APPINFOTOPEDGE, PLACETEXT_LEFT, NULL, (APTR)APPINFOTOPEDGEClicked,
  156.     461, 95, 151, 80, (UBYTE *)"Language", NULL, GD_LANGUAGE, PLACETEXT_BELOW, NULL, (APTR)LANGUAGEClicked,
  157.     461, 84, 26, 11, (UBYTE *)":24 hour clock", NULL, GD_TIME_FORMAT, PLACETEXT_RIGHT, NULL, (APTR)TIME_FORMATClicked,
  158.     356, 95, 100, 14, (UBYTE *)"Date F.:", NULL, GD_DATE_FORMAT, PLACETEXT_LEFT, NULL, (APTR)DATE_FORMATClicked
  159. };
  160.  
  161. ULONG WatcherPrefsGTags[] = {
  162.     (STRINGA_ExitHelp), TRUE, (GTST_MaxChars), 256, (TAG_DONE),
  163.     (TAG_DONE),
  164.     (TAG_DONE),
  165.     (TAG_DONE),
  166.     (TAG_DONE),
  167.     (GT_Underscore), '_', (TAG_DONE),
  168.     (TAG_DONE),
  169.     (TAG_DONE),
  170.     (TAG_DONE),
  171.     (TAG_DONE),
  172.     (STRINGA_ExitHelp), TRUE, (GTIN_Number), 0, (GTIN_MaxChars), 4, (GT_Underscore), '_', (TAG_DONE),
  173.     (STRINGA_ExitHelp), TRUE, (GTIN_Number), 0, (GTIN_MaxChars), 4, (GT_Underscore), '_', (TAG_DONE),
  174.     (STRINGA_ExitHelp), TRUE, (GTIN_Number), 0, (GTIN_MaxChars), 4, (GT_Underscore), '_', (TAG_DONE),
  175.     (STRINGA_ExitHelp), TRUE, (GTIN_Number), 0, (GTIN_MaxChars), 10, (GT_Underscore), '_', (TAG_DONE),
  176.     (STRINGA_ExitHelp), TRUE, (GTIN_Number), 0, (GTIN_MaxChars), 10, (GT_Underscore), '_', (TAG_DONE),
  177.     (TAG_DONE),
  178.     (TAG_DONE),
  179.     (STRINGA_ExitHelp), TRUE, (GTST_MaxChars), 80, (TAG_DONE),
  180.     (STRINGA_ExitHelp), TRUE, (GTST_MaxChars), 256, (TAG_DONE),
  181.     (TAG_DONE),
  182.     (STRINGA_ExitHelp), TRUE, (GTST_MaxChars), 4, (GA_Disabled), TRUE, (TAG_DONE),
  183.     (STRINGA_ExitHelp), TRUE, (GTST_MaxChars), 256, (TAG_DONE),
  184.     (GT_Underscore), '_', (TAG_DONE),
  185.     (GT_Underscore), '_', (TAG_DONE),
  186.     (GT_Underscore), '_', (TAG_DONE),
  187.     (TAG_DONE),
  188.     (TAG_DONE),
  189.     (STRINGA_ExitHelp), TRUE, (GTIN_Number), 0, (GTIN_MaxChars), 4, (GT_Underscore), '_', (TAG_DONE),
  190.     (STRINGA_ExitHelp), TRUE, (GTIN_Number), 0, (GTIN_MaxChars), 4, (GT_Underscore), '_', (TAG_DONE),
  191.     (GTLV_Labels), (ULONG)&LANGUAGE0List, (GTLV_ShowSelected), NULL, (TAG_DONE),
  192.     (TAG_DONE),
  193.     (GTCY_Labels), (ULONG)&DATE_FORMAT0Labels[ 0 ], (TAG_DONE)
  194. };
  195.  
  196. static UWORD ComputeX( UWORD value )
  197. {
  198.     return(( UWORD )((( FontX * value ) + 4 ) / 8 ));
  199. }
  200.  
  201. static UWORD ComputeY( UWORD value )
  202. {
  203.     return(( UWORD )((( FontY * value ) + 4 ) / 8 ));
  204. }
  205.  
  206. static void ComputeFont( UWORD width, UWORD height )
  207. {
  208.     Forbid();
  209.     Font = &Attr;
  210.     Font->ta_Name = (STRPTR)GfxBase->DefaultFont->tf_Message.mn_Node.ln_Name;
  211.     Font->ta_YSize = FontY = GfxBase->DefaultFont->tf_YSize;
  212.     FontX = GfxBase->DefaultFont->tf_XSize;
  213.     Permit();
  214.  
  215.     OffX = Scr->WBorLeft;
  216.     OffY = Scr->RastPort.TxHeight + Scr->WBorTop + 1;
  217.  
  218.     if ( width && height ) {
  219.         if (( ComputeX( width ) + OffX + Scr->WBorRight ) > Scr->Width )
  220.             goto UseTopaz;
  221.         if (( ComputeY( height ) + OffY + Scr->WBorBottom ) > Scr->Height )
  222.             goto UseTopaz;
  223.     }
  224.     return;
  225.  
  226. UseTopaz:
  227.     Font->ta_Name = (STRPTR)"topaz.font";
  228.     FontX = FontY = Font->ta_YSize = 8;
  229. }
  230.  
  231. int SetupScreen( void )
  232. {
  233.     if ( ! ( Scr = LockPubScreen( PubScreenName )))
  234.         return( 1L );
  235.  
  236.     ComputeFont( 0, 0 );
  237.  
  238.     if ( ! ( VisualInfo = GetVisualInfo( Scr, TAG_DONE )))
  239.         return( 2L );
  240.  
  241.     if ( ! ( getClass = initGet()))
  242.         return( 3L );
  243.  
  244.     if ( ! ( getImage = NewObject( getClass, NULL, GT_VisualInfo, VisualInfo, TAG_DONE )))
  245.         return( 4L );
  246.  
  247.     return( 0L );
  248. }
  249.  
  250. void CloseDownScreen( void )
  251. {
  252.     if ( getImage   ) {
  253.         DisposeObject( getImage );
  254.         getImage = NULL;
  255.     }
  256.  
  257.     if ( getClass   ) {
  258.         FreeClass( getClass );
  259.         getClass = NULL;
  260.     }
  261.  
  262.     if ( VisualInfo ) {
  263.         FreeVisualInfo( VisualInfo );
  264.         VisualInfo = NULL;
  265.     }
  266.  
  267.     if ( Scr        ) {
  268.         UnlockPubScreen( NULL, Scr );
  269.         Scr = NULL;
  270.     }
  271. }
  272.  
  273. void WatcherPrefsRender( void )
  274. {
  275.     struct IntuiText    it;
  276.     UWORD            cnt;
  277.  
  278.     ComputeFont( WatcherPrefsWidth, WatcherPrefsHeight );
  279.  
  280.     DrawBevelBox( WatcherPrefsWnd->RPort, OffX + ComputeX( 4 ),
  281.                     OffY + ComputeY( 15 ),
  282.                     ComputeX( 613 ),
  283.                     ComputeY( 187 ),
  284.                     GT_VisualInfo, VisualInfo, GTBB_Recessed, TRUE, TAG_DONE );
  285.  
  286.     for ( cnt = 0; cnt < WatcherPrefs_TNUM; cnt++ ) {
  287.         CopyMem(( char * )&WatcherPrefsIText[ cnt ], ( char * )&it, (long)sizeof( struct IntuiText ));
  288.         it.ITextFont = Font;
  289.         it.LeftEdge  = OffX + ComputeX( it.LeftEdge ) - ( IntuiTextLength( &it ) >> 1 );
  290.         it.TopEdge   = OffY + ComputeY( it.TopEdge ) - ( Font->ta_YSize >> 1 );
  291.         PrintIText( WatcherPrefsWnd->RPort, &it, 0, 0 );
  292.     }
  293. }
  294.  
  295. int HandleWatcherPrefsIDCMP( void )
  296. {
  297.     struct IntuiMessage    *m;
  298.     struct MenuItem        *n;
  299.     int            (*func)();
  300.     BOOL            running = TRUE;
  301.  
  302.     while( m = GT_GetIMsg( WatcherPrefsWnd->UserPort )) {
  303.  
  304.         CopyMem(( char * )m, ( char * )&WatcherPrefsMsg, (long)sizeof( struct IntuiMessage ));
  305.  
  306.         GT_ReplyIMsg( m );
  307.  
  308.         switch ( WatcherPrefsMsg.Class ) {
  309.  
  310.             case    IDCMP_REFRESHWINDOW:
  311.                 GT_BeginRefresh( WatcherPrefsWnd );
  312.                 WatcherPrefsRender();
  313.                 GT_EndRefresh( WatcherPrefsWnd, TRUE );
  314.                 break;
  315.  
  316.             case    IDCMP_CLOSEWINDOW:
  317.                 running = WatcherPrefsCloseWindow();
  318.                 break;
  319.  
  320.             case    IDCMP_MENUHELP:
  321.                 running = WatcherPrefsMenuHelp();
  322.                 break;
  323.  
  324.             case    IDCMP_VANILLAKEY:
  325.                 running = WatcherPrefsVanillaKey();
  326.                 break;
  327.  
  328.             case    IDCMP_RAWKEY:
  329.                 running = WatcherPrefsRawKey();
  330.                 break;
  331.  
  332.             case    IDCMP_GADGETUP:
  333.             case    IDCMP_GADGETDOWN:
  334.                 func = ( void * )(( struct Gadget * )WatcherPrefsMsg.IAddress )->UserData;
  335.                 running = func();
  336.                 break;
  337.  
  338.             case    IDCMP_MENUPICK:
  339.                 while( WatcherPrefsMsg.Code != MENUNULL ) {
  340.                     n = ItemAddress( WatcherPrefsMenus, WatcherPrefsMsg.Code );
  341.                     func = (void *)(GTMENUITEM_USERDATA( n ));
  342.                     running = func();
  343.                     WatcherPrefsMsg.Code = n->NextSelect;
  344.                 }
  345.                 break;
  346.         }
  347.     }
  348.     return( running );
  349. }
  350.  
  351. int OpenWatcherPrefsWindow( void )
  352. {
  353.     struct NewGadget    ng;
  354.     struct Gadget    *g;
  355.     UWORD        lc, tc;
  356.     UWORD        wleft = WatcherPrefsLeft, wtop = WatcherPrefsTop, ww, wh;
  357.  
  358.     ComputeFont( WatcherPrefsWidth, WatcherPrefsHeight );
  359.  
  360.     ww = ComputeX( WatcherPrefsWidth );
  361.     wh = ComputeY( WatcherPrefsHeight );
  362.  
  363.     if (( wleft + ww + OffX + Scr->WBorRight ) > Scr->Width ) wleft = Scr->Width - ww;
  364.     if (( wtop + wh + OffY + Scr->WBorBottom ) > Scr->Height ) wtop = Scr->Height - wh;
  365.  
  366.     if ( ! ( WatcherPrefsFont = OpenDiskFont( Font )))
  367.         return( 5L );
  368.  
  369.     if ( ! ( g = CreateContext( &WatcherPrefsGList )))
  370.         return( 1L );
  371.  
  372.     for( lc = 0, tc = 0; lc < WatcherPrefs_CNT; lc++ ) {
  373.  
  374.         CopyMem((char * )&WatcherPrefsNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
  375.  
  376.         ng.ng_VisualInfo = VisualInfo;
  377.         ng.ng_TextAttr   = Font;
  378.         ng.ng_LeftEdge   = OffX + ComputeX( ng.ng_LeftEdge );
  379.         ng.ng_TopEdge    = OffY + ComputeY( ng.ng_TopEdge );
  380.  
  381.         if ( WatcherPrefsGTypes[ lc ] != GENERIC_KIND ) {
  382.             ng.ng_Width      = ComputeX( ng.ng_Width );
  383.             ng.ng_Height     = ComputeY( ng.ng_Height);
  384.         }
  385.  
  386.         WatcherPrefsGadgets[ lc ] = g = CreateGadgetA((ULONG)WatcherPrefsGTypes[ lc ], g, &ng, ( struct TagItem * )&WatcherPrefsGTags[ tc ] );
  387.  
  388.         if ( WatcherPrefsGTypes[ lc ] == GENERIC_KIND ) {
  389.             g->Flags             |= GFLG_GADGIMAGE | GFLG_GADGHIMAGE;
  390.             g->Activation        |= GACT_RELVERIFY;
  391.             g->GadgetRender       = (APTR)getImage;
  392.             g->SelectRender       = (APTR)getImage;
  393.         }
  394.  
  395.         while( WatcherPrefsGTags[ tc ] ) tc += 2;
  396.         tc++;
  397.  
  398.         if ( NOT g )
  399.             return( 2L );
  400.     }
  401.  
  402.     if ( ! ( WatcherPrefsMenus = CreateMenus( WatcherPrefsNewMenu, GTMN_FrontPen, 0L, GTMN_NewLookMenus, TRUE, TAG_DONE )))
  403.         return( 3L );
  404.  
  405.     LayoutMenus( WatcherPrefsMenus, VisualInfo, GTMN_NewLookMenus, TRUE, TAG_DONE );
  406.  
  407.     if ( ! ( WatcherPrefsWnd = OpenWindowTags( NULL,
  408.                 WA_Left,    wleft,
  409.                 WA_Top,        wtop,
  410.                 WA_Width,    ww + OffX + Scr->WBorRight,
  411.                 WA_Height,    wh + OffY + Scr->WBorBottom,
  412.                 WA_IDCMP,    STRINGIDCMP|CHECKBOXIDCMP|INTEGERIDCMP|BUTTONIDCMP|IDCMP_GADGETUP|LISTVIEWIDCMP|CYCLEIDCMP|IDCMP_MENUPICK|IDCMP_CLOSEWINDOW|IDCMP_RAWKEY|IDCMP_VANILLAKEY|IDCMP_MENUHELP|IDCMP_REFRESHWINDOW,
  413.                 WA_Flags,    WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_SMART_REFRESH|WFLG_SIMPLE_REFRESH|WFLG_ACTIVATE,
  414.                 WA_Gadgets,    WatcherPrefsGList,
  415.                 WA_Title,    WatcherPrefsWdt,
  416.                 WA_ScreenTitle,    "©HemSoft Developments 1993",
  417.                 WA_PubScreen,    Scr,
  418.                 WA_NewLookMenus, TRUE,
  419.                 WA_MenuHelp, TRUE,
  420.                 TAG_DONE )))
  421.     return( 4L );
  422.  
  423.     SetMenuStrip( WatcherPrefsWnd, WatcherPrefsMenus );
  424.     GT_RefreshWindow( WatcherPrefsWnd, NULL );
  425.  
  426.     WatcherPrefsRender();
  427.  
  428.     return( 0L );
  429. }
  430.  
  431. void CloseWatcherPrefsWindow( void )
  432. {
  433.     if ( WatcherPrefsMenus      ) {
  434.         ClearMenuStrip( WatcherPrefsWnd );
  435.         FreeMenus( WatcherPrefsMenus );
  436.         WatcherPrefsMenus = NULL;    }
  437.  
  438.     if ( WatcherPrefsWnd        ) {
  439.         CloseWindow( WatcherPrefsWnd );
  440.         WatcherPrefsWnd = NULL;
  441.     }
  442.  
  443.     if ( WatcherPrefsGList      ) {
  444.         FreeGadgets( WatcherPrefsGList );
  445.         WatcherPrefsGList = NULL;
  446.     }
  447.  
  448.     if ( WatcherPrefsFont ) {
  449.         CloseFont( WatcherPrefsFont );
  450.         WatcherPrefsFont = NULL;
  451.     }
  452. }
  453.  
  454.