home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / source / term43-source.lha / Extras / Source / term-Source.lha / LibPanelPlus.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-02-07  |  12.7 KB  |  618 lines

  1. /*
  2. **    LibPanelPlus.c
  3. **
  4. **    Editing panel for transfer library configuration
  5. **
  6. **    Copyright © 1990-1995 by Olaf `Olsen' Barthel
  7. **        All Rights Reserved
  8. */
  9.  
  10. #include "termGlobal.h"
  11.  
  12. enum    {    GAD_COMMAND=1000,
  13.         GAD_BUTTON1,GAD_BUTTON2,GAD_BUTTON3,GAD_BUTTON4,GAD_BUTTON5,
  14.         GAD_BUTTON6,GAD_BUTTON7,GAD_BUTTON8,GAD_BUTTON9,GAD_BUTTON10,
  15.  
  16.         GAD_USE,GAD_CANCEL
  17.     };
  18.  
  19. STATIC STRPTR __saveds
  20. ShowTime(struct Gadget *SomeGadget,WORD Level)
  21. {
  22.     return(LocaleSeconds(Level));
  23. }
  24.  
  25. VOID __regargs
  26. ASCIITransferPanel(struct Window *Window,struct Configuration *Config)
  27. {
  28.     struct TransferSettings     OldSettings;
  29.  
  30.     struct LayoutHandle    *Handle;
  31.  
  32.     CopyMem(Config -> TransferConfig,&OldSettings,sizeof(struct TransferSettings));
  33.  
  34.     if(Handle = LT_CreateHandleTags(Window -> WScreen,
  35.         LH_LocaleHook,    &LocaleHook,
  36.     TAG_DONE))
  37.     {
  38.         struct Window *PanelWindow;
  39.  
  40.         LT_New(Handle,
  41.             LA_Type,    VERTICAL_KIND,
  42.         TAG_DONE);
  43.         {
  44.             LT_New(Handle,
  45.                 LA_Type,    VERTICAL_KIND,
  46.                 LA_LabelID,    MSG_INTERNAL_ASCII_TRANSFER_SEND_TXT,
  47.             TAG_DONE);
  48.             {
  49.                 LT_New(Handle,
  50.                     LA_Type,    VERTICAL_KIND,
  51.                 TAG_DONE);
  52.                 {
  53.                     LT_New(Handle,
  54.                         LA_Type,    CYCLE_KIND,
  55.                         LA_LabelID,    MSG_CLIPPANEL_TEXT_PACING_GAD,
  56.                         LA_UBYTE,    &Config -> TransferConfig -> PacingMode,
  57.                         LACY_FirstLabel,MSG_CLIPPANEL_DIRECT_TXT,
  58.                         LACY_LastLabel,    MSG_CLIPPANEL_KEYDELAY_TXT,
  59.                     TAG_DONE);
  60.  
  61.                     LT_EndGroup(Handle);
  62.                 }
  63.  
  64.                 LT_New(Handle,
  65.                     LA_Type,    VERTICAL_KIND,
  66.                     LA_LabelID,    MSG_V36_0021,
  67.                 TAG_DONE);
  68.                 {
  69.                     LT_New(Handle,
  70.                         LA_Type,        SliderType,
  71.                         LA_LabelID,        MSG_CLIPPANEL_CHAR_DELAY_GAD,
  72.                         GTSL_Min,        0,
  73.                         GTSL_Max,        10 * 100,
  74.                         LA_Chars,        10,
  75.                         LA_WORD,        &Config -> TransferConfig -> CharDelay,
  76.                         GTSL_LevelFormat,    "%s s",
  77.                         GTSL_DispFunc,        ShowTime,
  78.                     TAG_DONE);
  79.  
  80.                     LT_New(Handle,
  81.                         LA_Type,        SliderType,
  82.                         LA_LabelID,        MSG_CLIPPANEL_LINE_DELAY_GAD,
  83.                         GTSL_Min,        0,
  84.                         GTSL_Max,        10 * 100,
  85.                         LA_Chars,        10,
  86.                         LA_WORD,        &Config -> TransferConfig -> LineDelay,
  87.                         GTSL_LevelFormat,    "%s s",
  88.                         GTSL_DispFunc,        ShowTime,
  89.                     TAG_DONE);
  90.  
  91.                     LT_EndGroup(Handle);
  92.                 }
  93.  
  94.                 LT_New(Handle,
  95.                     LA_Type,    VERTICAL_KIND,
  96.                     LA_LabelID,    MSG_V36_0024,
  97.                 TAG_DONE);
  98.                 {
  99.                     LT_New(Handle,
  100.                         LA_Type,        STRING_KIND,
  101.                         LA_LabelID,        MSG_CLIPPANEL_LINE_PROMPT_GAD,
  102.                         LA_STRPTR,        Config -> TransferConfig -> LinePrompt,
  103.                         LA_Chars,        10,
  104.                         GTST_MaxChars,        255,
  105.                     TAG_DONE);
  106.  
  107.                     LT_New(Handle,
  108.                         LA_Type,        SliderType,
  109.                         LA_LabelID,        MSG_CLIPPANEL_SEND_TIMEOUT_GAD,
  110.                         GTSL_Min,        0,
  111.                         GTSL_Max,        10 * 100,
  112.                         LA_WORD,        &Config -> TransferConfig -> SendTimeout,
  113.                         GTSL_LevelFormat,    "%s s",
  114.                         GTSL_DispFunc,        ShowTime,
  115.                     TAG_DONE);
  116.  
  117.                     LT_EndGroup(Handle);
  118.                 }
  119.  
  120.  
  121.                 LT_New(Handle,
  122.                     LA_Type,    VERTICAL_KIND,
  123.                 TAG_DONE);
  124.                 {
  125.                     LT_New(Handle,
  126.                         LA_Type,    CYCLE_KIND,
  127.                         LA_LabelID,    MSG_TERMINALPANEL_SEND_CR_GAD,
  128.                         LA_BYTE,    &Config -> TransferConfig -> SendCR,
  129.                         GTCY_Labels,    EOL_Labels,
  130.                     TAG_DONE);
  131.  
  132.                     LT_New(Handle,
  133.                         LA_Type,    CYCLE_KIND,
  134.                         LA_LabelID,    MSG_TERMINALPANEL_SEND_LF_GAD,
  135.                         LA_BYTE,    &Config -> TransferConfig -> SendLF,
  136.                         GTCY_Labels,    EOL_Labels,
  137.                     TAG_DONE);
  138.  
  139.                     LT_EndGroup(Handle);
  140.                 }
  141.  
  142.                 LT_EndGroup(Handle);
  143.             }
  144.  
  145.             LT_New(Handle,
  146.                 LA_Type,    VERTICAL_KIND,
  147.                 LA_LabelID,    MSG_INTERNAL_ASCII_TRANSFER_RECEIVE_TXT,
  148.             TAG_DONE);
  149.             {
  150.                 LT_New(Handle,
  151.                     LA_Type,    CYCLE_KIND,
  152.                     LA_LabelID,    MSG_TERMINALPANEL_RECEIVE_CR_GAD,
  153.                     LA_BYTE,    &Config -> TransferConfig -> ReceiveCR,
  154.                     GTCY_Labels,    EOL_Labels,
  155.                 TAG_DONE);
  156.  
  157.                 LT_New(Handle,
  158.                     LA_Type,    CYCLE_KIND,
  159.                     LA_LabelID,    MSG_TERMINALPANEL_RECEIVE_LF_GAD,
  160.                     LA_BYTE,    &Config -> TransferConfig -> ReceiveLF,
  161.                     GTCY_Labels,    EOL_Labels,
  162.                 TAG_DONE);
  163.  
  164.                 LT_New(Handle,
  165.                     LA_Type,    CHECKBOX_KIND,
  166.                     LA_LabelID,    MSG_INTERNAL_ASCII_TRANSFER_IGNORE_DATA_PAST_ARNOLD_TXT,
  167.                     LA_BYTE,    &Config -> TransferConfig -> IgnoreDataPastArnold,
  168.                 TAG_DONE);
  169.  
  170.                 LT_New(Handle,
  171.                     LA_Type,    INTEGER_KIND,
  172.                     LA_LabelID,    MSG_INTERNAL_ASCII_TRANSFER_TERMINATOR_CHAR_TXT,
  173.                     LA_BYTE,    &Config -> TransferConfig -> TerminatorChar,
  174.                     LAIN_Min,    0,
  175.                     LAIN_Max,    255,
  176.                 TAG_DONE);
  177.  
  178.                 LT_EndGroup(Handle);
  179.             }
  180.  
  181.             LT_New(Handle,
  182.                 LA_Type,    VERTICAL_KIND,
  183.                 LA_LabelID,    MSG_INTERNAL_ASCII_TRANSFER_GENERAL_TXT,
  184.             TAG_DONE);
  185.             {
  186.                 LT_New(Handle,
  187.                     LA_Type,    CHECKBOX_KIND,
  188.                     LA_LabelID,    MSG_LIBPANEL_QUIET_TRANSFER_GAD,
  189.                     LA_BYTE,    &Config -> TransferConfig -> QuietTransfer,
  190.                 TAG_DONE);
  191.  
  192.                 LT_New(Handle,
  193.                     LA_Type,    CHECKBOX_KIND,
  194.                     LA_LabelID,    MSG_INTERNAL_ASCII_TRANSFER_STRIP_BIT_7_TXT,
  195.                     LA_BYTE,    &Config -> TransferConfig -> StripBit8,
  196.                 TAG_DONE);
  197.  
  198.                 LT_EndGroup(Handle);
  199.             }
  200.  
  201.             LT_New(Handle,
  202.                 LA_Type,VERTICAL_KIND,
  203.             TAG_DONE);
  204.             {
  205.                 LT_New(Handle,
  206.                     LA_Type,    XBAR_KIND,
  207.                     LAXB_FullSize,    TRUE,
  208.                 TAG_DONE);
  209.  
  210.                 LT_EndGroup(Handle);
  211.             }
  212.  
  213.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  214.                 LAGR_SameSize,    TRUE,
  215.                 LAGR_Spread,    TRUE,
  216.             TAG_DONE);
  217.             {
  218.                 LT_New(Handle,
  219.                     LA_Type,    BUTTON_KIND,
  220.                     LA_LabelID,    MSG_GLOBAL_USE_GAD,
  221.                     LA_ID,        GAD_USE,
  222.                     LABT_ReturnKey,    TRUE,
  223.                     LABT_ExtraFat,    TRUE,
  224.                 TAG_DONE);
  225.  
  226.                 LT_New(Handle,
  227.                     LA_Type,    BUTTON_KIND,
  228.                     LA_LabelID,    MSG_GLOBAL_CANCEL_GAD,
  229.                     LA_ID,        GAD_CANCEL,
  230.                     LABT_EscKey,    TRUE,
  231.                     LABT_ExtraFat,    TRUE,
  232.                 TAG_DONE);
  233.  
  234.                 LT_EndGroup(Handle);
  235.             }
  236.  
  237.             LT_EndGroup(Handle);
  238.         }
  239.  
  240.         if(PanelWindow = LT_Layout(Handle,LocaleString(MSG_INTERNAL_ASCII_TRANSFER_TRANSFER_TXT),NULL,0,0,IDCMP_CLOSEWINDOW,0,
  241.             LAWN_HelpHook,        &GuideHook,
  242.             LAWN_Parent,        Window,
  243.             WA_DepthGadget,        TRUE,
  244.             WA_CloseGadget,        TRUE,
  245.             WA_DragBar,        TRUE,
  246.             WA_RMBTrap,        TRUE,
  247.             WA_Activate,        TRUE,
  248.         TAG_DONE))
  249.         {
  250.             struct IntuiMessage    *Message;
  251.             BOOLEAN             Done = FALSE;
  252.             ULONG             MsgClass,
  253.                          MsgQualifier;
  254.             UWORD             MsgCode;
  255.             struct Gadget        *MsgGadget;
  256.  
  257.             GuideContext(CONTEXT_ASCII_TRANSFER_SETTINGS);
  258.  
  259.             PushWindow(PanelWindow);
  260.  
  261.             LT_ShowWindow(Handle,TRUE);
  262.  
  263.             do
  264.             {
  265.                 if(Wait(PORTMASK(PanelWindow -> UserPort) | SIG_BREAK) & SIG_BREAK)
  266.                 {
  267.                     CopyMem(&OldSettings,Config -> TransferConfig,sizeof(struct TransferSettings));
  268.  
  269.                     break;
  270.                 }
  271.  
  272.                 while(Message = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort))
  273.                 {
  274.                     MsgClass    = Message -> Class;
  275.                     MsgQualifier    = Message -> Qualifier;
  276.                     MsgCode        = Message -> Code;
  277.                     MsgGadget    = (struct Gadget *)Message -> IAddress;
  278.  
  279.                     GT_ReplyIMsg(Message);
  280.  
  281.                     LT_HandleInput(Handle,MsgQualifier,&MsgClass,&MsgCode,&MsgGadget);
  282.  
  283.                     if(MsgClass == IDCMP_CLOSEWINDOW)
  284.                     {
  285.                         CopyMem(&OldSettings,Config -> TransferConfig,sizeof(struct TransferSettings));
  286.  
  287.                         Done = TRUE;
  288.                     }
  289.  
  290.                     if(MsgClass == IDCMP_GADGETUP)
  291.                     {
  292.                         switch(MsgGadget -> GadgetID)
  293.                         {
  294.                             case GAD_USE:
  295.  
  296.                                 LT_UpdateStrings(Handle);
  297.  
  298.                                 Done = TRUE;
  299.                                 break;
  300.  
  301.                             case GAD_CANCEL:
  302.  
  303.                                 CopyMem(&OldSettings,Config -> TransferConfig,sizeof(struct TransferSettings));
  304.  
  305.                                 Done = TRUE;
  306.                                 break;
  307.                         }
  308.                     }
  309.                 }
  310.             }
  311.             while(!Done);
  312.  
  313.             PopWindow();
  314.         }
  315.  
  316.         LT_DeleteHandle(Handle);
  317.     }
  318. }
  319.  
  320. BOOLEAN __regargs
  321. ExternalCommandPanel(struct Window *Parent,STRPTR Command)
  322. {
  323.     LayoutHandle    *Handle;
  324.     BOOLEAN         Result = FALSE;
  325.  
  326.     if(Handle = LT_CreateHandleTags(Parent -> WScreen,
  327.         LH_LocaleHook,    &LocaleHook,
  328.     TAG_DONE))
  329.     {
  330.         STATIC LONG ButtonLabels[] =
  331.         {
  332.             MSG_XFER_BUTTON1_TXT,MSG_XFER_BUTTON2_TXT,
  333.             MSG_XFER_BUTTON3_TXT,MSG_XFER_BUTTON4_TXT,
  334.             MSG_XFER_BUTTON5_TXT,MSG_XFER_BUTTON6_TXT,
  335.             MSG_XFER_BUTTON7_TXT,MSG_XFER_BUTTON8_TXT,
  336.             MSG_XFER_BUTTON9_TXT,MSG_XFER_BUTTON10_TXT,
  337.         };
  338.  
  339.         struct Window    *PanelWindow;
  340.         UBYTE         LocalCommand[MAX_FILENAME_LENGTH];
  341.         WORD         i,Len,Max;
  342.  
  343.         strcpy(LocalCommand,Command);
  344.  
  345.         for(i = Max = 0 ; i < 10 ; i++)
  346.         {
  347.             if((Len = LT_LabelChars(Handle,LocaleString(ButtonLabels[i]))) > Max)
  348.                 Max = Len;
  349.         }
  350.  
  351.         LT_New(Handle,
  352.             LA_Type,    VERTICAL_KIND,
  353.         TAG_DONE);
  354.         {
  355.             LT_New(Handle,
  356.                 LA_Type,    VERTICAL_KIND,
  357.             TAG_DONE);
  358.             {
  359.                 LT_New(Handle,
  360.                     LA_Type,    STRING_KIND,
  361.                     LA_ID,        GAD_COMMAND,
  362.                     LA_LabelID,    MSG_XFER_COMMAND_TXT,
  363.                     LA_Chars,    50,
  364.                     LA_STRPTR,    LocalCommand,
  365.                     GTST_MaxChars,    MAX_FILENAME_LENGTH,
  366.                     LAST_Picker,    TRUE,
  367.                 TAG_DONE);
  368.  
  369.                 LT_New(Handle,
  370.                     LA_Type,    XBAR_KIND,
  371.                 TAG_DONE);
  372.  
  373.                 LT_EndGroup(Handle);
  374.             }
  375.  
  376.             LT_New(Handle,
  377.                 LA_Type,    VERTICAL_KIND,
  378.             TAG_DONE);
  379.             {
  380.                 LT_New(Handle,
  381.                     LA_Type,    HORIZONTAL_KIND,
  382.                     LAGR_SameSize,    TRUE,
  383.                 TAG_DONE);
  384.                 {
  385.                     for(i = 0 ; i < 5 ; i++)
  386.                     {
  387.                         LT_New(Handle,
  388.                             LA_Type,    BUTTON_KIND,
  389.                             LA_Chars,    Max,
  390.                             LA_ID,        GAD_BUTTON1 + i,
  391.                             LA_LabelID,    ButtonLabels[i],
  392.                         TAG_DONE);
  393.                     }
  394.  
  395.                     LT_EndGroup(Handle);
  396.                 }
  397.  
  398.                 LT_New(Handle,
  399.                     LA_Type,    HORIZONTAL_KIND,
  400.                     LAGR_SameSize,    TRUE,
  401.                 TAG_DONE);
  402.                 {
  403.                     for(i = 5 ; i < 10 ; i++)
  404.                     {
  405.                         LT_New(Handle,
  406.                             LA_Type,    BUTTON_KIND,
  407.                             LA_Chars,    Max,
  408.                             LA_ID,        GAD_BUTTON1 + i,
  409.                             LA_LabelID,    ButtonLabels[i],
  410.                         TAG_DONE);
  411.                     }
  412.  
  413.                     LT_EndGroup(Handle);
  414.                 }
  415.  
  416.                 LT_EndGroup(Handle);
  417.             }
  418.  
  419.             LT_New(Handle,
  420.                 LA_Type,VERTICAL_KIND,
  421.             TAG_DONE);
  422.             {
  423.                 LT_New(Handle,
  424.                     LA_Type,    XBAR_KIND,
  425.                     LAXB_FullSize,    TRUE,
  426.                 TAG_DONE);
  427.  
  428.                 LT_EndGroup(Handle);
  429.             }
  430.  
  431.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  432.                 LAGR_SameSize,    TRUE,
  433.                 LAGR_Spread,    TRUE,
  434.             TAG_DONE);
  435.             {
  436.                 LT_New(Handle,
  437.                     LA_Type,    BUTTON_KIND,
  438.                     LA_LabelID,    MSG_GLOBAL_USE_GAD,
  439.                     LA_ID,        GAD_USE,
  440.                     LABT_ReturnKey,    TRUE,
  441.                     LABT_ExtraFat,    TRUE,
  442.                 TAG_DONE);
  443.  
  444.                 LT_New(Handle,
  445.                     LA_Type,    BUTTON_KIND,
  446.                     LA_LabelID,    MSG_GLOBAL_CANCEL_GAD,
  447.                     LA_ID,        GAD_CANCEL,
  448.                     LABT_EscKey,    TRUE,
  449.                     LABT_ExtraFat,    TRUE,
  450.                 TAG_DONE);
  451.  
  452.                 LT_EndGroup(Handle);
  453.             }
  454.  
  455.             LT_EndGroup(Handle);
  456.         }
  457.  
  458.         if(PanelWindow = LT_Build(Handle,
  459.             LAWN_TitleID,        MSG_EXTERNAL_PROGRAM_TXT,
  460.             LAWN_IDCMP,        IDCMP_CLOSEWINDOW,
  461.             LAWN_HelpHook,        &GuideHook,
  462.             LAWN_Parent,        Parent,
  463.             WA_DepthGadget,        TRUE,
  464.             WA_CloseGadget,        TRUE,
  465.             WA_DragBar,        TRUE,
  466.             WA_RMBTrap,        TRUE,
  467.             WA_Activate,        TRUE,
  468.         TAG_DONE))
  469.         {
  470.             STATIC STRPTR Strings[] =
  471.             {
  472.                 " %f",
  473.                 " %m",
  474.                 " %p",
  475.                 " %d",
  476.                 " %u",
  477.                 " %<",
  478.                 " %>",
  479.                 " %s",
  480.                 " %b",
  481.                 " %c",
  482.             };
  483.  
  484.             struct IntuiMessage    *Message;
  485.             BOOLEAN             Done = FALSE;
  486.             ULONG             MsgClass,
  487.                          MsgQualifier;
  488.             UWORD             MsgCode;
  489.             struct Gadget        *MsgGadget;
  490.  
  491.             GuideContext(CONTEXT_PARAMETERS);
  492.  
  493.             PushWindow(PanelWindow);
  494.  
  495.             LT_ShowWindow(Handle,TRUE);
  496.  
  497.             do
  498.             {
  499.                 if(Wait(PORTMASK(PanelWindow -> UserPort) | SIG_BREAK) & SIG_BREAK)
  500.                     break;
  501.  
  502.                 while(Message = (struct IntuiMessage *)LT_GetIMsg(Handle))
  503.                 {
  504.                     MsgClass    = Message -> Class;
  505.                     MsgQualifier    = Message -> Qualifier;
  506.                     MsgCode        = Message -> Code;
  507.                     MsgGadget    = (struct Gadget *)Message -> IAddress;
  508.  
  509.                     LT_ReplyIMsg(Message);
  510.  
  511.                     if(MsgClass == IDCMP_CLOSEWINDOW)
  512.                         Done = TRUE;
  513.  
  514.                     if(MsgClass == IDCMP_GADGETUP)
  515.                     {
  516.                         switch(MsgGadget -> GadgetID)
  517.                         {
  518.                             case GAD_USE:
  519.  
  520.                                 strcpy(Command,LocalCommand);
  521.  
  522.                                 Result = Done = TRUE;
  523.                                 break;
  524.  
  525.                             case GAD_CANCEL:
  526.  
  527.                                 Done = TRUE;
  528.                                 break;
  529.  
  530.                             default:
  531.  
  532.                                 if(MsgGadget -> GadgetID >= GAD_BUTTON1 && MsgGadget -> GadgetID <= GAD_BUTTON8)
  533.                                 {
  534.                                     LT_LockWindow(PanelWindow);
  535.  
  536.                                     if(strlen(LocalCommand) + 3 < 256)
  537.                                     {
  538.                                         strcat(LocalCommand,Strings[MsgGadget -> GadgetID - GAD_BUTTON1]);
  539.  
  540.                                         LT_SetAttributes(Handle,GAD_COMMAND,
  541.                                             GTST_String,        LocalCommand,
  542.                                             LAST_CursorPosition,    -1,
  543.                                         TAG_DONE);
  544.                                     }
  545.                                     else
  546.                                         DisplayBeep(PanelWindow -> WScreen);
  547.  
  548.                                     LT_UnlockWindow(PanelWindow);
  549.                                 }
  550.  
  551.                                 break;
  552.                         }
  553.                     }
  554.  
  555.                     if(MsgClass == IDCMP_IDCMPUPDATE)
  556.                     {
  557.                         struct FileRequester    *FileRequest;
  558.                         STRPTR             Index,Name,Args;
  559.  
  560.                         LT_LockWindow(PanelWindow);
  561.  
  562.                         strcpy(SharedBuffer,LocalCommand);
  563.  
  564.                         Index = PathPart(SharedBuffer);
  565.  
  566.                         *Index++ = 0;
  567.  
  568.                         Name = Index;
  569.  
  570.                         while(*Index && *Index != ' ')
  571.                             Index++;
  572.  
  573.                         if(*Index == ' ')
  574.                         {
  575.                             *Index = 0;
  576.  
  577.                             Args = &LocalCommand[(ULONG)Index - (ULONG)&SharedBuffer[0] + 1];
  578.                         }
  579.                         else
  580.                             Args = NULL;
  581.  
  582.                         if(FileRequest = GetFile(Window,LocaleString(MSG_XFER_SELECT_COMMAND_TXT),SharedBuffer,Name,SharedBuffer,NULL,FALSE,FALSE,FALSE,LocaleString(MSG_GLOBAL_SELECT_TXT),FALSE))
  583.                         {
  584.                             LONG Len = strlen(SharedBuffer);
  585.  
  586.                             if(Len < 253 && Args)
  587.                             {
  588.                                 strcat(SharedBuffer," ");
  589.  
  590.                                 Len++;
  591.  
  592.                                 memcpy(SharedBuffer + Len,Args,255 - Len);
  593.  
  594.                                 SharedBuffer[255] = 0;
  595.                             }
  596.  
  597.                             LT_SetAttributes(Handle,GAD_COMMAND,
  598.                                 GTST_String,SharedBuffer,
  599.                             TAG_DONE);
  600.  
  601.                             FreeAslRequest(FileRequest);
  602.                         }
  603.  
  604.                         LT_UnlockWindow(PanelWindow);
  605.                     }
  606.                 }
  607.             }
  608.             while(!Done);
  609.  
  610.             PopWindow();
  611.         }
  612.  
  613.         LT_DeleteHandle(Handle);
  614.     }
  615.  
  616.     return(Result);
  617. }
  618.