home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Amiga Shareware Floppies / ma15.dms / ma15.adf / Yak / Source / popup.c < prev    next >
C/C++ Source or Header  |  1993-05-17  |  15KB  |  468 lines

  1. /*
  2.  *  Source machine generated by GadToolsBox V2.0b
  3.  *  which is (c) Copyright 1991-1993 Jaba Development
  4.  *
  5.  *  GUI Designed by : Martin W Scott
  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 <pragmas/exec_pragmas.h>
  24. #include <pragmas/intuition_pragmas.h>
  25. #include <pragmas/gadtools_pragmas.h>
  26. #include <pragmas/graphics_pragmas.h>
  27. #include <pragmas/utility_pragmas.h>
  28.  
  29. #include "popup.h"
  30. #include "popup_fix.h"  /**** ADDED */
  31.  
  32. struct Screen         *Scr = NULL;
  33. UBYTE                 *PubScreenName = "Workbench";
  34. APTR                   VisualInfo = NULL;
  35. struct Window         *HelpWnd = NULL;
  36. struct Window         *HotKeyWnd = NULL;
  37. struct Gadget         *HelpGList = NULL;
  38. struct Gadget         *HotKeyGList = NULL;
  39. struct Menu           *HelpMenus = NULL;
  40. UWORD                  HelpZoom[4];
  41. struct Gadget         *HelpGadgets[20];
  42. struct Gadget         *HotKeyGadgets[8];
  43. UWORD                  HelpLeft = 0;
  44. UWORD                  HelpTop = 11;
  45. UWORD                  HelpWidth = 542;
  46. UWORD                  HelpHeight = 166;
  47. UWORD                  HotKeyLeft = 0;
  48. UWORD                  HotKeyTop = 11;
  49. UWORD                  HotKeyWidth = 455;
  50. UWORD                  HotKeyHeight = 150;
  51. UBYTE                 *HelpWdt = NULL;
  52. UBYTE                 *HotKeyWdt = (UBYTE *)"Hotkey Definitions";
  53. struct TextAttr       *Font, Attr;
  54. UWORD                  FontX, FontY;
  55. UWORD                  OffX, OffY;
  56.  
  57. UBYTE *MBMethod0Labels[] = {
  58.     (UBYTE *)"None",
  59.     (UBYTE *)"Sprites",
  60.     (UBYTE *)"Copper",
  61.     NULL };
  62.  
  63. UBYTE *Options1Labels[] = {
  64.     (UBYTE *)"No Screen Change",
  65.     (UBYTE *)"Workbench to Front",
  66.     (UBYTE *)"Default PubScr to Front",
  67.     NULL };
  68.  
  69. extern struct MinList Actions1List;
  70.  
  71. struct Node Actions1Nodes[] = {
  72.     &Actions1Nodes[1], ( struct Node * )&Actions1List.mlh_Head, 0, 0, "Dos Command",
  73.     &Actions1Nodes[2], &Actions1Nodes[0], 0, 0, "Close Window",
  74.     &Actions1Nodes[3], &Actions1Nodes[1], 0, 0, "Zip Window",
  75.     &Actions1Nodes[4], &Actions1Nodes[2], 0, 0, "Shrink Window",
  76.     &Actions1Nodes[5], &Actions1Nodes[3], 0, 0, "Expand Window",
  77.     &Actions1Nodes[6], &Actions1Nodes[4], 0, 0, "Cycle Windows",
  78.     &Actions1Nodes[7], &Actions1Nodes[5], 0, 0, "Open Palette",
  79.     &Actions1Nodes[8], &Actions1Nodes[6], 0, 0, "Screen to Front",
  80.     &Actions1Nodes[9], &Actions1Nodes[7], 0, 0, "Screen to Back",
  81.     &Actions1Nodes[10], &Actions1Nodes[8], 0, 0, "Activate Workbench",
  82.     &Actions1Nodes[11], &Actions1Nodes[9], 0, 0, "Centre Screen",
  83.     &Actions1Nodes[12], &Actions1Nodes[10], 0, 0, "Blank Display",
  84.     &Actions1Nodes[13], &Actions1Nodes[11], 0, 0, "Insert Text",
  85.     &Actions1Nodes[14], &Actions1Nodes[12], 0, 0, "Insert Date",
  86.     ( struct Node * )&Actions1List.mlh_Tail, &Actions1Nodes[13], 0, 0, "Show Yak Interface" };
  87.  
  88. struct MinList Actions1List = {
  89.     ( struct MinNode * )&Actions1Nodes[0], ( struct MinNode * )NULL, ( struct MinNode * )&Actions1Nodes[14] };
  90.  
  91. struct IntuiText HelpIText[] = {
  92.     2, 0, JAM1,175, 13, NULL, (UBYTE *)"Toggles", NULL,
  93.     2, 0, JAM1,168, 97, NULL, (UBYTE *)"Inclusion Patterns", NULL,
  94.     2, 0, JAM1,439, 13, NULL, (UBYTE *)"Miscellaneous", NULL };
  95.  
  96. #define Help_TNUM 3
  97.  
  98. struct NewMenu HelpNewMenu[] = {
  99.     NM_TITLE, (STRPTR)"Project", NULL, 0, NULL, NULL,
  100.     NM_ITEM, (STRPTR)"Load Settings", (STRPTR)"L", 0, 0L, NULL,
  101.     NM_ITEM, (STRPTR)"Save Settings", (STRPTR)"S", 0, 0L, NULL,
  102.     NM_ITEM, (STRPTR)"Hide Window", (STRPTR)"H", 0, 0L, NULL,
  103.     NM_ITEM, (STRPTR)"Quit", (STRPTR)"Q", 0, 0L, NULL,
  104.     NM_END, NULL, NULL, 0, 0L, NULL };
  105.  
  106. UWORD HelpGTypes[] = {
  107.     BUTTON_KIND,
  108.     BUTTON_KIND,
  109.     CHECKBOX_KIND,
  110.     CHECKBOX_KIND,
  111.     CHECKBOX_KIND,
  112.     CHECKBOX_KIND,
  113.     CHECKBOX_KIND,
  114.     CHECKBOX_KIND,
  115.     CHECKBOX_KIND,
  116.     CHECKBOX_KIND,
  117.     CYCLE_KIND,
  118.     CHECKBOX_KIND,
  119.     BUTTON_KIND,
  120.     STRING_KIND,
  121.     STRING_KIND,
  122.     STRING_KIND,
  123.     STRING_KIND,
  124.     INTEGER_KIND,
  125.     INTEGER_KIND,
  126.     INTEGER_KIND
  127. };
  128.  
  129. UWORD HotKeyGTypes[] = {
  130.     LISTVIEW_KIND,
  131.     LISTVIEW_KIND,
  132.     STRING_KIND,
  133.     STRING_KIND,
  134.     CYCLE_KIND,
  135.     BUTTON_KIND,
  136.     BUTTON_KIND,
  137.     BUTTON_KIND
  138. };
  139.  
  140. struct NewGadget HelpNGad[] = {
  141.     361, 144, 85, 19, (UBYTE *)"Hide", NULL, GD_Hide, PLACETEXT_IN, NULL, NULL,
  142.     451, 144, 85, 19, (UBYTE *)"Quit", NULL, GD_Quit, PLACETEXT_IN, NULL, NULL,
  143.     19, 23, 26, 11, (UBYTE *)"AutoPoint", NULL, GD_AutoCheck, PLACETEXT_RIGHT, NULL, NULL,
  144.     190, 23, 26, 11, (UBYTE *)"Key Activate", NULL, GD_KeyActCheck, PLACETEXT_RIGHT, NULL, NULL,
  145.     19, 56, 26, 11, (UBYTE *)"Click To Front", NULL, GD_CTFCheck, PLACETEXT_RIGHT, NULL, NULL,
  146.     19, 67, 26, 11, (UBYTE *)"Click To Back", NULL, GD_CTBCheck, PLACETEXT_RIGHT, NULL, NULL,
  147.     190, 34, 26, 11, (UBYTE *)"Screen To Back", NULL, GD_ScrCycleCheck, PLACETEXT_RIGHT, NULL, NULL,
  148.     190, 56, 26, 11, (UBYTE *)"Wild star", NULL, GD_WildStarCheck, PLACETEXT_RIGHT, NULL, NULL,
  149.     190, 45, 26, 11, (UBYTE *)"Screen Activate", NULL, GD_ScrActCheck, PLACETEXT_RIGHT, NULL, NULL,
  150.     19, 34, 26, 11, (UBYTE *)"AutoPopToFront", NULL, GD_AutoPopCheck, PLACETEXT_RIGHT, NULL, NULL,
  151.     382, 90, 133, 17, (UBYTE *)"MouseBlank Method", NULL, GD_MBMethod, PLACETEXT_ABOVE, NULL, NULL,
  152.     19, 45, 26, 11, (UBYTE *)"RMB Activate", NULL, GD_RMBActCheck, PLACETEXT_RIGHT, NULL, NULL,
  153.     361, 117, 175, 24, (UBYTE *)"Edit Hotkeys...", NULL, GD_EditHotkeys, PLACETEXT_IN, NULL, NULL,
  154.     129, 107, 215, 12, (UBYTE *)"AutoScreens", NULL, GD_AutoPat, PLACETEXT_LEFT, NULL, NULL,
  155.     129, 120, 215, 12, (UBYTE *)"ClickScreens", NULL, GD_ClickPat, PLACETEXT_LEFT, NULL, NULL,
  156.     129, 133, 215, 12, (UBYTE *)"PopWindows", NULL, GD_PopPat, PLACETEXT_LEFT, NULL, NULL,
  157.     129, 146, 215, 12, (UBYTE *)"ClickWindows", NULL, GD_ClickWinPat, PLACETEXT_LEFT, NULL, NULL,
  158.     481, 29, 44, 12, (UBYTE *)"ClickVolume", NULL, GD_ClickVol, PLACETEXT_LEFT, NULL, NULL,
  159.     481, 42, 44, 12, (UBYTE *)"ScreenTimeOut", NULL, GD_ScrTONum, PLACETEXT_LEFT, NULL, NULL,
  160.     481, 55, 44, 12, (UBYTE *)"MouseTimeOut", NULL, GD_MouseTONum, PLACETEXT_LEFT, NULL, NULL
  161. };
  162.  
  163. struct NewGadget HotKeyNGad[] = {
  164.     225, 19, 214, 64, (UBYTE *)"_HotKeys", NULL, GD_Hotkeys, PLACETEXT_ABOVE|NG_HIGHLABEL, NULL, NULL,
  165.     16, 19, 189, 88, (UBYTE *)"A_ctions", NULL, GD_Actions, PLACETEXT_ABOVE|NG_HIGHLABEL, NULL, NULL,
  166.     225, 80, 214, 13, NULL, NULL, GD_HKStr, 0, NULL, NULL,
  167.     96, 117, 223, 13, (UBYTE *)"Argumen_t", NULL, GD_Argument, PLACETEXT_LEFT, NULL, NULL,
  168.     96, 131, 223, 13, (UBYTE *)"_Options", NULL, GD_Options, PLACETEXT_LEFT, NULL, NULL,
  169.     225, 94, 106, 13, (UBYTE *)"_Add", NULL, GD_Add, PLACETEXT_IN, NULL, NULL,
  170.     333, 94, 106, 13, (UBYTE *)"_Delete", NULL, GD_Delete, PLACETEXT_IN, NULL, NULL,
  171.     339, 117, 100, 27, (UBYTE *)"_Return...", NULL, GD_Return, PLACETEXT_IN, NULL, NULL
  172. };
  173.  
  174. ULONG HelpGTags[] = {
  175.     (TAG_DONE),
  176.     (TAG_DONE),
  177.     (TAG_DONE),
  178.     (TAG_DONE),
  179.     (TAG_DONE),
  180.     (TAG_DONE),
  181.     (TAG_DONE),
  182.     (TAG_DONE),
  183.     (TAG_DONE),
  184.     (TAG_DONE),
  185.     (GTCY_Labels), (ULONG)&MBMethod0Labels[ 0 ], (TAG_DONE),
  186.     (TAG_DONE),
  187.     (TAG_DONE),
  188.     (GTST_MaxChars), 99, (TAG_DONE),
  189.     (GTST_MaxChars), 99, (TAG_DONE),
  190.     (GTST_MaxChars), 99, (TAG_DONE),
  191.     (GTST_MaxChars), 99, (TAG_DONE),
  192.     (GTIN_Number), 0, (GTIN_MaxChars), 4, (TAG_DONE),
  193.     (GTIN_Number), 0, (GTIN_MaxChars), 4, (TAG_DONE),
  194.     (GTIN_Number), 0, (GTIN_MaxChars), 4, (TAG_DONE)
  195. };
  196.  
  197. ULONG HotKeyGTags[] = {
  198.     (GT_Underscore), '_', (TAG_DONE),
  199.     (GTLV_Labels), (ULONG)&Actions1List, (GTLV_ShowSelected), NULL, (GT_Underscore), '_', (TAG_DONE),
  200.     (GTST_MaxChars), 256, (TAG_DONE),
  201.     (GTST_MaxChars), 512, (GT_Underscore), '_', (TAG_DONE),
  202.     (GTCY_Labels), (ULONG)&Options1Labels[ 0 ], (GT_Underscore), '_', (TAG_DONE),
  203.     (GT_Underscore), '_', (TAG_DONE),
  204.     (GT_Underscore), '_', (TAG_DONE),
  205.     (GT_Underscore), '_', (TAG_DONE)
  206. };
  207.  
  208. static UWORD ComputeX( UWORD value )
  209. {
  210.     return(( UWORD )((( FontX * value ) + 4 ) / 8 ));
  211. }
  212.  
  213. static UWORD ComputeY( UWORD value )
  214. {
  215.     return(( UWORD )((( FontY * value ) + 4 ) / 8 ));
  216. }
  217.  
  218. static void ComputeFont( UWORD width, UWORD height )
  219. {
  220.     Font = &Attr;
  221.     Font->ta_Name = (STRPTR)Scr->RastPort.Font->tf_Message.mn_Node.ln_Name;
  222.     Font->ta_YSize = FontY = Scr->RastPort.Font->tf_YSize;
  223. /****    FontX = Scr->RastPort.Font->tf_XSize; */
  224. /**** ADDED NEXT LINE */
  225.     FontX = CalcFontX();
  226.  
  227.     OffX = Scr->WBorLeft;
  228.     OffY = Scr->RastPort.TxHeight + Scr->WBorTop + 1;
  229.  
  230.     if ( width && height ) {
  231.         if (( ComputeX( width ) + OffX + Scr->WBorRight ) > Scr->Width )
  232.             goto UseTopaz;
  233.         if (( ComputeY( height ) + OffY + Scr->WBorBottom ) > Scr->Height )
  234.             goto UseTopaz;
  235.     }
  236.     return;
  237.  
  238. UseTopaz:
  239.     Font->ta_Name = (STRPTR)"topaz.font";
  240.     FontX = FontY = Font->ta_YSize = 8;
  241. }
  242.  
  243. int SetupScreen( void )
  244. {
  245.     if ( ! ( Scr = LockPubScreen( PubScreenName )))
  246.         return( 1L );
  247.  
  248.     ComputeFont( 0, 0 );
  249.  
  250.     if ( ! ( VisualInfo = GetVisualInfo( Scr, TAG_DONE )))
  251.         return( 2L );
  252.  
  253.     return( 0L );
  254. }
  255.  
  256. void CloseDownScreen( void )
  257. {
  258.     if ( VisualInfo ) {
  259.         FreeVisualInfo( VisualInfo );
  260.         VisualInfo = NULL;
  261.     }
  262.  
  263.     if ( Scr        ) {
  264.         UnlockPubScreen( NULL, Scr );
  265.         Scr = NULL;
  266.     }
  267. }
  268.  
  269. void HelpRender( void )
  270. {
  271.     struct IntuiText    it;
  272.     UWORD            cnt;
  273.  
  274.     ComputeFont( HelpWidth, HelpHeight );
  275.  
  276.     DrawBevelBox( HelpWnd->RPort, OffX + ComputeX( 361 ),
  277.                     OffY + ComputeY( 2 ),
  278.                     ComputeX( 175 ),
  279.                     ComputeY( 112 ),
  280.                     GT_VisualInfo, VisualInfo, TAG_DONE );
  281.     DrawBevelBox( HelpWnd->RPort, OffX + ComputeX( 5 ),
  282.                     OffY + ComputeY( 86 ),
  283.                     ComputeX( 350 ),
  284.                     ComputeY( 77 ),
  285.                     GT_VisualInfo, VisualInfo, TAG_DONE );
  286.     DrawBevelBox( HelpWnd->RPort, OffX + ComputeX( 5 ),
  287.                     OffY + ComputeY( 2 ),
  288.                     ComputeX( 350 ),
  289.                     ComputeY( 81 ),
  290.                     GT_VisualInfo, VisualInfo, TAG_DONE );
  291.  
  292.     for ( cnt = 0; cnt < Help_TNUM; cnt++ ) {
  293.         CopyMem(( char * )&HelpIText[ cnt ], ( char * )&it, (long)sizeof( struct IntuiText ));
  294.         it.ITextFont = Font;
  295.         it.LeftEdge  = OffX + ComputeX( it.LeftEdge ) - ( IntuiTextLength( &it ) >> 1 );
  296.         it.TopEdge   = OffY + ComputeY( it.TopEdge ) - ( Font->ta_YSize >> 1 );
  297.         PrintIText( HelpWnd->RPort, &it, 0, 0 );
  298.     }
  299. }
  300.  
  301. int OpenHelpWindow( void )
  302. {
  303.     struct NewGadget    ng;
  304.     struct Gadget    *g;
  305.     UWORD        lc, tc;
  306.     UWORD        wleft = HelpLeft, wtop = HelpTop, ww, wh;
  307.  
  308.     ComputeFont( HelpWidth, HelpHeight );
  309.  
  310.     ww = ComputeX( HelpWidth );
  311.     wh = ComputeY( HelpHeight );
  312.  
  313.     if (( wleft + ww + OffX + Scr->WBorRight ) > Scr->Width ) wleft = Scr->Width - ww;
  314.     if (( wtop + wh + OffY + Scr->WBorBottom ) > Scr->Height ) wtop = Scr->Height - wh;
  315.  
  316.     if ( ! ( g = CreateContext( &HelpGList )))
  317.         return( 1L );
  318.  
  319.     for( lc = 0, tc = 0; lc < Help_CNT; lc++ ) {
  320.  
  321.         CopyMem((char * )&HelpNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
  322.  
  323.         ng.ng_VisualInfo = VisualInfo;
  324.         ng.ng_TextAttr   = Font;
  325.         ng.ng_LeftEdge   = OffX + ComputeX( ng.ng_LeftEdge );
  326.         ng.ng_TopEdge    = OffY + ComputeY( ng.ng_TopEdge );
  327.         ng.ng_Width      = ComputeX( ng.ng_Width );
  328.         ng.ng_Height     = ComputeY( ng.ng_Height);
  329.  
  330.         HelpGadgets[ lc ] = g = CreateGadgetA((ULONG)HelpGTypes[ lc ], g, &ng, ( struct TagItem * )&HelpGTags[ tc ] );
  331.  
  332.         while( HelpGTags[ tc ] ) tc += 2;
  333.         tc++;
  334.  
  335.         if ( NOT g )
  336.             return( 2L );
  337.     }
  338.  
  339.     /**** CHANGED */
  340.     if ( ! ( HelpMenus = CreateMenus( HelpNewMenu, GTMN_NewLookMenus, TRUE, 0L, TAG_DONE )))
  341.         return( 3L );
  342.  
  343.     LayoutMenus( HelpMenus, VisualInfo, TAG_DONE );
  344.  
  345.         HelpZoom[0] = HelpZoom[1] = 0;
  346.     if ( HelpWdt )
  347.         HelpZoom[2] = TextLength( &Scr->RastPort, (UBYTE *)HelpWdt, strlen((char *)HelpWdt )) + 80;
  348.     else
  349.         HelpZoom[2]  = 80L;
  350.         HelpZoom[3] = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
  351.  
  352.     if ( ! ( HelpWnd = OpenWindowTags( NULL,
  353.                 WA_Left,    wleft,
  354.                 WA_Top,        wtop,
  355.                 WA_Width,    ww + OffX + Scr->WBorRight,
  356.                 WA_Height,    wh + OffY + Scr->WBorBottom,
  357.                 WA_IDCMP,    BUTTONIDCMP|CHECKBOXIDCMP|CYCLEIDCMP|STRINGIDCMP|INTEGERIDCMP|IDCMP_GADGETDOWN|IDCMP_INTUITICKS|IDCMP_MOUSEMOVE|IDCMP_MOUSEBUTTONS|
  358.                         
  359.                         IDCMP_MENUPICK|IDCMP_CLOSEWINDOW|
  360.                         
  361.                         
  362.                         IDCMP_CHANGEWINDOW|IDCMP_REFRESHWINDOW,
  363.                 WA_Flags,    WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_ACTIVATE,
  364.                 WA_Gadgets,    HelpGList,
  365.                 WA_Title,    HelpWdt,
  366.                 WA_ScreenTitle,    "Yak © 1992,1993 Martin W Scott",
  367.                 WA_Zoom,    HelpZoom,
  368.                 WA_AutoAdjust,    TRUE,
  369. /**** ADDED */                  WA_NewLookMenus,TRUE,
  370.                 TAG_DONE )))
  371.     return( 4L );
  372.  
  373.     SetMenuStrip( HelpWnd, HelpMenus );
  374.     GT_RefreshWindow( HelpWnd, NULL );
  375.  
  376.     HelpRender();
  377.  
  378.     return( 0L );
  379. }
  380.  
  381. void CloseHelpWindow( void )
  382. {
  383.     if ( HelpMenus      ) {
  384.         ClearMenuStrip( HelpWnd );
  385.         FreeMenus( HelpMenus );
  386.         HelpMenus = NULL;    }
  387.  
  388.     if ( HelpWnd        ) {
  389.         CloseWindow( HelpWnd );
  390.         HelpWnd = NULL;
  391.     }
  392.  
  393.     if ( HelpGList      ) {
  394.         FreeGadgets( HelpGList );
  395.         HelpGList = NULL;
  396.     }
  397. }
  398.  
  399. int OpenHotKeyWindow( void )
  400. {
  401.     struct NewGadget    ng;
  402.     struct Gadget    *g;
  403.     UWORD        lc, tc;
  404.     UWORD        wleft = HotKeyLeft, wtop = HotKeyTop, ww, wh;
  405.  
  406.     ComputeFont( HotKeyWidth, HotKeyHeight );
  407.  
  408.     ww = ComputeX( HotKeyWidth );
  409.     wh = ComputeY( HotKeyHeight );
  410.  
  411.     if (( wleft + ww + OffX + Scr->WBorRight ) > Scr->Width ) wleft = Scr->Width - ww;
  412.     if (( wtop + wh + OffY + Scr->WBorBottom ) > Scr->Height ) wtop = Scr->Height - wh;
  413.  
  414.     if ( ! ( g = CreateContext( &HotKeyGList )))
  415.         return( 1L );
  416.  
  417.     for( lc = 0, tc = 0; lc < HotKey_CNT; lc++ ) {
  418.  
  419.         CopyMem((char * )&HotKeyNGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
  420.  
  421.         ng.ng_VisualInfo = VisualInfo;
  422.         ng.ng_TextAttr   = Font;
  423.         ng.ng_LeftEdge   = OffX + ComputeX( ng.ng_LeftEdge );
  424.         ng.ng_TopEdge    = OffY + ComputeY( ng.ng_TopEdge );
  425.         ng.ng_Width      = ComputeX( ng.ng_Width );
  426.         ng.ng_Height     = ComputeY( ng.ng_Height);
  427.  
  428.         HotKeyGadgets[ lc ] = g = CreateGadgetA((ULONG)HotKeyGTypes[ lc ], g, &ng, ( struct TagItem * )&HotKeyGTags[ tc ] );
  429.  
  430.         while( HotKeyGTags[ tc ] ) tc += 2;
  431.         tc++;
  432.  
  433.         if ( NOT g )
  434.             return( 2L );
  435.     }
  436.  
  437.     if ( ! ( HotKeyWnd = OpenWindowTags( NULL,
  438.                 WA_Left,    wleft,
  439.                 WA_Top,        wtop,
  440.                 WA_Width,    ww + OffX + Scr->WBorRight,
  441.                 WA_Height,    wh + OffY + Scr->WBorBottom,
  442.                 WA_IDCMP,    LISTVIEWIDCMP|STRINGIDCMP|CYCLEIDCMP|BUTTONIDCMP|IDCMP_CLOSEWINDOW|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW,
  443.                 WA_Flags,    WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH,
  444.                 WA_Gadgets,    HotKeyGList,
  445.                 WA_Title,    HotKeyWdt,
  446.                 WA_ScreenTitle,    "Yak © 1992,1993 Martin W Scott",
  447.                 TAG_DONE )))
  448.     return( 4L );
  449.  
  450.     GT_RefreshWindow( HotKeyWnd, NULL );
  451.  
  452.     return( 0L );
  453. }
  454.  
  455. void CloseHotKeyWindow( void )
  456. {
  457.     if ( HotKeyWnd        ) {
  458.         CloseWindow( HotKeyWnd );
  459.         HotKeyWnd = NULL;
  460.     }
  461.  
  462.     if ( HotKeyGList      ) {
  463.         FreeGadgets( HotKeyGList );
  464.         HotKeyGList = NULL;
  465.     }
  466. }
  467.  
  468.