home *** CD-ROM | disk | FTP | other *** search
/ Amiga Games 1996 October / Amiga_Games_Extra_CD_10-96.bin / userbox / publicdomain / grabkey / source / gk_gui.c < prev    next >
C/C++ Source or Header  |  1996-08-02  |  19KB  |  716 lines

  1. /*
  2. **    GrabKEY
  3. **
  4. **        © 1996 by Timo C. Nentwig
  5. **        All Rights Reserved !
  6. **
  7. **        Tcn@techbase.in-berlin.de
  8. **
  9. **
  10. */
  11.  
  12. /// #include
  13.  
  14. #include "gk_GST.h"
  15. #include "gk_Protos.h"
  16.  
  17. ///
  18. /// #define
  19.  
  20. #define    LT_VertGroup(Handle)    LT_New (Handle, LA_Type, VERTICAL_KIND,   TAG_END)
  21. #define    LT_HortGroup(Handle)    LT_New (Handle, LA_Type, VERTICAL_KIND,   TAG_END)
  22.  
  23. #define    CHARS    20
  24.  
  25. enum
  26. {
  27.  
  28.     GAD_PAGER,
  29.     GAD_PAGEGROUP,
  30.  
  31.     GAD_SAVE,
  32.     GAD_CANCEL,
  33.     GAD_HIDE,
  34.     GAD_QUIT,
  35.  
  36.     GAD_PAGE_HOTKEYS_SCREEN_SAVE,
  37.     GAD_PAGE_HOTKEYS_SCREEN_CLIP,
  38.     GAD_PAGE_HOTKEYS_SCREEN_PRINT,
  39.  
  40.     GAD_PAGE_HOTKEYS_WINDOW_SAVE,
  41.     GAD_PAGE_HOTKEYS_WINDOW_CLIP,
  42.     GAD_PAGE_HOTKEYS_WINDOW_PRINT,
  43.  
  44.     GAD_PAGE_NOTIFY_START,
  45.     GAD_PAGE_NOTIFY_DONE,
  46.     GAD_PAGE_NOTIFY_ERROR,
  47.  
  48.     GAD_PAGE_SAVE_FILE,
  49.     GAD_PAGE_SAVE_COUNT,
  50.     GAD_PAGE_SAVE_ICON,
  51.  
  52. };
  53.  
  54. enum
  55. {
  56.  
  57.     MEN_SAVE,
  58.     MEN_ABOUT,
  59.     MEN_QUIT,
  60.  
  61. };
  62.  
  63. ///
  64. /// proto
  65.  
  66. proto BOOL    CreateGUI    (VOID);
  67. proto BOOL    HandleGUI    (VOID);
  68. proto VOID    RemoveGUI    (VOID);
  69.  
  70. ///
  71.  
  72. struct    LayoutHandle    *Handle;
  73. struct    Window          *Window;
  74. struct    Menu            *Menu;
  75. struct    Settings        *GUI;
  76. ULONG                      GUIMask;
  77.  
  78. /// CreateGUI ()
  79.  
  80.     /*
  81.      *    FUNCTION    Creates the GUI.
  82.      *
  83.      *    NOTE
  84.      *
  85.      *    EXAMPLE     CreateGUI ();
  86.      *
  87.      */
  88.  
  89.  
  90. BOOL
  91. CreateGUI (VOID)
  92. {
  93.  
  94.         // Are we already open ?
  95.  
  96.     if ( ! (Handle))
  97.     {
  98.  
  99.             // Temp copy of settings for the GUI
  100.  
  101.         GUI = Set;
  102.  
  103.         if (Handle = LT_CreateHandleTags (NULL, LAHN_LocaleHook,   &LocaleHook,
  104.                                                 TAG_END))
  105.                                                 {
  106.  
  107.                                                     LT_VertGroup (Handle);
  108.                                                     {
  109.  
  110.                                                         LT_HortGroup (Handle);
  111.                                                         {
  112.  
  113.                                                                   BYTE    InitPage = 0;
  114.                                                             const LONG    PageTitleID [] =
  115.                                                             {
  116.  
  117.                                                                 MSG_GUI_PAGE_HOTKEYS,
  118.                                                                 MSG_GUI_PAGE_NOTIFY,
  119.                                                                 MSG_GUI_PAGE_SAVE,
  120.  
  121.                                                                 -1
  122.  
  123.                                                             };
  124.  
  125.                                                             LT_VertGroup (Handle);
  126.                                                             {
  127.  
  128.                                                                 LT_New (Handle, LA_Type,            TAB_KIND,
  129.                                                                                 LA_ID,              GAD_PAGER,
  130.                                                                                 LA_BYTE,           &InitPage,
  131.                                                                                 LATB_LabelTable,    PageTitleID,
  132.                                                                                 LATB_AutoPageID,    GAD_PAGEGROUP,
  133.                                                                                 LATB_TabKey,        TRUE,
  134.                                                                                 LATB_FullSize,      TRUE,
  135.                                                                                 TAG_END);
  136.  
  137.                                                                 LT_EndGroup (Handle);
  138.  
  139.                                                             }
  140.  
  141.                                                             LT_New (Handle, LA_Type,            VERTICAL_KIND,
  142.                                                                             LA_ID,              GAD_PAGEGROUP,
  143.                                                                             LAGR_ActivePage,    InitPage,
  144.                                                                             TAG_END);
  145.                                                                             {
  146.  
  147.                                                                                 /*
  148.                                                                                  *    Page: HotKeys
  149.                                                                                  */
  150.  
  151.                                                                                 LT_VertGroup (Handle);
  152.                                                                                 {
  153.  
  154.                                                                                     LT_New (Handle, LA_Type,       VERTICAL_KIND,
  155.                                                                                                     LA_LabelID,    MSG_GUI_PAGE_HOTKEYS,
  156.                                                                                                     TAG_END);
  157.                                                                                                     {
  158.  
  159.                                                                                                         LT_New (Handle, LA_Type,         VERTICAL_KIND,
  160.                                                                                                                         LA_LabelID,      MSG_GUI_PAGE_HOTKEYS_WINDOW,
  161.                                                                                                                         TAG_END);
  162.                                                                                                                         {
  163.  
  164.                                                                                                                             LT_New (Handle, LA_Type,                  STRING_KIND,
  165.                                                                                                                                             LA_Chars,                 CHARS,
  166.                                                                                                                                             LA_ID,                    GAD_PAGE_HOTKEYS_WINDOW_SAVE,
  167.                                                                                                                                             LA_LabelID,               MSG_GUI_PAGE_HOTKEYS_SAVE,
  168.                                                                                                                                             LA_STRPTR,                GUI -> Key . Window . Save,
  169.                                                                                                                                             GTST_MaxChars,    sizeof (GUI -> Key . Window . Save) - 1,
  170.                                                                                                                                             TAG_END);
  171.  
  172.                                                                                                                             LT_New (Handle, LA_Type,                  STRING_KIND,
  173.                                                                                                                                             LA_Chars,                 CHARS,
  174.                                                                                                                                             LA_ID,                    GAD_PAGE_HOTKEYS_WINDOW_CLIP,
  175.                                                                                                                                             LA_LabelID,               MSG_GUI_PAGE_HOTKEYS_CLIP,
  176.                                                                                                                                             LA_STRPTR,                GUI -> Key . Window . Clip,
  177.                                                                                                                                             GTST_MaxChars,    sizeof (GUI -> Key . Window . Clip) - 1,
  178.                                                                                                                                             TAG_END);
  179.  
  180.                                                                                                                             LT_New (Handle, LA_Type,                  STRING_KIND,
  181.                                                                                                                                             LA_Chars,                 CHARS,
  182.                                                                                                                                             LA_ID,                    GAD_PAGE_HOTKEYS_WINDOW_PRINT,
  183.                                                                                                                                             LA_LabelID,               MSG_GUI_PAGE_HOTKEYS_PRINT,
  184.                                                                                                                                             LA_STRPTR,                GUI -> Key . Window . Print,
  185.                                                                                                                                             GTST_MaxChars,    sizeof (GUI -> Key . Window . Print) - 1,
  186.                                                                                                                                             TAG_END);
  187.  
  188.                                                                                                                             LT_EndGroup (Handle);
  189.  
  190.                                                                                                                         }
  191.  
  192.                                                                                                         LT_New (Handle, LA_Type,         VERTICAL_KIND,
  193.                                                                                                                         LA_LabelID,      MSG_GUI_PAGE_HOTKEYS_SCREEN,
  194.                                                                                                                         TAG_END);
  195.                                                                                                                         {
  196.  
  197.                                                                                                                             LT_New (Handle, LA_Type,                  STRING_KIND,
  198.                                                                                                                                             LA_Chars,                 CHARS,
  199.                                                                                                                                             LA_ID,                    GAD_PAGE_HOTKEYS_SCREEN_SAVE,
  200.                                                                                                                                             LA_LabelID,               MSG_GUI_PAGE_HOTKEYS_SAVE,
  201.                                                                                                                                             LA_STRPTR,                GUI -> Key . Screen . Save,
  202.                                                                                                                                             GTST_MaxChars,    sizeof (GUI -> Key . Screen . Save) - 1,
  203.                                                                                                                                             TAG_END);
  204.  
  205.                                                                                                                             LT_New (Handle, LA_Type,                  STRING_KIND,
  206.                                                                                                                                             LA_Chars,                 CHARS,
  207.                                                                                                                                             LA_ID,                    GAD_PAGE_HOTKEYS_SCREEN_CLIP,
  208.                                                                                                                                             LA_LabelID,               MSG_GUI_PAGE_HOTKEYS_CLIP,
  209.                                                                                                                                             LA_STRPTR,                GUI -> Key . Screen . Clip,
  210.                                                                                                                                             GTST_MaxChars,    sizeof (GUI -> Key . Screen . Clip) - 1,
  211.                                                                                                                                             TAG_END);
  212.  
  213.                                                                                                                             LT_New (Handle, LA_Type,                  STRING_KIND,
  214.                                                                                                                                             LA_Chars,                 CHARS,
  215.                                                                                                                                             LA_ID,                    GAD_PAGE_HOTKEYS_SCREEN_PRINT,
  216.                                                                                                                                             LA_LabelID,               MSG_GUI_PAGE_HOTKEYS_PRINT,
  217.                                                                                                                                             LA_STRPTR,                GUI -> Key . Screen . Print,
  218.                                                                                                                                             GTST_MaxChars,    sizeof (GUI -> Key . Screen . Print) - 1,
  219.                                                                                                                                             TAG_END);
  220.  
  221.                                                                                                                             LT_EndGroup (Handle);
  222.  
  223.                                                                                                                         }
  224.  
  225.                                                                                                         LT_EndGroup (Handle);
  226.  
  227.                                                                                                     }
  228.  
  229.                                                                                     LT_EndGroup (Handle);
  230.  
  231.                                                                                 }
  232.  
  233.                                                                                 /*
  234.                                                                                  *    Page: Notify
  235.                                                                                  */
  236.  
  237.                                                                                 LT_VertGroup (Handle);
  238.                                                                                 {
  239.  
  240.                                                                                     LT_New (Handle, LA_Type,       VERTICAL_KIND,
  241.                                                                                                     LA_LabelID,    MSG_GUI_PAGE_NOTIFY,
  242.                                                                                                     TAG_END);
  243.                                                                                                     {
  244.  
  245.                                                                                                         LT_New (Handle, LA_Type,                  STRING_KIND,
  246.                                                                                                                         LA_Chars,                 CHARS,
  247.                                                                                                                         LA_ID,                    GAD_PAGE_NOTIFY_START,
  248.                                                                                                                         LA_LabelID,               MSG_GUI_PAGE_NOTIFY_START,
  249.                                                                                                                         LA_STRPTR,                GUI -> Sound . Start,
  250.                                                                                                                         GTST_MaxChars,    sizeof (GUI -> Sound . Start) - 1,
  251.                                                                                                                         LAST_Picker,              TRUE,
  252.                                                                                                                         TAG_END);
  253.  
  254.                                                                                                         LT_New (Handle, LA_Type,                  STRING_KIND,
  255.                                                                                                                         LA_Chars,                 CHARS,
  256.                                                                                                                         LA_ID,                    GAD_PAGE_NOTIFY_DONE,
  257.                                                                                                                         LA_LabelID,               MSG_GUI_PAGE_NOTIFY_DONE,
  258.                                                                                                                         LA_STRPTR,                GUI -> Sound . Done,
  259.                                                                                                                         GTST_MaxChars,    sizeof (GUI -> Sound . Done) - 1,
  260.                                                                                                                         LAST_Picker,              TRUE,
  261.                                                                                                                         TAG_END);
  262.  
  263.                                                                                                         LT_New (Handle, LA_Type,                  XBAR_KIND,
  264.                                                                                                                         TAG_END);
  265.  
  266.                                                                                                         LT_New (Handle, LA_Type,                  STRING_KIND,
  267.                                                                                                                         LA_Chars,                 CHARS,
  268.                                                                                                                         LA_ID,                    GAD_PAGE_NOTIFY_ERROR,
  269.                                                                                                                         LA_LabelID,               MSG_GUI_PAGE_NOTIFY_ERROR,
  270.                                                                                                                         LA_STRPTR,                GUI -> Sound . Error,
  271.                                                                                                                         GTST_MaxChars,    sizeof (GUI -> Sound . Error) - 1,
  272.                                                                                                                         LAST_Picker,              TRUE,
  273.                                                                                                                         TAG_END);
  274.  
  275.                                                                                                         LT_EndGroup (Handle);
  276.  
  277.                                                                                                     }
  278.  
  279.                                                                                     LT_EndGroup (Handle);
  280.  
  281.                                                                                 }
  282.  
  283.                                                                                 /*
  284.                                                                                  *    Page: Save
  285.                                                                                  */
  286.  
  287.                                                                                 LT_VertGroup (Handle);
  288.                                                                                 {
  289.  
  290.                                                                                     LT_New (Handle, LA_Type,         VERTICAL_KIND,
  291.                                                                                                     LA_LabelID,      MSG_GUI_PAGE_SAVE,
  292.                                                                                                     TAG_END);
  293.                                                                                                     {
  294.  
  295.                                                                                                         LT_New (Handle, LA_Type,                  STRING_KIND,
  296.                                                                                                                         LA_Chars,                 CHARS,
  297.                                                                                                                         LA_ID,                    GAD_PAGE_SAVE_FILE,
  298.                                                                                                                         LA_LabelID,               MSG_GUI_PAGE_SAVE_FILE,
  299.                                                                                                                         LA_STRPTR,                GUI -> File . Path,
  300.                                                                                                                         GTST_MaxChars,    sizeof (GUI -> File . Path) - 1,
  301.                                                                                                                         LAST_Picker,              TRUE,
  302.                                                                                                                         TAG_END);
  303.  
  304.                                                                                                         LT_New (Handle, LA_Type,                  CHECKBOX_KIND,
  305.                                                                                                                         LA_ID,                    GAD_PAGE_SAVE_COUNT,
  306.                                                                                                                         LA_LabelID,               MSG_GUI_PAGE_SAVE_COUNT,
  307.                                                                                                                         LA_BOOL,                 &GUI -> File . Count,
  308.                                                                                                                         TAG_END);
  309.  
  310.                                                                                                         LT_New (Handle, LA_Type,                  CHECKBOX_KIND,
  311.                                                                                                                         LA_ID,                    GAD_PAGE_SAVE_ICON,
  312.                                                                                                                         LA_LabelID,               MSG_GUI_PAGE_SAVE_ICON,
  313.                                                                                                                         LA_BOOL,                 &GUI -> File . Icon,
  314.                                                                                                                         TAG_END);
  315.  
  316.                                                                                                         LT_EndGroup (Handle);
  317.  
  318.                                                                                                     }
  319.  
  320.                                                                                     LT_EndGroup (Handle);
  321.  
  322.                                                                                 }
  323.  
  324.                                                                                 LT_EndGroup (Handle);
  325.  
  326.                                                                             }
  327.  
  328.                                                             LT_EndGroup (Handle);
  329.  
  330.                                                         }
  331.  
  332.                                                         LT_New (Handle, LA_Type,          XBAR_KIND,
  333.                                                                         LAXB_FullSize,    TRUE,
  334.                                                                         TAG_END);
  335.  
  336.                                                         LT_New (Handle, LA_Type,          HORIZONTAL_KIND,
  337.                                                                         LAGR_Spread,      TRUE,
  338.                                                                         LAGR_SameSize,    TRUE,
  339.                                                                         TAG_END);
  340.                                                                         {
  341.  
  342.                                                                             LT_New (Handle, LA_Type,           BUTTON_KIND,
  343.                                                                                             LA_LabelID,        MSG_GUI_HIDE,
  344.                                                                                             LA_ID,             GAD_HIDE,
  345.                                                                                             LABT_ReturnKey,    TRUE,
  346.                                                                                             LABT_ExtraFat,     TRUE,
  347.                                                                                             TAG_END);
  348.                                                                             /*
  349.                                                                             LT_New (Handle, LA_Type,           BUTTON_KIND,
  350.                                                                                             LA_LabelID,        MSG_GUI_SAVE,
  351.                                                                                             LA_ID,             GAD_SAVE,
  352.                                                                                             TAG_END);
  353.                                                                             */
  354.                                                                             LT_New (Handle, LA_Type,           BUTTON_KIND,
  355.                                                                                             LA_LabelID,        MSG_GUI_CANCEL,
  356.                                                                                             LA_ID,             GAD_CANCEL,
  357.                                                                                             TAG_END);
  358.  
  359.                                                                             LT_New (Handle, LA_Type,           BUTTON_KIND,
  360.                                                                                             LA_LabelID,        MSG_GUI_QUIT,
  361.                                                                                             LA_ID,             GAD_QUIT,
  362.                                                                                             LABT_EscKey,       TRUE,
  363.                                                                                             TAG_END);
  364.  
  365.                                                                             LT_EndGroup (Handle);
  366.  
  367.                                                                         }
  368.  
  369.                                                         LT_EndGroup (Handle);
  370.  
  371.                                                     }
  372.  
  373.                                                     {
  374.  
  375.                                                         LONG    Error;
  376.  
  377.                                                         if ( ! (Menu = LT_NewMenuTags (LAMN_LayoutHandle,    Handle,
  378.                                                                                        LAMN_TitleText,       PRG_TITLE,
  379.                                                                                        LAMN_Error,          &Error,
  380.                                                                                        /*
  381.                                                                                        LAMN_ItemID,          MSG_GUI_MEN_SAVE,  LAMN_UserData,    MEN_SAVE,
  382.                                                                                        LAMN_ItemText,        NM_BARLABEL,
  383.                                                                                        */
  384.                                                                                        LAMN_ItemID,          MSG_GUI_MEN_ABOUT, LAMN_UserData,    MEN_ABOUT,
  385.                                                                                        LAMN_ItemText,        NM_BARLABEL,
  386.                                                                                        LAMN_ItemID,          MSG_GUI_MEN_QUIT,  LAMN_UserData,    MEN_QUIT,
  387.                                                                                        TAG_END)))
  388.                                                                                        {
  389.  
  390.                                                                                            switch (Error)
  391.                                                                                            {
  392.  
  393.                                                                                                case GTMENU_TRIMMED:
  394.  
  395.                                                                                                    if ( ! (ErrorRequest ("OK|Cancel", LocaleString (MSG_ERR_GUI_MEN_TRIMMED))))
  396.                                                                                                    {
  397.  
  398.                                                                                                        RemoveGUI();
  399.  
  400.                                                                                                    }
  401.                                                                                                    break;
  402.  
  403.                                                                                                case GTMENU_NOMEM:
  404.  
  405.                                                                                                    if ( ! (ErrorRequest ("OK|Cancel", LocaleString (MSG_ERR_GUI_MEN_NOMEM))))
  406.                                                                                                    {
  407.  
  408.                                                                                                        RemoveGUI();
  409.  
  410.                                                                                                    }
  411.                                                                                                    break;
  412.  
  413.                                                                                             // case GTMENU_INVALID:
  414.                                                                                                default:
  415.  
  416.                                                                                                    if ( ! (ErrorRequest ("OK|Cancel", LocaleString (MSG_ERR_GUI_MEN_INVALID))))
  417.                                                                                                    {
  418.  
  419.                                                                                                        RemoveGUI();
  420.  
  421.                                                                                                    }
  422.                                                                                                    break;
  423.  
  424.                                                                                            }
  425.  
  426.                                                                                        }
  427.  
  428.                                                     }
  429.  
  430.                                                     if (Window = LT_Build (Handle, LAWN_Title,          PRG_TITLE,
  431.                                                                                    LAWN_IDCMP,          IDCMP_CLOSEWINDOW | IDCMP_MENUPICK | IDCMP_IDCMPUPDATE | IDCMP_GADGETUP,
  432.                                                                                    LAWN_AutoRefresh,    TRUE,
  433.                                                                                    LAWN_SmartZoom,      TRUE,
  434.                                                                                    LAWN_BelowMouse,     TRUE,
  435.                                                                                    LAWN_Menu,           Menu,
  436.                                                                                    WA_Activate,         TRUE,
  437.                                                                                    WA_CloseGadget,      TRUE,
  438.                                                                                    WA_DepthGadget,      TRUE,
  439.                                                                                    WA_DragBar,          TRUE,
  440.                                                                                    WA_SmartRefresh,     TRUE,
  441.                                                                                    TAG_END))
  442.                                                                                    {
  443.  
  444.                                                                                        GUIMask = PortMask (Window -> UserPort);
  445.                                                                                        return (TRUE);
  446.  
  447.                                                                                    }
  448.                                                                                    else
  449.                                                                                    {
  450.  
  451.                                                                                        RemoveGUI();
  452.                                                                                        ErrorRequest ("OK", LocaleString (MSG_ERR_OPENWINDOW));
  453.  
  454.                                                                                    }
  455.  
  456.                                                 }
  457.  
  458.         GUIMask = NULL;
  459.  
  460.         return (FALSE);
  461.  
  462.     }
  463.  
  464.     return (TRUE);
  465.  
  466. }
  467.  
  468. ///
  469. /// HandleGUI ()
  470.  
  471.     /*
  472.      *    FUNCTION    Handle window IDCMP etc.
  473.      *
  474.      *    NOTE
  475.      *
  476.      *    EXAMPLE     HandleGUI ();
  477.      *
  478.      */
  479.  
  480.  
  481. BOOL
  482. HandleGUI (VOID)
  483. {
  484.  
  485.     if (Window)
  486.     {
  487.  
  488.         struct    MenuItem       *MenuItem;
  489.         struct    IntuiMessage   *Message;
  490.         ULONG                     MsgClass,
  491.                                   MsgQualifier;
  492.         UWORD                     MsgCode;
  493.         struct    Gadget         *MsgGadget;
  494.         BOOL                      NewKeys = FALSE;
  495.  
  496.         while (Message = LT_GetIMsg (Handle))
  497.         {
  498.  
  499.             MsgClass     = Message -> Class;
  500.             MsgCode      = Message -> Code;
  501.             MsgQualifier = Message -> Qualifier;
  502.             MsgGadget    = Message -> IAddress;
  503.  
  504.             LT_ReplyIMsg   (Message);
  505.             LT_HandleInput (Handle, MsgQualifier, &MsgClass, &MsgCode, &MsgGadget);
  506.  
  507.             switch (MsgClass)
  508.             {
  509.  
  510.                 case IDCMP_CLOSEWINDOW:
  511.  
  512.                     RemoveGUI();
  513.                     return (FALSE);
  514.                     break;
  515.  
  516.                 case IDCMP_IDCMPUPDATE:
  517.  
  518.                     switch (MsgGadget -> GadgetID)
  519.                     {
  520.  
  521.                         case GAD_PAGE_SAVE_FILE:
  522.                         case GAD_PAGE_NOTIFY_DONE:
  523.                         case GAD_PAGE_NOTIFY_START:
  524.                         case GAD_PAGE_NOTIFY_ERROR:
  525.  
  526.                             {
  527.  
  528.                                 UBYTE    File [TT_LEN];
  529.  
  530.                                 LT_LockWindow (Window);
  531.  
  532.                                 strcpy (File, GetFile());
  533.  
  534.                                 if (File)
  535.                                 {
  536.  
  537.                                     LT_SetAttributes (Handle, (LONG) MsgGadget -> GadgetID, GTST_String,    File,
  538.                                                                                             TAG_END);
  539.  
  540.                                 }
  541.  
  542.                                 LT_UnlockWindow (Window);
  543.  
  544.                             }
  545.                             break;
  546.  
  547.                     }
  548.  
  549.                 case IDCMP_GADGETUP:
  550.  
  551.                     switch (MsgGadget -> GadgetID)
  552.                     {
  553.  
  554.                         case GAD_HIDE:
  555.  
  556.                             Set = GUI;
  557.                             NewKeys  = TRUE;
  558.                             break;
  559.  
  560.                         case GAD_QUIT:
  561.  
  562.                             RemoveGUI();
  563.                             return (TRUE);
  564.                             break;
  565.  
  566.                         case GAD_SAVE:
  567.  
  568.                             Set = GUI;
  569.                             SaveTTypes();
  570.                             NewKeys  = TRUE;
  571.                             break;
  572.  
  573.                         case GAD_CANCEL:
  574.  
  575.                             RemoveGUI();
  576.                             return (FALSE);
  577.                             break;
  578.  
  579.                         /*
  580.                          *    Page: Notify
  581.                          */
  582.  
  583.                         case GAD_PAGE_NOTIFY_START:
  584.  
  585.                             LT_LockWindow (Window);
  586.  
  587.                             PlaySound (GUI -> Sound . Start);
  588.  
  589.                             LT_UnlockWindow (Window);
  590.                             break;
  591.  
  592.                         case GAD_PAGE_NOTIFY_DONE:
  593.  
  594.  
  595.                             LT_LockWindow (Window);
  596.  
  597.                             PlaySound (GUI -> Sound . Done);
  598.  
  599.                             LT_UnlockWindow (Window);
  600.                             break;
  601.  
  602.                         case GAD_PAGE_NOTIFY_ERROR:
  603.  
  604.  
  605.                             LT_LockWindow (Window);
  606.  
  607.                             PlaySound (GUI -> Sound . Error);
  608.  
  609.                             LT_UnlockWindow (Window);
  610.                             break;
  611.  
  612.                     }
  613.                     break;
  614.  
  615.                 case IDCMP_MENUPICK:
  616.  
  617.                     while (MsgCode != MENUNULL)
  618.                     {
  619.  
  620.                         if (MenuItem = ItemAddress (Menu, (ULONG) MsgCode))
  621.                         {
  622.  
  623.                             switch ((ULONG) GTMENUITEM_USERDATA (MenuItem))
  624.                             {
  625.  
  626.                                 case MEN_SAVE:
  627.  
  628.                                     Set = GUI;
  629.                                     SaveTTypes();
  630.                                     NewKeys  = TRUE;
  631.                                     break;
  632.  
  633.                                 case MEN_ABOUT:
  634.  
  635.                                     ShowRequest ("OK", PRG_TITLE " " PRG_VERSION "\n\n"     \
  636.                                                        "© " PRG_YEAR " by " PRG_AUTHOR "\n" \
  637.                                                        "All Rights Reserved !\n\n"          \
  638.                                                        PRG_EMAIL);
  639.                                     break;
  640.  
  641.                                 case MEN_QUIT:
  642.  
  643.                                     RemoveGUI();
  644.                                     return (TRUE);
  645.                                     break;
  646.  
  647.                             }
  648.                             break;
  649.  
  650.                         }
  651.                         else
  652.                         {
  653.  
  654.                             break;
  655.  
  656.                         }
  657.  
  658.                     }
  659.                     break;
  660.  
  661.             }
  662.  
  663.             if (NewKeys)
  664.             {
  665.  
  666.                 LT_LockWindow (Window);
  667.  
  668.                 SetupCx();
  669.                 LT_UnlockWindow (Window);
  670.  
  671.                 RemoveGUI();
  672.                 return (FALSE);
  673.  
  674.             }
  675.  
  676.         }
  677.  
  678.     }
  679.  
  680.     return (FALSE);
  681.  
  682. }
  683.  
  684. ///
  685. /// RemoveGUI ()
  686.  
  687.     /*
  688.      *    FUNCTION    Close the GUI.
  689.      *
  690.      *    NOTE
  691.      *
  692.      *    EXAMPLE     RemoveGUI ();
  693.      *
  694.      */
  695.  
  696.  
  697. VOID
  698. RemoveGUI (VOID)
  699. {
  700.  
  701.     if (Handle)
  702.     {
  703.  
  704.         LT_DeleteHandle (Handle);
  705.         Handle = NULL;
  706.  
  707.     }
  708.  
  709.     Window  = NULL;
  710.     GUIMask = NULL;
  711.  
  712. }
  713.  
  714. ///
  715.  
  716.