home *** CD-ROM | disk | FTP | other *** search
/ Network PC / Network PC.iso / amiga utilities / communication / bbs / termv4.6 / extras / source / term-source.lha / PathPanel.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-03-18  |  10.4 KB  |  447 lines

  1. /*
  2. **    PathPanel.c
  3. **
  4. **    Editing panel for path configuration
  5. **
  6. **    Copyright © 1990-1996 by Olaf `Olsen' Barthel
  7. **        All Rights Reserved
  8. */
  9.  
  10. #ifndef _GLOBAL_H
  11. #include "Global.h"
  12. #endif
  13.  
  14. enum    {    GAD_AUPLOAD=1000,GAD_ADOWNLOAD,GAD_TUPLOAD,GAD_TDOWNLOAD,
  15.         GAD_BUPLOAD,GAD_BDOWNLOAD,GAD_CONFIGSTORE,GAD_EDITOR,GAD_HELPFILE,
  16.  
  17.         GAD_USE,GAD_CANCEL,
  18.         GAD_PAGER,GAD_PAGEGROUP
  19.     };
  20.  
  21. BOOL
  22. PathPanel(struct Window *Parent,struct Configuration *LocalConfig)
  23. {
  24.     STATIC LONG PageTitleID[5] =
  25.     {
  26.         MSG_V36_0123,
  27.         MSG_V36_0122,
  28.         MSG_V36_0121,
  29.         MSG_V36_0124,
  30.         -1
  31.     };
  32.  
  33.     STATIC BYTE         InitialPage = 0;
  34.  
  35.     struct LayoutHandle    *Handle;
  36.     BOOL             UseIt = FALSE;
  37.  
  38.     SaveConfig(LocalConfig,PrivateConfig);
  39.  
  40.     if(Handle = LT_CreateHandleTags(Parent -> WScreen,
  41.         LH_LocaleHook,    &LocaleHook,
  42.         LH_ExitFlush,    FALSE,
  43.     TAG_DONE))
  44.     {
  45.         struct Window *PanelWindow;
  46.  
  47.         LT_New(Handle,
  48.             LA_Type,    VERTICAL_KIND,
  49.         TAG_DONE);
  50.         {
  51.             LT_New(Handle,
  52.                 LA_Type,VERTICAL_KIND,
  53.             TAG_DONE);
  54.             {
  55.                 LT_New(Handle,
  56.                     LA_Type,    TAB_KIND,
  57.                     LA_ID,        GAD_PAGER,
  58.                     LA_LabelID,    MSG_XFER_PAGE_TXT,
  59.                     LACY_LabelTable,PageTitleID,
  60.                     LACY_AutoPageID,GAD_PAGEGROUP,
  61.                     LACY_TabKey,    TRUE,
  62.                     LA_BYTE,    &InitialPage,
  63.                     LATB_FullWidth,    TRUE,
  64.                 TAG_DONE);
  65.  
  66.                 LT_EndGroup(Handle);
  67.             }
  68.  
  69.             LT_New(Handle,
  70.                 LA_Type,    VERTICAL_KIND,
  71.                 LA_ID,        GAD_PAGEGROUP,
  72.                 LAGR_ActivePage,InitialPage,
  73.             TAG_DONE);
  74.             {
  75.                 LT_New(Handle,
  76.                     LA_Type,    VERTICAL_KIND,
  77.                 TAG_DONE);
  78.                 {
  79.                     LT_New(Handle,
  80.                         LA_Type,    STRING_KIND,
  81.                         LA_LabelID,    MSG_PATHPANEL_DEFAULT_BINARY_UPLOAD_PATH_GAD,
  82.                         LA_ID,        GAD_BUPLOAD,
  83.                         LA_Chars,    20,
  84.                         LAST_Picker,    TRUE,
  85.                         GTST_MaxChars,    MAX_FILENAME_LENGTH - 1,
  86.                         LA_STRPTR,    PrivateConfig -> PathConfig -> BinaryUploadPath,
  87.                     TAG_DONE);
  88.  
  89.                     LT_New(Handle,
  90.                         LA_Type,    STRING_KIND,
  91.                         LA_ID,        GAD_BDOWNLOAD,
  92.                         LA_LabelID,    MSG_PATHPANEL_DEFAULT_BINARY_DOWNLOAD_PATH_GAD,
  93.                         LAST_Picker,    TRUE,
  94.                         GTST_MaxChars,    MAX_FILENAME_LENGTH - 1,
  95.                         LA_STRPTR,    PrivateConfig -> PathConfig -> BinaryDownloadPath,
  96.                     TAG_DONE);
  97.  
  98.                     LT_EndGroup(Handle);
  99.                 }
  100.  
  101.                 LT_New(Handle,
  102.                     LA_Type,        VERTICAL_KIND,
  103.                 TAG_DONE);
  104.                 {
  105.                     LT_New(Handle,
  106.                         LA_Type,    STRING_KIND,
  107.                         LA_LabelID,    MSG_PATHPANEL_DEFAULT_TEXT_UPLOAD_PATH_GAD,
  108.                         LA_ID,        GAD_TUPLOAD,
  109.                         LA_Chars,    20,
  110.                         LAST_Picker,    TRUE,
  111.                         GTST_MaxChars,    MAX_FILENAME_LENGTH - 1,
  112.                         LA_STRPTR,    PrivateConfig -> PathConfig -> TextUploadPath,
  113.                     TAG_DONE);
  114.  
  115.                     LT_New(Handle,
  116.                         LA_Type,    STRING_KIND,
  117.                         LA_ID,        GAD_TDOWNLOAD,
  118.                         LA_LabelID,    MSG_PATHPANEL_DEFAULT_TEXT_DOWNLOAD_PATH_GAD,
  119.                         LAST_Picker,    TRUE,
  120.                         GTST_MaxChars,    MAX_FILENAME_LENGTH - 1,
  121.                         LA_STRPTR,    PrivateConfig -> PathConfig -> TextDownloadPath,
  122.                     TAG_DONE);
  123.  
  124.                     LT_EndGroup(Handle);
  125.                 }
  126.  
  127.                 LT_New(Handle,
  128.                     LA_Type,    VERTICAL_KIND,
  129.                 TAG_DONE);
  130.                 {
  131.                     LT_New(Handle,
  132.                         LA_Type,    STRING_KIND,
  133.                         LA_LabelID,    MSG_PATHPANEL_DEFAULT_ASCII_UPLOAD_PATH_GAD,
  134.                         LA_ID,        GAD_AUPLOAD,
  135.                         LA_Chars,    20,
  136.                         LAST_Picker,    TRUE,
  137.                         GTST_MaxChars,    MAX_FILENAME_LENGTH - 1,
  138.                         LA_STRPTR,    PrivateConfig -> PathConfig -> ASCIIUploadPath,
  139.                     TAG_DONE);
  140.  
  141.                     LT_New(Handle,
  142.                         LA_Type,    STRING_KIND,
  143.                         LA_ID,        GAD_ADOWNLOAD,
  144.                         LA_LabelID,    MSG_PATHPANEL_DEFAULT_ASCII_DOWNLOAD_PATH_GAD,
  145.                         LAST_Picker,    TRUE,
  146.                         GTST_MaxChars,    MAX_FILENAME_LENGTH - 1,
  147.                         LA_STRPTR,    PrivateConfig -> PathConfig -> ASCIIDownloadPath,
  148.                     TAG_DONE);
  149.  
  150.                     LT_EndGroup(Handle);
  151.                 }
  152.  
  153.                 LT_New(Handle,
  154.                     LA_Type,    VERTICAL_KIND,
  155.                 TAG_DONE);
  156.                 {
  157.                     LT_New(Handle,
  158.                         LA_Type,    STRING_KIND,
  159.                         LA_LabelID,    MSG_PATHPANEL_CONFIGURATION_STORAGE_DIR_GAD,
  160.                         LA_ID,        GAD_CONFIGSTORE,
  161.                         LA_Chars,    20,
  162.                         LAST_Picker,    TRUE,
  163.                         GTST_MaxChars,    MAX_FILENAME_LENGTH - 1,
  164.                         LA_STRPTR,    PrivateConfig -> PathConfig -> DefaultStorage,
  165.                     TAG_DONE);
  166.  
  167.                     LT_New(Handle,
  168.                         LA_Type,    STRING_KIND,
  169.                         LA_ID,        GAD_EDITOR,
  170.                         LA_LabelID,    MSG_PATHPANEL_DEFAULT_TEXT_EDITOR_GAD,
  171.                         LAST_Picker,    TRUE,
  172.                         GTST_MaxChars,    MAX_FILENAME_LENGTH - 1,
  173.                         LA_STRPTR,    PrivateConfig -> PathConfig -> Editor,
  174.                     TAG_DONE);
  175.  
  176.                     LT_New(Handle,
  177.                         LA_Type,    STRING_KIND,
  178.                         LA_ID,        GAD_HELPFILE,
  179.                         LA_LabelID,    MSG_PATHPANEL_HELP_TEXT_FILE_GAD,
  180.                         LAST_Picker,    TRUE,
  181.                         GTST_MaxChars,    MAX_FILENAME_LENGTH - 1,
  182.                         LA_STRPTR,    PrivateConfig -> PathConfig -> HelpFile,
  183.                     TAG_DONE);
  184.  
  185.                     LT_EndGroup(Handle);
  186.                 }
  187.  
  188.                 LT_EndGroup(Handle);
  189.             }
  190.  
  191.             LT_New(Handle,
  192.                 LA_Type,VERTICAL_KIND,
  193.             TAG_DONE);
  194.             {
  195.                 LT_New(Handle,
  196.                     LA_Type,    XBAR_KIND,
  197.                     LAXB_FullSize,    TRUE,
  198.                 TAG_DONE);
  199.  
  200.                 LT_EndGroup(Handle);
  201.             }
  202.  
  203.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  204.                 LAGR_SameSize,    TRUE,
  205.                 LAGR_Spread,    TRUE,
  206.             TAG_DONE);
  207.             {
  208.                 LT_New(Handle,
  209.                     LA_Type,    BUTTON_KIND,
  210.                     LA_LabelID,    MSG_GLOBAL_USE_GAD,
  211.                     LA_ID,        GAD_USE,
  212.                     LABT_ReturnKey,    TRUE,
  213.                     LABT_ExtraFat,    TRUE,
  214.                 TAG_DONE);
  215.  
  216.                 LT_New(Handle,
  217.                     LA_Type,    BUTTON_KIND,
  218.                     LA_LabelID,    MSG_GLOBAL_CANCEL_GAD,
  219.                     LA_ID,        GAD_CANCEL,
  220.                     LABT_EscKey,    TRUE,
  221.                     LABT_ExtraFat,    TRUE,
  222.                 TAG_DONE);
  223.  
  224.                 LT_EndGroup(Handle);
  225.             }
  226.  
  227.             LT_EndGroup(Handle);
  228.         }
  229.  
  230.         if(PanelWindow = LT_Build(Handle,
  231.             LAWN_TitleID,        MSG_PATHPANEL_PATH_PREFERENCES_TXT,
  232.             LAWN_IDCMP,        IDCMP_CLOSEWINDOW,
  233.             LAWN_HelpHook,        &GuideHook,
  234.             LAWN_Parent,        Parent,
  235.             WA_DepthGadget,        TRUE,
  236.             WA_CloseGadget,        TRUE,
  237.             WA_DragBar,        TRUE,
  238.             WA_RMBTrap,        TRUE,
  239.             WA_Activate,        TRUE,
  240.             WA_SimpleRefresh,    TRUE,
  241.         TAG_DONE))
  242.         {
  243.             struct IntuiMessage    *Message;
  244.             BOOL             Done = FALSE;
  245.             ULONG             MsgClass;
  246.             struct Gadget        *MsgGadget;
  247.  
  248.             GuideContext(CONTEXT_PATHS);
  249.  
  250.             PushWindow(PanelWindow);
  251.  
  252.             LT_ShowWindow(Handle,TRUE);
  253.  
  254.             do
  255.             {
  256.                 if(Wait(PORTMASK(PanelWindow -> UserPort) | SIG_BREAK) & SIG_BREAK)
  257.                     break;
  258.  
  259.                 while(Message = (struct IntuiMessage *)LT_GetIMsg(Handle))
  260.                 {
  261.                     MsgClass    = Message -> Class;
  262.                     MsgGadget    = (struct Gadget *)Message -> IAddress;
  263.  
  264.                     LT_ReplyIMsg(Message);
  265.  
  266.                     if(MsgClass == IDCMP_CLOSEWINDOW)
  267.                         Done = TRUE;
  268.  
  269.                     if(MsgClass == IDCMP_GADGETUP)
  270.                     {
  271.                         switch(MsgGadget -> GadgetID)
  272.                         {
  273.                             case GAD_USE:
  274.  
  275.                                 LT_UpdateStrings(Handle);
  276.  
  277.                                 UseIt = Done = TRUE;
  278.                                 break;
  279.  
  280.                             case GAD_CANCEL:
  281.  
  282.                                 Done = TRUE;
  283.                                 break;
  284.  
  285.                             default:
  286.  
  287.                                 if(MsgGadget -> GadgetID >= GAD_AUPLOAD && MsgGadget -> GadgetID <= GAD_HELPFILE)
  288.                                 {
  289.                                     if(TypeOfMem((APTR)LT_GetAttributes(Handle,MsgGadget -> GadgetID,TAG_DONE)))
  290.                                     {
  291.                                         UBYTE DummyBuffer[MAX_FILENAME_LENGTH];
  292.  
  293.                                         strcpy(DummyBuffer,(STRPTR)LT_GetAttributes(Handle,MsgGadget -> GadgetID,TAG_DONE));
  294.  
  295.                                         if(MsgGadget -> GadgetID < GAD_EDITOR)
  296.                                             FindDrawer(PanelWindow,DummyBuffer,TRUE,NULL);
  297.                                         else
  298.                                         {
  299.                                             if(MsgGadget -> GadgetID == GAD_EDITOR)
  300.                                                 FindProgram(PanelWindow,DummyBuffer,NULL);
  301.                                             else
  302.                                                 FindFile(PanelWindow,DummyBuffer,NULL);
  303.                                         }
  304.                                     }
  305.                                 }
  306.  
  307.                                 break;
  308.                         }
  309.                     }
  310.  
  311.                     if(MsgClass == IDCMP_IDCMPUPDATE)
  312.                     {
  313.                         if(MsgGadget -> GadgetID >= GAD_AUPLOAD && MsgGadget -> GadgetID <= GAD_HELPFILE)
  314.                         {
  315.                             LONG    ID    = MsgGadget -> GadgetID;
  316.                             STRPTR    Name    = LT_GetString(Handle,ID);
  317.  
  318.                             if(Name)
  319.                             {
  320.                                 UBYTE             DummyBuffer[MAX_FILENAME_LENGTH],
  321.                                             *DummyChar;
  322.                                 struct FileRequester    *FileRequest;
  323.                                 BOOL             Saver;
  324.  
  325.                                 LT_LockWindow(PanelWindow);
  326.  
  327.                                 strcpy(DummyBuffer,Name);
  328.  
  329.                                 if(ID < GAD_EDITOR || !DummyBuffer[0])
  330.                                     DummyChar = "";
  331.                                 else
  332.                                 {
  333.                                     if(FilePart(DummyBuffer) == DummyBuffer)
  334.                                         DummyBuffer[0] = 0;
  335.                                     else
  336.                                     {
  337.                                         DummyChar = PathPart(DummyBuffer);
  338.  
  339.                                         *DummyChar = 0;
  340.                                     }
  341.  
  342.                                     DummyChar = FilePart(Name);
  343.                                 }
  344.  
  345.                                 switch(ID)
  346.                                 {
  347.                                     case GAD_ADOWNLOAD:
  348.                                     case GAD_TDOWNLOAD:
  349.                                     case GAD_BDOWNLOAD:
  350.  
  351.                                         Saver = TRUE;
  352.                                         break;
  353.  
  354.                                     default:
  355.  
  356.                                         Saver = FALSE;
  357.                                         break;
  358.                                 }
  359.  
  360.                                 if(FileRequest = GetFile(PanelWindow,LocaleString(ID - GAD_AUPLOAD + MSG_PATHPANEL_SELECT_DEFAULT_ASCII_UPLOAD_PATH_TXT),DummyBuffer,DummyChar,DummyBuffer,NULL,Saver,FALSE,ID < GAD_EDITOR,LocaleString(MSG_GLOBAL_SELECT_TXT),TRUE))
  361.                                 {
  362.                                     if(ID < GAD_EDITOR)
  363.                                         FindDrawer(PanelWindow,DummyBuffer,TRUE,NULL);
  364.                                     else
  365.                                     {
  366.                                         if(ID == GAD_EDITOR)
  367.                                             FindProgram(PanelWindow,DummyBuffer,NULL);
  368.                                         else
  369.                                             FindFile(PanelWindow,DummyBuffer,NULL);
  370.                                     }
  371.  
  372.                                     LT_SetAttributes(Handle,ID,
  373.                                         GTST_String,    DummyBuffer,
  374.                                     TAG_DONE);
  375.  
  376.                                     FreeAslRequest(FileRequest);
  377.                                 }
  378.  
  379.                                 LT_UnlockWindow(PanelWindow);
  380.                             }
  381.                         }
  382.                     }
  383.                 }
  384.             }
  385.             while(!Done);
  386.  
  387.             PopWindow();
  388.         }
  389.  
  390.         LT_DeleteHandle(Handle);
  391.     }
  392.  
  393.     if(UseIt)
  394.     {
  395.         if(Config -> MiscConfig -> ProtectiveMode && !PrivateConfig -> TransferConfig -> OverridePath)
  396.         {
  397.             STRPTR    Library    = NULL,
  398.                 Path    = NULL;
  399.  
  400.             if(PrivateConfig -> TransferConfig -> DefaultType == XFER_XPR && PrivateConfig -> TransferConfig -> DefaultLibrary[0])
  401.             {
  402.                 Library    = PrivateConfig -> TransferConfig -> DefaultLibrary;
  403.                 Path    = PrivateConfig -> PathConfig -> BinaryDownloadPath;
  404.             }
  405.  
  406.             if(PrivateConfig -> TransferConfig -> ASCIIDownloadType == XFER_XPR && PrivateConfig -> TransferConfig -> ASCIIDownloadLibrary[0])
  407.             {
  408.                 Library    = PrivateConfig -> TransferConfig -> ASCIIDownloadLibrary;
  409.                 Path    = PrivateConfig -> PathConfig -> ASCIIDownloadPath;
  410.             }
  411.  
  412.             if(PrivateConfig -> TransferConfig -> TextDownloadType == XFER_XPR && PrivateConfig -> TransferConfig -> TextDownloadLibrary[0])
  413.             {
  414.                 Library    = PrivateConfig -> TransferConfig -> TextDownloadLibrary;
  415.                 Path    = PrivateConfig -> PathConfig -> TextDownloadPath;
  416.             }
  417.  
  418.             if(PrivateConfig -> TransferConfig -> BinaryDownloadType == XFER_XPR && PrivateConfig -> TransferConfig -> BinaryDownloadLibrary[0])
  419.             {
  420.                 Library    = PrivateConfig -> TransferConfig -> BinaryDownloadLibrary;
  421.                 Path    = PrivateConfig -> PathConfig -> BinaryDownloadPath;
  422.             }
  423.  
  424.             if(Library && Path)
  425.             {
  426.                 UBYTE LocalBuffer[MAX_FILENAME_LENGTH];
  427.  
  428.                 if(*Path == 0)
  429.                 {
  430.                     if(GetCurrentDirName(LocalBuffer,MAX_FILENAME_LENGTH))
  431.                         Path = LocalBuffer;
  432.                 }
  433.  
  434.                 if(ShowRequest(Window,LocaleString(MSG_XPR_PATH_TXT),LocaleString(MSG_GLOBAL_YES_NO_TXT),Library,Path))
  435.                     PrivateConfig -> TransferConfig -> OverridePath = TRUE;
  436.             }
  437.         }
  438.     }
  439.  
  440.     if(UseIt)
  441.         SwapConfig(LocalConfig,PrivateConfig);
  442.     else
  443.         SaveConfig(LocalConfig,PrivateConfig);
  444.  
  445.     return(UseIt);
  446. }
  447.