home *** CD-ROM | disk | FTP | other *** search
/ BCI NET / BCI NET Dec 94.iso / archives / telecomm / terms / term-4.1-source.lha / Extras / Source / term-Source.lha / LibPanel.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-07-31  |  19.4 KB  |  870 lines

  1. /*
  2. **    LibPanel.c
  3. **
  4. **    Editing panel for transfer library configuration
  5. **
  6. **    Copyright © 1990-1994 by Olaf `Olsen' Barthel
  7. **        All Rights Reserved
  8. */
  9.  
  10. #include "termGlobal.h"
  11.  
  12. enum    {    GAD_DEFAULT_LIB=1000,
  13.         GAD_ASCII_UPLOAD_LIB,GAD_ASCII_DOWNLOAD_LIB,
  14.         GAD_TEXT_UPLOAD_LIB,GAD_TEXT_DOWNLOAD_LIB,
  15.         GAD_BINARY_UPLOAD_LIB,GAD_BINARY_DOWNLOAD_LIB,
  16.         GAD_MANGLE,GAD_INTERNAL_ASCII_PREFS,
  17.         GAD_USE,GAD_CANCEL,GAD_DEFAULT,
  18.  
  19.         GAD_DEFAULT_PREFS,
  20.         GAD_ASCII_UPLOAD_PREFS,GAD_ASCII_DOWNLOAD_PREFS,
  21.         GAD_TEXT_UPLOAD_PREFS,GAD_TEXT_DOWNLOAD_PREFS,
  22.         GAD_BINARY_UPLOAD_PREFS,GAD_BINARY_DOWNLOAD_PREFS
  23.     };
  24.  
  25. STATIC STRPTR __saveds
  26. ShowTime(struct Gadget *SomeGadget,WORD Level)
  27. {
  28.     return(LocaleSeconds(Level));
  29. }
  30.  
  31. STATIC VOID __regargs
  32. ASCIITransferPanel(struct Window *Window,struct Configuration *Config)
  33. {
  34.     struct TransferSettings     OldSettings;
  35.  
  36.     struct LayoutHandle    *Handle;
  37.  
  38.     CopyMem(Config -> TransferConfig,&OldSettings,sizeof(struct TransferSettings));
  39.  
  40.     if(Handle = LT_CreateHandleTags(Window -> WScreen,
  41.         LH_LocaleHook,    &LocaleHook,
  42.     TAG_DONE))
  43.     {
  44.         struct Window *PanelWindow;
  45.  
  46.         LT_New(Handle,
  47.             LA_Type,    VERTICAL_KIND,
  48.         TAG_DONE);
  49.         {
  50.             LT_New(Handle,
  51.                 LA_Type,    VERTICAL_KIND,
  52.                 LA_LabelID,    MSG_INTERNAL_ASCII_TRANSFER_SEND_TXT,
  53.             TAG_DONE);
  54.             {
  55.                 LT_New(Handle,
  56.                     LA_Type,    VERTICAL_KIND,
  57.                 TAG_DONE);
  58.                 {
  59.                     LT_New(Handle,
  60.                         LA_Type,    CYCLE_KIND,
  61.                         LA_LabelID,    MSG_CLIPPANEL_TEXT_PACING_GAD,
  62.                         LA_UBYTE,    &Config -> TransferConfig -> PacingMode,
  63.                         LACY_FirstLabel,MSG_CLIPPANEL_DIRECT_TXT,
  64.                         LACY_LastLabel,    MSG_CLIPPANEL_KEYDELAY_TXT,
  65.                     TAG_DONE);
  66.  
  67.                     LT_EndGroup(Handle);
  68.                 }
  69.  
  70.                 LT_New(Handle,
  71.                     LA_Type,    VERTICAL_KIND,
  72.                     LA_LabelID,    MSG_V36_0021,
  73.                 TAG_DONE);
  74.                 {
  75.                     LT_New(Handle,
  76.                         LA_Type,        SLIDER_KIND,
  77.                         LA_LabelID,        MSG_CLIPPANEL_CHAR_DELAY_GAD,
  78.                         GTSL_Min,        0,
  79.                         GTSL_Max,        10 * 100,
  80.                         LA_Chars,        10,
  81.                         LA_WORD,        &Config -> TransferConfig -> CharDelay,
  82.                         GTSL_LevelFormat,    "%s s",
  83.                         GTSL_DispFunc,        ShowTime,
  84.                     TAG_DONE);
  85.     
  86.                     LT_New(Handle,
  87.                         LA_Type,        SLIDER_KIND,
  88.                         LA_LabelID,        MSG_CLIPPANEL_LINE_DELAY_GAD,
  89.                         GTSL_Min,        0,
  90.                         GTSL_Max,        10 * 100,
  91.                         LA_Chars,        10,
  92.                         LA_WORD,        &Config -> TransferConfig -> LineDelay,
  93.                         GTSL_LevelFormat,    "%s s",
  94.                         GTSL_DispFunc,        ShowTime,
  95.                     TAG_DONE);
  96.  
  97.                     LT_EndGroup(Handle);
  98.                 }
  99.  
  100.                 LT_New(Handle,
  101.                     LA_Type,    VERTICAL_KIND,
  102.                     LA_LabelID,    MSG_V36_0024,
  103.                 TAG_DONE);
  104.                 {
  105.                     LT_New(Handle,
  106.                         LA_Type,        STRING_KIND,
  107.                         LA_LabelID,        MSG_CLIPPANEL_LINE_PROMPT_GAD,
  108.                         LA_STRPTR,        Config -> TransferConfig -> LinePrompt,
  109.                         LA_Chars,        10,
  110.                         GTST_MaxChars,        255,
  111.                     TAG_DONE);
  112.  
  113.                     LT_New(Handle,
  114.                         LA_Type,        SLIDER_KIND,
  115.                         LA_LabelID,        MSG_CLIPPANEL_SEND_TIMEOUT_GAD,
  116.                         GTSL_Min,        0,
  117.                         GTSL_Max,        10 * 100,
  118.                         LA_WORD,        &Config -> TransferConfig -> SendTimeout,
  119.                         GTSL_LevelFormat,    "%s s",
  120.                         GTSL_DispFunc,        ShowTime,
  121.                     TAG_DONE);
  122.  
  123.                     LT_EndGroup(Handle);
  124.                 }
  125.  
  126.  
  127.                 LT_New(Handle,
  128.                     LA_Type,    VERTICAL_KIND,
  129.                 TAG_DONE);
  130.                 {
  131.                     LT_New(Handle,
  132.                         LA_Type,    CYCLE_KIND,
  133.                         LA_LabelID,    MSG_TERMINALPANEL_SEND_CR_GAD,
  134.                         LA_BYTE,    &Config -> TransferConfig -> SendCR,
  135.                         GTCY_Labels,    EOL_Labels,
  136.                     TAG_DONE);
  137.     
  138.                     LT_New(Handle,
  139.                         LA_Type,    CYCLE_KIND,
  140.                         LA_LabelID,    MSG_TERMINALPANEL_SEND_LF_GAD,
  141.                         LA_BYTE,    &Config -> TransferConfig -> SendLF,
  142.                         GTCY_Labels,    EOL_Labels,
  143.                     TAG_DONE);
  144.  
  145.                     LT_EndGroup(Handle);
  146.                 }
  147.  
  148.                 LT_EndGroup(Handle);
  149.             }
  150.  
  151.             LT_New(Handle,
  152.                 LA_Type,    VERTICAL_KIND,
  153.                 LA_LabelID,    MSG_INTERNAL_ASCII_TRANSFER_RECEIVE_TXT,
  154.             TAG_DONE);
  155.             {
  156.                 LT_New(Handle,
  157.                     LA_Type,    CYCLE_KIND,
  158.                     LA_LabelID,    MSG_TERMINALPANEL_RECEIVE_CR_GAD,
  159.                     LA_BYTE,    &Config -> TransferConfig -> ReceiveCR,
  160.                     GTCY_Labels,    EOL_Labels,
  161.                 TAG_DONE);
  162.     
  163.                 LT_New(Handle,
  164.                     LA_Type,    CYCLE_KIND,
  165.                     LA_LabelID,    MSG_TERMINALPANEL_RECEIVE_LF_GAD,
  166.                     LA_BYTE,    &Config -> TransferConfig -> ReceiveLF,
  167.                     GTCY_Labels,    EOL_Labels,
  168.                 TAG_DONE);
  169.  
  170.                 LT_New(Handle,
  171.                     LA_Type,    CHECKBOX_KIND,
  172.                     LA_LabelID,    MSG_INTERNAL_ASCII_TRANSFER_IGNORE_DATA_PAST_ARNOLD_TXT,
  173.                     LA_BYTE,    &Config -> TransferConfig -> IgnoreDataPastArnold,
  174.                 TAG_DONE);
  175.  
  176.                 LT_New(Handle,
  177.                     LA_Type,    INTEGER_KIND,
  178.                     LA_LabelID,    MSG_INTERNAL_ASCII_TRANSFER_TERMINATOR_CHAR_TXT,
  179.                     LA_BYTE,    &Config -> TransferConfig -> TerminatorChar,
  180.                     LAIN_Min,    0,
  181.                     LAIN_Max,    255,
  182.                 TAG_DONE);
  183.  
  184.                 LT_EndGroup(Handle);
  185.             }
  186.  
  187.             LT_New(Handle,
  188.                 LA_Type,    VERTICAL_KIND,
  189.                 LA_LabelID,    MSG_INTERNAL_ASCII_TRANSFER_GENERAL_TXT,
  190.             TAG_DONE);
  191.             {
  192.                 LT_New(Handle,
  193.                     LA_Type,    CHECKBOX_KIND,
  194.                     LA_LabelID,    MSG_LIBPANEL_QUIET_TRANSFER_GAD,
  195.                     LA_BYTE,    &Config -> TransferConfig -> QuietTransfer,
  196.                 TAG_DONE);
  197.  
  198.                 LT_New(Handle,
  199.                     LA_Type,    CHECKBOX_KIND,
  200.                     LA_LabelID,    MSG_INTERNAL_ASCII_TRANSFER_STRIP_BIT_7_TXT,
  201.                     LA_BYTE,    &Config -> TransferConfig -> StripBit8,
  202.                 TAG_DONE);
  203.  
  204.                 LT_EndGroup(Handle);
  205.             }
  206.  
  207.             LT_New(Handle,
  208.                 LA_Type,VERTICAL_KIND,
  209.             TAG_DONE);
  210.             {
  211.                 LT_New(Handle,
  212.                     LA_Type,    XBAR_KIND,
  213.                     LAXB_FullSize,    TRUE,
  214.                 TAG_DONE);
  215.  
  216.                 LT_EndGroup(Handle);
  217.             }
  218.  
  219.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  220.                 LAGR_SameSize,    TRUE,
  221.                 LAGR_Spread,    TRUE,
  222.             TAG_DONE);
  223.             {
  224.                 LT_New(Handle,
  225.                     LA_Type,    BUTTON_KIND,
  226.                     LA_LabelID,    MSG_GLOBAL_USE_GAD,
  227.                     LA_ID,        GAD_USE,
  228.                     LABT_ReturnKey,    TRUE,
  229.                     LABT_ExtraFat,    TRUE,
  230.                 TAG_DONE);
  231.  
  232.                 LT_New(Handle,
  233.                     LA_Type,    BUTTON_KIND,
  234.                     LA_LabelID,    MSG_GLOBAL_CANCEL_GAD,
  235.                     LA_ID,        GAD_CANCEL,
  236.                     LABT_EscKey,    TRUE,
  237.                     LABT_ExtraFat,    TRUE,
  238.                 TAG_DONE);
  239.  
  240.                 LT_EndGroup(Handle);
  241.             }
  242.  
  243.             LT_EndGroup(Handle);
  244.         }
  245.  
  246.         if(PanelWindow = LT_Layout(Handle,LocaleString(MSG_INTERNAL_ASCII_TRANSFER_TRANSFER_TXT),NULL,0,0,IDCMP_CLOSEWINDOW,0,
  247.             LAWN_HelpHook,        &GuideHook,
  248.             LAWN_Parent,        Window,
  249.             WA_DepthGadget,        TRUE,
  250.             WA_CloseGadget,        TRUE,
  251.             WA_DragBar,        TRUE,
  252.             WA_RMBTrap,        TRUE,
  253.             WA_Activate,        TRUE,
  254.         TAG_DONE))
  255.         {
  256.             struct IntuiMessage    *Message;
  257.             BOOLEAN             Done = FALSE;
  258.             ULONG             MsgClass,
  259.                          MsgQualifier;
  260.             UWORD             MsgCode;
  261.             struct Gadget        *MsgGadget;
  262.  
  263. /*            GuideContext(CONTEXT_CLIP);*/
  264.  
  265.             PushWindow(PanelWindow);
  266.  
  267.             LT_ShowWindow(Handle,TRUE);
  268.  
  269.             do
  270.             {
  271.                 if(Wait(PORTMASK(PanelWindow -> UserPort) | SIG_BREAK) & SIG_BREAK)
  272.                 {
  273.                     CopyMem(&OldSettings,Config -> TransferConfig,sizeof(struct TransferSettings));
  274.  
  275.                     break;
  276.                 }
  277.  
  278.                 while(Message = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort))
  279.                 {
  280.                     MsgClass    = Message -> Class;
  281.                     MsgQualifier    = Message -> Qualifier;
  282.                     MsgCode        = Message -> Code;
  283.                     MsgGadget    = (struct Gadget *)Message -> IAddress;
  284.  
  285.                     GT_ReplyIMsg(Message);
  286.  
  287.                     LT_HandleInput(Handle,MsgQualifier,&MsgClass,&MsgCode,&MsgGadget);
  288.  
  289.                     if(MsgClass == IDCMP_CLOSEWINDOW)
  290.                     {
  291.                         CopyMem(&OldSettings,Config -> TransferConfig,sizeof(struct TransferSettings));
  292.  
  293.                         Done = TRUE;
  294.                     }
  295.  
  296.                     if(MsgClass == IDCMP_GADGETUP)
  297.                     {
  298.                         switch(MsgGadget -> GadgetID)
  299.                         {
  300.                             case GAD_USE:
  301.  
  302.                                 Done = TRUE;
  303.                                 break;
  304.  
  305.                             case GAD_CANCEL:
  306.  
  307.                                 CopyMem(&OldSettings,Config -> TransferConfig,sizeof(struct TransferSettings));
  308.  
  309.                                 Done = TRUE;
  310.                                 break;
  311.                         }
  312.                     }
  313.                 }
  314.             }
  315.             while(!Done);
  316.  
  317.             PopWindow();
  318.         }
  319.  
  320.         LT_DeleteHandle(Handle);
  321.     }
  322. }
  323.  
  324. BYTE __regargs
  325. LibPanel(struct Configuration *Config,BYTE *Default)
  326. {
  327.     struct LayoutHandle    *Handle;
  328.     BYTE             OpenIt = TRUE,
  329.                  Cancel = FALSE;
  330.  
  331.     SaveConfig(Config,PrivateConfig);
  332.  
  333.     if(Handle = LT_CreateHandleTags(Window -> WScreen,
  334.         LH_LocaleHook,    &LocaleHook,
  335.     TAG_DONE))
  336.     {
  337.         struct Window *PanelWindow;
  338.  
  339.         LT_New(Handle,
  340.             LA_Type,    VERTICAL_KIND,
  341.         TAG_DONE);
  342.         {
  343.             LT_New(Handle,
  344.                 LA_Type,    HORIZONTAL_KIND,
  345.             TAG_DONE);
  346.             {
  347.                 LT_New(Handle,
  348.                     LA_Type,    STRING_KIND,
  349.                     LA_LabelID,    MSG_LIBPANEL_DEFAULT_TRANSFER_LIBRARY_GAD,
  350.                     LA_STRPTR,    Config -> TransferConfig -> DefaultLibrary,
  351.                     LA_Chars,    20,
  352.                     LA_ID,        GAD_DEFAULT_LIB,
  353.                     GTST_MaxChars,    MAX_FILENAME_LENGTH,
  354.                     LAST_Picker,    TRUE,
  355.                 TAG_DONE);
  356.  
  357.                 LT_New(Handle,
  358.                     LA_Type,    BUTTON_KIND,
  359.                     LA_LabelID,    MSG_LIBPANEL_PREFS_GAD,
  360.                     LA_ID,        GAD_DEFAULT_PREFS,
  361.                 TAG_DONE);
  362.  
  363.                 LT_EndGroup(Handle);
  364.             }
  365.  
  366.             LT_New(Handle,
  367.                 LA_Type,    VERTICAL_KIND,
  368.             TAG_DONE);
  369.             {
  370.                 LT_New(Handle,
  371.                     LA_Type,    CHECKBOX_KIND,
  372.                     LA_LabelID,    MSG_MANGLE_UPLOAD_FILENAMES_TXT,
  373.                     LA_BYTE,    &Config -> TransferConfig -> MangleFileNames,
  374.                     LA_ID,        GAD_MANGLE,
  375.                 TAG_DONE);
  376.  
  377.                 LT_New(Handle,
  378.                     LA_Type,    XBAR_KIND,
  379.                 TAG_DONE);
  380.  
  381.                 LT_EndGroup(Handle);
  382.             }
  383.  
  384.             LT_New(Handle,
  385.                 LA_Type,    VERTICAL_KIND,
  386.                 LA_LabelID,    MSG_V36_0089,
  387.             TAG_DONE);
  388.             {
  389.                 LT_New(Handle,
  390.                     LA_Type,    HORIZONTAL_KIND,
  391.                 TAG_DONE);
  392.                 {
  393.                     LT_New(Handle,
  394.                         LA_Type,    STRING_KIND,
  395.                         LA_LabelID,    MSG_LIBPANEL_ASCII_UPLOAD_LIBRARY_GAD,
  396.                         LA_STRPTR,    Config -> TransferConfig -> ASCIIUploadLibrary,
  397.                         LA_Chars,    20,
  398.                         LA_ID,        GAD_ASCII_UPLOAD_LIB,
  399.                         GTST_MaxChars,    MAX_FILENAME_LENGTH,
  400.                         LAST_Picker,    TRUE,
  401.                     TAG_DONE);
  402.  
  403.                     LT_New(Handle,
  404.                         LA_Type,    BUTTON_KIND,
  405.                         LA_LabelID,    MSG_LIBPANEL_PREFS_GAD,
  406.                         LA_ID,        GAD_ASCII_UPLOAD_PREFS,
  407.                     TAG_DONE);
  408.  
  409.                     LT_EndGroup(Handle);
  410.                 }
  411.  
  412.                 LT_New(Handle,
  413.                     LA_Type,    VERTICAL_KIND,
  414.                 TAG_DONE);
  415.                 {
  416.                     LT_New(Handle,
  417.                         LA_Type,    HORIZONTAL_KIND,
  418.                     TAG_DONE);
  419.                     {
  420.                         LT_New(Handle,
  421.                             LA_Type,    CHECKBOX_KIND,
  422.                             LA_LabelID,    MSG_LIBPANEL_BUILTIN_ASCII_UPLOAD_GAD,
  423.                             LA_BYTE,    &Config -> TransferConfig -> InternalASCIIUpload,
  424.                         TAG_DONE);
  425.  
  426.                         LT_New(Handle,
  427.                             LA_Type,    BUTTON_KIND,
  428.                             LA_LabelID,    MSG_LIBPANEL_PREFS_GAD,
  429.                             LA_ID,        GAD_INTERNAL_ASCII_PREFS,
  430.                         TAG_DONE);
  431.     
  432.                         LT_EndGroup(Handle);
  433.                     }
  434.  
  435.                     LT_New(Handle,
  436.                         LA_Type,    VERTICAL_KIND,
  437.                     TAG_DONE);
  438.                     {
  439.                         LT_New(Handle,
  440.                             LA_Type,    XBAR_KIND,
  441.                         TAG_DONE);
  442.  
  443.                         LT_EndGroup(Handle);
  444.                     }
  445.  
  446.                     LT_EndGroup(Handle);
  447.                 }
  448.  
  449.                 LT_New(Handle,
  450.                     LA_Type,    HORIZONTAL_KIND,
  451.                 TAG_DONE);
  452.                 {
  453.                     LT_New(Handle,
  454.                         LA_Type,    STRING_KIND,
  455.                         LA_LabelID,    MSG_LIBPANEL_ASCII_DOWNLOAD_LIBRARY_GAD,
  456.                         LA_STRPTR,    Config -> TransferConfig -> ASCIIDownloadLibrary,
  457.                         LA_ID,        GAD_ASCII_DOWNLOAD_LIB,
  458.                         LA_Chars,    20,
  459.                         GTST_MaxChars,    MAX_FILENAME_LENGTH,
  460.                         LAST_Picker,    TRUE,
  461.                     TAG_DONE);
  462.  
  463.                     LT_New(Handle,
  464.                         LA_Type,    BUTTON_KIND,
  465.                         LA_LabelID,    MSG_LIBPANEL_PREFS_GAD,
  466.                         LA_ID,        GAD_ASCII_DOWNLOAD_PREFS,
  467.                         GA_Disabled,    !Config -> TransferConfig -> ASCIIDownloadLibrary[0],
  468.                     TAG_DONE);
  469.  
  470.                     LT_EndGroup(Handle);
  471.                 }
  472.  
  473.                 LT_New(Handle,
  474.                     LA_Type,    HORIZONTAL_KIND,
  475.                 TAG_DONE);
  476.                 {
  477.                     LT_New(Handle,
  478.                         LA_Type,    CHECKBOX_KIND,
  479.                         LA_LabelID,    MSG_LIBPANEL_BUILTIN_ASCII_DOWNLOAD_GAD,
  480.                         LA_BYTE,    &Config -> TransferConfig -> InternalASCIIDownload,
  481.                     TAG_DONE);
  482.  
  483.                     LT_New(Handle,
  484.                         LA_Type,    BUTTON_KIND,
  485.                         LA_LabelID,    MSG_LIBPANEL_PREFS_GAD,
  486.                         LA_ID,        GAD_INTERNAL_ASCII_PREFS,
  487.                     TAG_DONE);
  488.     
  489.                     LT_EndGroup(Handle);
  490.                 }
  491.  
  492.                 LT_EndGroup(Handle);
  493.             }
  494.  
  495.             LT_New(Handle,
  496.                 LA_Type,    HORIZONTAL_KIND,
  497.                 LA_LabelID,    MSG_V36_0090,
  498.             TAG_DONE);
  499.             {
  500.                 LT_New(Handle,
  501.                     LA_Type,    VERTICAL_KIND,
  502.                 TAG_DONE);
  503.                 {
  504.                     LT_New(Handle,
  505.                         LA_Type,    STRING_KIND,
  506.                         LA_LabelID,    MSG_LIBPANEL_TEXT_UPLOAD_LIBRARY_GAD,
  507.                         LA_STRPTR,    Config -> TransferConfig -> TextUploadLibrary,
  508.                         LA_ID,        GAD_TEXT_UPLOAD_LIB,
  509.                         GTST_MaxChars,    MAX_FILENAME_LENGTH,
  510.                         LAST_Picker,    TRUE,
  511.                         LA_Chars,    20,
  512.                     TAG_DONE);
  513.  
  514.                     LT_New(Handle,
  515.                         LA_Type,    STRING_KIND,
  516.                         LA_LabelID,    MSG_LIBPANEL_TEXT_DOWNLOAD_LIBRARY_GAD,
  517.                         LA_STRPTR,    Config -> TransferConfig -> TextDownloadLibrary,
  518.                         LA_ID,        GAD_TEXT_DOWNLOAD_LIB,
  519.                         GTST_MaxChars,    MAX_FILENAME_LENGTH,
  520.                         LAST_Picker,    TRUE,
  521.                     TAG_DONE);
  522.  
  523.                     LT_EndGroup(Handle);
  524.                 }
  525.  
  526.                 LT_New(Handle,
  527.                     LA_Type,    VERTICAL_KIND,
  528.                 TAG_DONE);
  529.                 {
  530.                     LT_New(Handle,
  531.                         LA_Type,    BUTTON_KIND,
  532.                         LA_LabelID,    MSG_LIBPANEL_PREFS_GAD,
  533.                         LA_ID,        GAD_TEXT_UPLOAD_PREFS,
  534.                         GA_Disabled,    !Config -> TransferConfig -> TextUploadLibrary[0],
  535.                     TAG_DONE);
  536.  
  537.                     LT_New(Handle,
  538.                         LA_Type,    BUTTON_KIND,
  539.                         LA_LabelID,    MSG_LIBPANEL_PREFS_GAD,
  540.                         LA_ID,        GAD_TEXT_DOWNLOAD_PREFS,
  541.                         GA_Disabled,    !Config -> TransferConfig -> TextDownloadLibrary[0],
  542.                     TAG_DONE);
  543.  
  544.                     LT_EndGroup(Handle);
  545.                 }
  546.  
  547.                 LT_EndGroup(Handle);
  548.             }
  549.  
  550.             LT_New(Handle,
  551.                 LA_Type,    HORIZONTAL_KIND,
  552.                 LA_LabelID,    MSG_V36_0091,
  553.             TAG_DONE);
  554.             {
  555.                 LT_New(Handle,
  556.                     LA_Type,    VERTICAL_KIND,
  557.                 TAG_DONE);
  558.                 {
  559.                     LT_New(Handle,
  560.                         LA_Type,    STRING_KIND,
  561.                         LA_LabelID,    MSG_LIBPANEL_BINARY_UPLOAD_LIBRARY_GAD,
  562.                         LA_STRPTR,    Config -> TransferConfig -> BinaryUploadLibrary,
  563.                         LA_ID,        GAD_BINARY_UPLOAD_LIB,
  564.                         GTST_MaxChars,    MAX_FILENAME_LENGTH,
  565.                         LAST_Picker,    TRUE,
  566.                         LA_Chars,    20,
  567.                     TAG_DONE);
  568.  
  569.                     LT_New(Handle,
  570.                         LA_Type,    STRING_KIND,
  571.                         LA_LabelID,    MSG_LIBPANEL_BINARY_DOWNLOAD_LIBRARY_GAD,
  572.                         LA_STRPTR,    Config -> TransferConfig -> BinaryDownloadLibrary,
  573.                         LA_ID,        GAD_BINARY_DOWNLOAD_LIB,
  574.                         GTST_MaxChars,    MAX_FILENAME_LENGTH,
  575.                         LAST_Picker,    TRUE,
  576.                     TAG_DONE);
  577.  
  578.                     LT_EndGroup(Handle);
  579.                 }
  580.  
  581.                 LT_New(Handle,
  582.                     LA_Type,    VERTICAL_KIND,
  583.                 TAG_DONE);
  584.                 {
  585.                     LT_New(Handle,
  586.                         LA_Type,    BUTTON_KIND,
  587.                         LA_LabelID,    MSG_LIBPANEL_PREFS_GAD,
  588.                         LA_ID,        GAD_BINARY_UPLOAD_PREFS,
  589.                         GA_Disabled,    !Config -> TransferConfig -> BinaryUploadLibrary[0],
  590.                     TAG_DONE);
  591.  
  592.                     LT_New(Handle,
  593.                         LA_Type,    BUTTON_KIND,
  594.                         LA_LabelID,    MSG_LIBPANEL_PREFS_GAD,
  595.                         LA_ID,        GAD_BINARY_DOWNLOAD_PREFS,
  596.                         GA_Disabled,    !Config -> TransferConfig -> BinaryUploadLibrary[0],
  597.                     TAG_DONE);
  598.  
  599.                     LT_EndGroup(Handle);
  600.                 }
  601.  
  602.                 LT_EndGroup(Handle);
  603.             }
  604.  
  605.             LT_New(Handle,
  606.                 LA_Type,VERTICAL_KIND,
  607.             TAG_DONE);
  608.             {
  609.                 LT_New(Handle,
  610.                     LA_Type,    XBAR_KIND,
  611.                     LAXB_FullSize,    TRUE,
  612.                 TAG_DONE);
  613.  
  614.                 LT_EndGroup(Handle);
  615.             }
  616.  
  617.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  618.                 LAGR_SameSize,    TRUE,
  619.                 LAGR_Spread,    TRUE,
  620.             TAG_DONE);
  621.             {
  622.                 LT_New(Handle,
  623.                     LA_Type,    BUTTON_KIND,
  624.                     LA_LabelID,    MSG_GLOBAL_USE_GAD,
  625.                     LA_ID,        GAD_USE,
  626.                     LABT_ReturnKey,    TRUE,
  627.                     LABT_ExtraFat,    TRUE,
  628.                 TAG_DONE);
  629.  
  630.                 if(Default)
  631.                 {
  632.                     LT_New(Handle,
  633.                         LA_Type,    BUTTON_KIND,
  634.                         LA_LabelID,    MSG_GLOBAL_DEFAULT_GAD,
  635.                         LA_ID,        GAD_DEFAULT,
  636.                         LABT_ExtraFat,    TRUE,
  637.                     TAG_DONE);
  638.                 }
  639.  
  640.                 LT_New(Handle,
  641.                     LA_Type,    BUTTON_KIND,
  642.                     LA_LabelID,    MSG_GLOBAL_CANCEL_GAD,
  643.                     LA_ID,        GAD_CANCEL,
  644.                     LABT_EscKey,    TRUE,
  645.                     LABT_ExtraFat,    TRUE,
  646.                 TAG_DONE);
  647.  
  648.                 LT_EndGroup(Handle);
  649.             }
  650.  
  651.             LT_EndGroup(Handle);
  652.         }
  653.  
  654.         if(PanelWindow = LT_Layout(Handle,LocaleString(MSG_LIBPANEL_LIBRARY_PREFERENCES_TXT),NULL,0,0,IDCMP_CLOSEWINDOW,0,
  655.             LAWN_HelpHook,        &GuideHook,
  656.             LAWN_Parent,        Window,
  657.             WA_DepthGadget,        TRUE,
  658.             WA_CloseGadget,        TRUE,
  659.             WA_DragBar,        TRUE,
  660.             WA_RMBTrap,        TRUE,
  661.             WA_Activate,        TRUE,
  662.         TAG_DONE))
  663.         {
  664.             struct IntuiMessage    *Message;
  665.             BOOLEAN             Done = FALSE;
  666.             ULONG             MsgClass,
  667.                          MsgQualifier;
  668.             UWORD             MsgCode;
  669.             struct Gadget        *MsgGadget;
  670.  
  671.             GuideContext(CONTEXT_LIBS);
  672.  
  673.             PushWindow(PanelWindow);
  674.  
  675.             LT_ShowWindow(Handle,TRUE);
  676.  
  677.             do
  678.             {
  679.                 if(Wait(PORTMASK(PanelWindow -> UserPort) | SIG_BREAK) & SIG_BREAK)
  680.                 {
  681.                     SaveConfig(PrivateConfig,Config);
  682.  
  683.                     break;
  684.                 }
  685.  
  686.                 while(Message = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort))
  687.                 {
  688.                     MsgClass    = Message -> Class;
  689.                     MsgQualifier    = Message -> Qualifier;
  690.                     MsgCode        = Message -> Code;
  691.                     MsgGadget    = (struct Gadget *)Message -> IAddress;
  692.  
  693.                     GT_ReplyIMsg(Message);
  694.  
  695.                     LT_HandleInput(Handle,MsgQualifier,&MsgClass,&MsgCode,&MsgGadget);
  696.  
  697.                     if(MsgClass == IDCMP_CLOSEWINDOW)
  698.                     {
  699.                         SaveConfig(PrivateConfig,Config);
  700.  
  701.                         Done = TRUE;
  702.                     }
  703.  
  704.                     if(MsgClass == IDCMP_GADGETUP)
  705.                     {
  706.                         STRPTR Buffer;
  707.  
  708.                         switch(MsgGadget -> GadgetID)
  709.                         {
  710.                             case GAD_USE:
  711.  
  712.                                 Done = TRUE;
  713.                                 break;
  714.  
  715.                             case GAD_CANCEL:
  716.  
  717.                                 SaveConfig(PrivateConfig,Config);
  718.  
  719.                                 Cancel = Done = TRUE;
  720.  
  721.                                 OpenIt = FALSE;
  722.  
  723.                                 break;
  724.  
  725.                             case GAD_DEFAULT:
  726.  
  727.                                 *Default = TRUE;
  728.  
  729.                                 Done = TRUE;
  730.  
  731.                                 OpenIt = FALSE;
  732.  
  733.                                 break;
  734.  
  735.                             case GAD_INTERNAL_ASCII_PREFS:
  736.  
  737.                                 LT_LockWindow(PanelWindow);
  738.         
  739.                                 ASCIITransferPanel(PanelWindow,Config);
  740.         
  741.                                 LT_UnlockWindow(PanelWindow);
  742.         
  743.                                 LT_ShowWindow(Handle,TRUE);
  744.                                 break;
  745.  
  746.                             case GAD_DEFAULT_LIB:
  747.                             case GAD_ASCII_UPLOAD_LIB:
  748.                             case GAD_ASCII_DOWNLOAD_LIB:
  749.                             case GAD_TEXT_UPLOAD_LIB:
  750.                             case GAD_TEXT_DOWNLOAD_LIB:
  751.                             case GAD_BINARY_UPLOAD_LIB:
  752.                             case GAD_BINARY_DOWNLOAD_LIB:
  753.  
  754.                                 Buffer = (STRPTR)LT_GetAttributes(Handle,MsgGadget -> GadgetID,TAG_DONE);
  755.  
  756.                                 LT_SetAttributes(Handle,MsgGadget -> GadgetID - GAD_DEFAULT_LIB + GAD_DEFAULT_PREFS,GA_Disabled,!Buffer[0],TAG_DONE);
  757.  
  758.                                 break;
  759.  
  760.                             case GAD_DEFAULT_PREFS:
  761.                             case GAD_ASCII_UPLOAD_PREFS:
  762.                             case GAD_ASCII_DOWNLOAD_PREFS:
  763.                             case GAD_TEXT_UPLOAD_PREFS:
  764.                             case GAD_TEXT_DOWNLOAD_PREFS:
  765.                             case GAD_BINARY_UPLOAD_PREFS:
  766.                             case GAD_BINARY_DOWNLOAD_PREFS:
  767.  
  768.                                 LT_LockWindow(PanelWindow);
  769.  
  770.                                 Buffer = (STRPTR)LT_GetAttributes(Handle,MsgGadget -> GadgetID - GAD_DEFAULT_PREFS + GAD_DEFAULT_LIB,TAG_DONE);
  771.  
  772.                                 if(Buffer[0])
  773.                                 {
  774.                                     if(ChangeProtocol(Buffer))
  775.                                     {
  776.                                         if(XProtocolBase)
  777.                                         {
  778.                                             XprIO -> xpr_filename = NULL;
  779.     
  780.                                             XPRCommandSelected = FALSE;
  781.     
  782.                                             ClearSerial();
  783.     
  784.                                             NewOptions = FALSE;
  785.  
  786.                                             TransferBits = XProtocolSetup(XprIO);
  787.     
  788.                                             RestartSerial(FALSE);
  789.     
  790.                                             DeleteTransferPanel(TRUE);
  791.     
  792.                                                 /* Successful? */
  793.     
  794.                                             if(!XPRCommandSelected)
  795.                                             {
  796.                                                 if(!(TransferBits & XPRS_SUCCESS))
  797.                                                 {
  798.                                                     MyEasyRequest(PanelWindow,LocaleString(MSG_GLOBAL_FAILED_TO_SET_UP_PROTOCOL_TXT),LocaleString(MSG_GLOBAL_CONTINUE_TXT),LastXprLibrary);
  799.     
  800.                                                     CloseLibrary(XProtocolBase);
  801.     
  802.                                                     XProtocolBase = NULL;
  803.     
  804.                                                     LastXprLibrary[0] = 0;
  805.     
  806.                                                     TransferBits = 0;
  807.     
  808.                                                     SetTransferMenu(FALSE);
  809.                                                 }
  810.                                                 else
  811.                                                     SaveProtocolOpts();
  812.                                             }
  813.                                         }
  814.                                     }
  815.     
  816.                                     ResetProtocol();
  817.                                 }
  818.  
  819.                                 LT_UnlockWindow(PanelWindow);
  820.  
  821.                                 break;
  822.                         }
  823.                     }
  824.  
  825.                     if(MsgClass == IDCMP_IDCMPUPDATE && (MsgGadget -> GadgetID >= GAD_DEFAULT_LIB && MsgGadget -> GadgetID <= GAD_BINARY_DOWNLOAD_LIB))
  826.                     {
  827.                         LT_LockWindow(PanelWindow);
  828.     
  829.                         strcpy(SharedBuffer,(STRPTR)LT_GetAttributes(Handle,MsgGadget -> GadgetID,TAG_DONE));
  830.     
  831.                         if(PickFile(PanelWindow,"Libs:","xpr#?.library",LocaleString(MSG_LIBPANEL_SELECT_DEFAULT_TRANSFER_LIBRARY_TXT + MsgGadget -> GadgetID - GAD_DEFAULT_LIB),SharedBuffer,NT_LIBRARY))
  832.                         {
  833.                             if(Stricmp(SharedBuffer,(STRPTR)LT_GetAttributes(Handle,MsgGadget -> GadgetID,TAG_DONE)))
  834.                             {
  835.                                 LT_SetAttributes(Handle,MsgGadget -> GadgetID,GTST_String,SharedBuffer,TAG_DONE);
  836.     
  837.                                 LT_SetAttributes(Handle,MsgGadget -> GadgetID - GAD_DEFAULT_LIB + GAD_DEFAULT_PREFS,GA_Disabled,!SharedBuffer[0],TAG_DONE);
  838.                             }
  839.                         }
  840.     
  841.                         LT_UnlockWindow(PanelWindow);
  842.     
  843.                         LT_ShowWindow(Handle,TRUE);
  844.                     }
  845.                 }
  846.             }
  847.             while(!Done);
  848.  
  849.             PopWindow();
  850.         }
  851.  
  852.         LT_DeleteHandle(Handle);
  853.     }
  854.  
  855.     if(Default)
  856.         return((BYTE)(!Cancel));
  857.     else
  858.     {
  859.         if(XProtocolBase)
  860.             return((BYTE)memcmp(PrivateConfig -> TransferConfig,Config -> TransferConfig,sizeof(struct TransferSettings)));
  861.         else
  862.         {
  863.             if(Config -> TransferConfig -> DefaultLibrary[0])
  864.                 return(OpenIt);
  865.             else
  866.                 return(FALSE);
  867.         }
  868.     }
  869. }
  870.