home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_disks / 500-599 / ff589.lza / Term / TermSrc.lha / FastMacroPanel.c < prev    next >
C/C++ Source or Header  |  1991-11-03  |  16KB  |  543 lines

  1. /* $Revision Header * Header built automatically - do not edit! *************
  2.  *
  3.  *    (C) Copyright 1991 by Olaf 'Olsen' Barthel & MXM
  4.  *
  5.  *    Name .....: FastMacroPanel.c
  6.  *    Created ..: Monday 19-Aug-91 19:42
  7.  *    Revision .: 0
  8.  *
  9.  *    Date            Author          Comment
  10.  *    =========       ========        ====================
  11.  *    19-Aug-91       Olsen           Created this file!
  12.  *
  13.  * $Revision Header ********************************************************/
  14.  
  15. #include "TermGlobal.h"
  16.  
  17. #define WIDTH    288
  18. #define HEIGHT    137
  19.  
  20. enum    {    GAD_LIST,GAD_MACRO,GAD_CODE,GAD_NEW,GAD_DELETE,GAD_LOAD,GAD_SAVE };
  21.  
  22. enum    {    MEN_NEW=1,MEN_DELETE,MEN_LOAD,MEN_SAVEMACROS,MEN_QUITMACROS };
  23.  
  24. STATIC struct NewMenu MacroMenu[] =
  25. {
  26.     { NM_TITLE, "Project",         0 , 0, 0, (APTR)0},
  27.     {  NM_ITEM, "New",        "N", 0, 0, (APTR)MEN_NEW},
  28.     {  NM_ITEM, "Delete",        "D", 0, 0, (APTR)MEN_DELETE},
  29.     {  NM_ITEM, NM_BARLABEL,     0 , 0, 0, (APTR)0},
  30.     {  NM_ITEM, "Load",        "L", 0, 0, (APTR)MEN_LOAD},
  31.     {  NM_ITEM, "Save",        "S", 0, 0, (APTR)MEN_SAVEMACROS},
  32.     {  NM_ITEM, NM_BARLABEL,     0 , 0, 0, (APTR)0},
  33.     {  NM_ITEM, "Quit",        "Q", 0, 0, (APTR)MEN_QUITMACROS},
  34.     { NM_END, 0,             0 , 0, 0, (APTR)0}
  35. };
  36.  
  37. STATIC struct Gadget *
  38. CreateAllGadgets(struct Gadget **GadgetArray,struct Gadget **GadgetList,APTR VisualInfo,UWORD TopEdge)
  39. {
  40.     struct Gadget        *Gadget;
  41.     struct NewGadget     NewGadget;
  42.     UWORD             Counter = 0;
  43.  
  44.     memset(&NewGadget,0,sizeof(struct NewGadget));
  45.  
  46.     if(Gadget = CreateContext(GadgetList))
  47.     {
  48.         NewGadget . ng_Width        = 180;
  49.         NewGadget . ng_TextAttr        = &DefaultFont;
  50.         NewGadget . ng_VisualInfo    = VisualInfo;
  51.         NewGadget . ng_Flags        = PLACETEXT_LEFT;
  52.         NewGadget . ng_Height        = 78;
  53.         NewGadget . ng_GadgetText    = "Macro List";
  54.         NewGadget . ng_GadgetID        = Counter;
  55.         NewGadget . ng_LeftEdge        = (strlen(NewGadget . ng_GadgetText) + 2) * 8 + 2;
  56.         NewGadget . ng_TopEdge        = 1 + TopEdge;
  57.  
  58.         GadgetArray[Counter++] = Gadget = CreateGadget(LISTVIEW_KIND,Gadget,&NewGadget,
  59.             GTLV_Labels,    &FastMacroList,
  60.         TAG_DONE);
  61.  
  62.         if(Gadget)
  63.         {
  64.             NewGadget . ng_Height        = 14;
  65.             NewGadget . ng_GadgetText    = "Macro";
  66.             NewGadget . ng_GadgetID        = Counter;
  67.             NewGadget . ng_TopEdge        = Gadget -> TopEdge + Gadget -> Height + 1;
  68.  
  69.             GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  70.                 GTST_MaxChars,    20,
  71.                 GTST_EditHook,    &CommandHook,
  72.             TAG_DONE);
  73.  
  74.             NewGadget . ng_Height        = 14;
  75.             NewGadget . ng_GadgetText    = "Macro Text";
  76.             NewGadget . ng_GadgetID        = Counter;
  77.             NewGadget . ng_TopEdge        = NewGadget . ng_TopEdge + NewGadget . ng_Height + 1;
  78.  
  79.             GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  80.                 GTST_MaxChars,    256,
  81.                 GTST_EditHook,    &CommandHook,
  82.             TAG_DONE);
  83.  
  84.             NewGadget . ng_Width        = 52;
  85.             NewGadget . ng_Height        = 12;
  86.             NewGadget . ng_GadgetText    = "_New";
  87.             NewGadget . ng_GadgetID        = Counter;
  88.             NewGadget . ng_Flags        = 0;
  89.             NewGadget . ng_LeftEdge        = 10;
  90.             NewGadget . ng_TopEdge        = HEIGHT - 3 - NewGadget . ng_Height;
  91.  
  92.             GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  93.                 GT_Underscore,    '_',
  94.             TAG_DONE);
  95.  
  96.             NewGadget . ng_GadgetText    = "_Delete";
  97.             NewGadget . ng_GadgetID        = Counter;
  98.             NewGadget . ng_LeftEdge        = NewGadget . ng_LeftEdge + WIDTH / 4 + 4;
  99.  
  100.             GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  101.                 GT_Underscore,    '_',
  102.             TAG_DONE);
  103.  
  104.             NewGadget . ng_GadgetText    = "_Load";
  105.             NewGadget . ng_GadgetID        = Counter;
  106.             NewGadget . ng_LeftEdge        = NewGadget . ng_LeftEdge + WIDTH / 4 + 4;
  107.  
  108.             GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  109.                 GT_Underscore,    '_',
  110.             TAG_DONE);
  111.  
  112.             NewGadget . ng_GadgetText    = "_Save";
  113.             NewGadget . ng_GadgetID        = Counter;
  114.             NewGadget . ng_LeftEdge        = WIDTH - 10 - NewGadget . ng_Width;
  115.  
  116.             GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  117.                 GT_Underscore,    '_',
  118.             TAG_DONE);
  119.         }
  120.     }
  121.  
  122.     return(Gadget);
  123. }
  124.  
  125. VOID
  126. FastMacroPanel()
  127. {
  128.     struct Window        *PanelWindow;
  129.     struct Menu        *PanelMenu;
  130.     struct Gadget        *GadgetList = NULL;
  131.     struct Gadget        *GadgetArray[GAD_SAVE + 1];
  132.     UBYTE              DummyBuffer[256],*DummyChar;
  133.     struct FileRequest    *FileRequest;
  134.  
  135.     if(CreateAllGadgets(&GadgetArray[0],&GadgetList,VisualInfo,Screen -> WBorTop + Screen -> Font -> ta_YSize + 1))
  136.     {
  137.         if(PanelMenu = CreateMenus(MacroMenu,
  138.             GTMN_FrontPen, 0,
  139.         TAG_DONE))
  140.         {
  141.             if(LayoutMenus(PanelMenu,VisualInfo,
  142.                 GTMN_TextAttr,&DefaultFont,
  143.             TAG_DONE))
  144.             {
  145.                 if(PanelWindow = OpenWindowTags(NULL,
  146.                     WA_Left,    (Screen -> Width - WIDTH) >> 1,
  147.                     WA_Top,        (Screen -> Height - HEIGHT) >> 1,
  148.                     WA_Width,    WIDTH,
  149.                     WA_Height,    HEIGHT,
  150.  
  151.                     WA_Activate,    TRUE,
  152.                     WA_DragBar,    TRUE,
  153.                     WA_DepthGadget,    TRUE,
  154.                     WA_RMBTrap,    TRUE,
  155.                     WA_DepthGadget,    TRUE,
  156.                     WA_CloseGadget,    TRUE,
  157.                     WA_CustomScreen,Screen,
  158.  
  159.                     WA_IDCMP,    IDCMP_CLOSEWINDOW | IDCMP_MENUPICK | IDCMP_RAWKEY | IDCMP_ACTIVEWINDOW | IDCMP_GADGETDOWN | LISTVIEWIDCMP | STRINGIDCMP | BUTTONIDCMP,
  160.  
  161.                     WA_Title,    "Fast! Macro Preferences",
  162.                 TAG_DONE))
  163.                 {
  164.                     struct IntuiMessage    *Massage;
  165.                     ULONG             Class,Code;
  166.                     struct Gadget        *Gadget;
  167.                     BYTE             Terminated = FALSE;
  168.                     struct MacroNode    *Node,*Selected = NULL;
  169.  
  170.                     PushWindow(PanelWindow);
  171.  
  172.                     AddGList(PanelWindow,GadgetList,(UWORD)-1,(UWORD)-1,NULL);
  173.                     RefreshGList(GadgetList,PanelWindow,NULL,(UWORD)-1);
  174.                     GT_RefreshWindow(PanelWindow,NULL);
  175.  
  176.                     SetMenuStrip(PanelWindow,PanelMenu);
  177.  
  178.                     PanelWindow -> Flags &= ~WFLG_RMBTRAP;
  179.  
  180.                     ActivateGadget(GadgetArray[GAD_MACRO],PanelWindow,NULL);
  181.  
  182.                     ActiveGadget = GadgetArray[GAD_MACRO];
  183.  
  184.                     while(!Terminated)
  185.                     {
  186.                         WaitPort(PanelWindow -> UserPort);
  187.  
  188.                         while(!Terminated && (Massage = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort)))
  189.                         {
  190.                             Class    = Massage -> Class;
  191.                             Code    = Massage -> Code;
  192.                             Gadget    = (struct Gadget *)Massage -> IAddress;
  193.  
  194.                             GT_ReplyIMsg(Massage);
  195.  
  196.                             if(Class == IDCMP_GADGETDOWN)
  197.                             {
  198.                                 if((Gadget -> GadgetType & GTYP_GTYPEMASK) == STRGADGET)
  199.                                     ActiveGadget = Gadget;
  200.                             }
  201.  
  202.                             if(Class == IDCMP_ACTIVEWINDOW && ActiveGadget)
  203.                                 ActivateGadget(ActiveGadget,PanelWindow,NULL);
  204.  
  205.                             if(Class == IDCMP_RAWKEY)
  206.                             {
  207.                                 if(Code == IECODE_UP_PREFIX|103 && CommandWindow == PanelWindow)
  208.                                     ActivateGadget(CommandGadget,PanelWindow,NULL);
  209.                             }
  210.  
  211.                             if(Class == IDCMP_MENUPICK)
  212.                             {
  213.                                 struct MenuItem *MenuItem;
  214.  
  215.                                 while(Code != MENUNULL)
  216.                                 {
  217.                                     MenuItem = ItemAddress(PanelMenu,Code);
  218.  
  219.                                     switch((ULONG)GTMENUITEM_USERDATA(MenuItem))
  220.                                     {
  221.                                         case MEN_NEW:        Class = IDCMP_GADGETUP;
  222.                                                     Gadget = GadgetArray[GAD_NEW];
  223.                                                     break;
  224.  
  225.                                         case MEN_DELETE:    Class = IDCMP_GADGETUP;
  226.                                                     Gadget = GadgetArray[GAD_DELETE];
  227.                                                     break;
  228.  
  229.                                         case MEN_LOAD:        Class = IDCMP_GADGETUP;
  230.                                                     Gadget = GadgetArray[GAD_LOAD];
  231.                                                     break;
  232.  
  233.                                         case MEN_SAVEMACROS:    Class = IDCMP_GADGETUP;
  234.                                                     Gadget = GadgetArray[GAD_SAVE];
  235.                                                     break;
  236.  
  237.                                         case MEN_QUITMACROS:        Terminated = TRUE;
  238.                                                     break;
  239.  
  240.                                         default:        break;
  241.                                     }
  242.  
  243.                                     Code = MenuItem -> NextSelect;
  244.                                 }
  245.  
  246.                                 if(ActiveGadget)
  247.                                     ActivateGadget(ActiveGadget,PanelWindow,NULL);
  248.                             }
  249.  
  250.                             if(Class == IDCMP_CLOSEWINDOW)
  251.                                 Terminated = TRUE;
  252.  
  253.                             if(Class == IDCMP_GADGETUP)
  254.                             {
  255.                                 switch(Gadget -> GadgetID)
  256.                                 {
  257.                                     case GAD_NEW:        if(Node = NewFastMacro("-- Unnamed --",""))
  258.                                                 {
  259.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_LIST],PanelWindow,NULL,
  260.                                                         GTLV_Labels,    ~0,
  261.                                                     TAG_DONE);
  262.  
  263.                                                     if(FastWindow)
  264.                                                     {
  265.                                                         GT_SetGadgetAttrs(FastGadget,FastWindow,NULL,
  266.                                                             GTLV_Labels,    ~0,
  267.                                                         TAG_DONE);
  268.                                                     }
  269.  
  270.                                                     AddTail(&FastMacroList,(struct Node *)Node);
  271.  
  272.                                                     if(FastWindow)
  273.                                                     {
  274.                                                         GT_SetGadgetAttrs(FastGadget,FastWindow,NULL,
  275.                                                             GTLV_Labels,    &FastMacroList,
  276.                                                         TAG_DONE);
  277.                                                     }
  278.  
  279.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_LIST],PanelWindow,NULL,
  280.                                                         GTLV_Labels,    &FastMacroList,
  281.                                                         GTLV_Selected,    FastMacroCount++,
  282.                                                     TAG_DONE);
  283.  
  284.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_CODE],PanelWindow,NULL,
  285.                                                         GTST_String,    "",
  286.                                                     TAG_DONE);
  287.  
  288.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_MACRO],PanelWindow,NULL,
  289.                                                         GTST_String,    Node -> mn_Macro,
  290.                                                     TAG_DONE);
  291.  
  292.                                                     Selected = Node;
  293.                                                 }
  294.                                                 else
  295.                                                     DisplayBeep(Screen);
  296.  
  297.                                                 break;
  298.  
  299.                                     case GAD_DELETE:    if(Selected)
  300.                                                 {
  301.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_LIST],PanelWindow,NULL,
  302.                                                         GTLV_Labels,    ~0,
  303.                                                     TAG_DONE);
  304.  
  305.                                                     if(FastWindow)
  306.                                                     {
  307.                                                         GT_SetGadgetAttrs(FastGadget,FastWindow,NULL,
  308.                                                             GTLV_Labels,    ~0,
  309.                                                         TAG_DONE);
  310.                                                     }
  311.  
  312.                                                     if(--FastMacroCount)
  313.                                                     {
  314.                                                         if(Selected -> mn_Succ -> mn_Succ)
  315.                                                             Node = Selected -> mn_Succ;
  316.                                                         else
  317.                                                             Node = Selected -> mn_Pred;
  318.                                                     }
  319.  
  320.                                                     RemFastMacro(Selected);
  321.  
  322.                                                     if(FastWindow)
  323.                                                     {
  324.                                                         GT_SetGadgetAttrs(FastGadget,FastWindow,NULL,
  325.                                                             GTLV_Labels,    &FastMacroList,
  326.                                                         TAG_DONE);
  327.                                                     }
  328.  
  329.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_LIST],PanelWindow,NULL,
  330.                                                         GTLV_Labels,    &FastMacroList,
  331.                                                         GTLV_Selected,    Node -> mn_Succ ? GetFastMacroOffset(Node) : ~0,
  332.                                                     TAG_DONE);
  333.  
  334.                                                     if(!FastMacroCount)
  335.                                                     {
  336.                                                         Selected = NULL;
  337.  
  338.                                                         GT_SetGadgetAttrs(GadgetArray[GAD_CODE],PanelWindow,NULL,
  339.                                                             GTST_String,    "",
  340.                                                         TAG_DONE);
  341.  
  342.                                                         GT_SetGadgetAttrs(GadgetArray[GAD_MACRO],PanelWindow,NULL,
  343.                                                             GTST_String,    "",
  344.                                                         TAG_DONE);
  345.                                                     }
  346.                                                     else
  347.                                                     {
  348.                                                         Selected = Node;
  349.  
  350.                                                         GT_SetGadgetAttrs(GadgetArray[GAD_CODE],PanelWindow,NULL,
  351.                                                             GTST_String,    Selected -> mn_Code,
  352.                                                         TAG_DONE);
  353.  
  354.                                                         GT_SetGadgetAttrs(GadgetArray[GAD_MACRO],PanelWindow,NULL,
  355.                                                             GTST_String,    Selected -> mn_Macro,
  356.                                                         TAG_DONE);
  357.                                                     }
  358.                                                 }
  359.  
  360.                                                 break;
  361.  
  362.                                     case GAD_LIST:        if(Selected = GetFastMacro(Code))
  363.                                                 {
  364.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_MACRO],PanelWindow,NULL,
  365.                                                         GTST_String,    Selected -> mn_Macro,
  366.                                                     TAG_DONE);
  367.  
  368.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_CODE],PanelWindow,NULL,
  369.                                                         GTST_String,    Selected -> mn_Code,
  370.                                                     TAG_DONE);
  371.                                                 }
  372.  
  373.                                                 break;
  374.  
  375.                                     case GAD_MACRO:        if(Selected)
  376.                                                 {
  377.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_LIST],PanelWindow,NULL,
  378.                                                         GTLV_Labels,    ~0,
  379.                                                     TAG_DONE);
  380.  
  381.                                                     if(FastWindow)
  382.                                                     {
  383.                                                         GT_SetGadgetAttrs(FastGadget,FastWindow,NULL,
  384.                                                             GTLV_Labels,    ~0,
  385.                                                         TAG_DONE);
  386.                                                     }
  387.  
  388.                                                     strcpy(Selected -> mn_Macro,((struct StringInfo *)Gadget -> SpecialInfo) -> Buffer);
  389.  
  390.                                                     if(FastWindow)
  391.                                                     {
  392.                                                         GT_SetGadgetAttrs(FastGadget,FastWindow,NULL,
  393.                                                             GTLV_Labels,    &FastMacroList,
  394.                                                         TAG_DONE);
  395.                                                     }
  396.  
  397.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_LIST],PanelWindow,NULL,
  398.                                                         GTLV_Labels,    &FastMacroList,
  399.                                                         GTLV_Selected,    GetFastMacroOffset(Selected),
  400.                                                     TAG_DONE);
  401.  
  402.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_CODE],PanelWindow,NULL,
  403.                                                         GTST_String,    Selected -> mn_Code,
  404.                                                     TAG_DONE);
  405.  
  406.                                                     ActivateGadget(ActiveGadget = GadgetArray[GAD_CODE],PanelWindow,NULL);
  407.                                                 }
  408.  
  409.                                                 break;
  410.  
  411.                                     case GAD_CODE:        if(Selected)
  412.                                                     strcpy(Selected -> mn_Code,((struct StringInfo *)Gadget -> SpecialInfo) -> Buffer);
  413.  
  414.                                                 break;
  415.  
  416.                                     case GAD_LOAD:        strcpy(DummyBuffer,LastFastMacros);
  417.  
  418.                                                 DummyChar = PathPart(DummyBuffer);
  419.  
  420.                                                 *DummyChar = 0;
  421.  
  422.                                                 SetWait(PanelWindow);
  423.  
  424.                                                 PanelWindow -> Flags |= WFLG_RMBTRAP;
  425.  
  426.                                                 if(FileRequest = GetFile("Load Fast! Macro Settings",DummyBuffer,FilePart(LastFastMacros),DummyBuffer,"#?.term",FALSE,FALSE,FALSE,"Load"))
  427.                                                 {
  428.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_LIST],PanelWindow,NULL,
  429.                                                         GTLV_Labels,    ~0,
  430.                                                     TAG_DONE);
  431.  
  432.                                                     if(FastWindow)
  433.                                                     {
  434.                                                         GT_SetGadgetAttrs(FastGadget,FastWindow,NULL,
  435.                                                             GTLV_Labels,    ~0,
  436.                                                         TAG_DONE);
  437.                                                     }
  438.  
  439.                                                     if(!LoadFastMacros(DummyBuffer))
  440.                                                     {
  441.                                                         MyEasyRequest(Window,"Couldn't load fast! macro settings\n\"%s\"!","Continue",DummyBuffer);
  442.  
  443.                                                         GT_SetGadgetAttrs(GadgetArray[GAD_LIST],PanelWindow,NULL,
  444.                                                             GTLV_Labels,    &FastMacroList,
  445.                                                         TAG_DONE);
  446.  
  447.                                                         GT_SetGadgetAttrs(GadgetArray[GAD_CODE],PanelWindow,NULL,
  448.                                                             GTST_String,    "",
  449.                                                         TAG_DONE);
  450.  
  451.                                                         Selected = NULL;
  452.                                                     }
  453.                                                     else
  454.                                                     {
  455.                                                         if(Selected)
  456.                                                         {
  457.                                                             GT_SetGadgetAttrs(GadgetArray[GAD_LIST],PanelWindow,NULL,
  458.                                                                 GTLV_Labels,    &FastMacroList,
  459.                                                                 GTLV_Selected,    GetFastMacroOffset(Selected),
  460.                                                             TAG_DONE);
  461.  
  462.                                                             GT_SetGadgetAttrs(GadgetArray[GAD_CODE],PanelWindow,NULL,
  463.                                                                 GTST_String,    Selected -> mn_Code,
  464.                                                             TAG_DONE);
  465.  
  466.                                                             GT_SetGadgetAttrs(GadgetArray[GAD_MACRO],PanelWindow,NULL,
  467.                                                                 GTST_String,    Selected -> mn_Macro,
  468.                                                             TAG_DONE);
  469.                                                         }
  470.                                                         else
  471.                                                         {
  472.                                                             GT_SetGadgetAttrs(GadgetArray[GAD_LIST],PanelWindow,NULL,
  473.                                                                 GTLV_Labels,    &FastMacroList,
  474.                                                             TAG_DONE);
  475.  
  476.                                                             GT_SetGadgetAttrs(GadgetArray[GAD_CODE],PanelWindow,NULL,
  477.                                                                 GTST_String,    "",
  478.                                                             TAG_DONE);
  479.  
  480.                                                             GT_SetGadgetAttrs(GadgetArray[GAD_MACRO],PanelWindow,NULL,
  481.                                                                 GTST_String,    "",
  482.                                                             TAG_DONE);
  483.                                                         }
  484.                                                     }
  485.  
  486.                                                     if(FastWindow)
  487.                                                     {
  488.                                                         GT_SetGadgetAttrs(FastGadget,FastWindow,NULL,
  489.                                                             GTLV_Labels,    &FastMacroList,
  490.                                                         TAG_DONE);
  491.                                                     }
  492.                                                 }
  493.  
  494.                                                 ClearPointer(PanelWindow);
  495.                                                 PanelWindow -> Flags &= ~WFLG_RMBTRAP;
  496.  
  497.                                                 break;
  498.  
  499.                                     case GAD_SAVE:        strcpy(DummyBuffer,LastFastMacros);
  500.  
  501.                                                 DummyChar = PathPart(DummyBuffer);
  502.  
  503.                                                 *DummyChar = 0;
  504.  
  505.                                                 SetWait(PanelWindow);
  506.                                                 PanelWindow -> Flags |= WFLG_RMBTRAP;
  507.  
  508.                                                 if(FileRequest = GetFile("Save Fast! Macro Settings",DummyBuffer,FilePart(LastFastMacros),DummyBuffer,"#?.term",TRUE,FALSE,FALSE,"Save"))
  509.                                                 {
  510.                                                     if(!SaveFastMacros(DummyBuffer))
  511.                                                         MyEasyRequest(Window,"Couldn't save fast! macro settings\n\"%s\"!","Continue",DummyBuffer);
  512.                                                     else
  513.                                                         strcpy(LastFastMacros,DummyBuffer);
  514.                                                 }
  515.  
  516.                                                 ClearPointer(PanelWindow);
  517.                                                 PanelWindow -> Flags &= ~WFLG_RMBTRAP;
  518.  
  519.                                                 break;
  520.                                 }
  521.                             }
  522.                         }
  523.                     }
  524.  
  525.                     PanelWindow -> Flags |= WFLG_RMBTRAP;
  526.  
  527.                     ClearMenuStrip(PanelWindow);
  528.  
  529.                     RemoveGList(PanelWindow,GadgetList,(UWORD)-1);
  530.  
  531.                     PopWindow();
  532.  
  533.                     CloseWindow(PanelWindow);
  534.                 }
  535.             }
  536.  
  537.             FreeMenus(PanelMenu);
  538.         }
  539.     }
  540.  
  541.     FreeGadgets(GadgetList);
  542. }
  543.