home *** CD-ROM | disk | FTP | other *** search
/ Otherware / Otherware_1_SB_Development.iso / amiga / comms / comprgs / term232.lha / Source_Code / termSource / PathPanel.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-08-18  |  12.1 KB  |  436 lines

  1. /*
  2. **    $Id: PathPanel.c,v 1.7 92/08/15 20:13:01 olsen Sta Locker: olsen $
  3. **    $Revision: 1.7 $
  4. **    $Date: 92/08/15 20:13:01 $
  5. **
  6. **    Editing panel for path configuration
  7. **
  8. **    Copyright ⌐ 1990-1992 by Olaf `Olsen' Barthel & MXM
  9. **        All Rights Reserved
  10. */
  11.  
  12. #include "termGlobal.h"
  13.  
  14. enum    {    GAD_CONFIGSTORE,GAD_TUPLOAD,GAD_TDOWNLOAD,GAD_AUPLOAD,GAD_ADOWNLOAD,
  15.         GAD_BUPLOAD,GAD_BDOWNLOAD,GAD_CAPTURE,GAD_LOG,GAD_EDITOR,GAD_BEEP,
  16.  
  17.         GAD_SELECT1,GAD_SELECT2,GAD_SELECT3,GAD_SELECT4,GAD_SELECT5,GAD_SELECT6,
  18.         GAD_SELECT7,GAD_SELECT8,GAD_SELECT9,GAD_SELECT10,GAD_SELECT11,
  19.  
  20.         GAD_USE,GAD_CANCEL };
  21.  
  22. STATIC UBYTE *SelectText[] =
  23. {
  24.     NULL,
  25.     NULL,
  26.     NULL,
  27.     NULL,
  28.     NULL,
  29.     NULL,
  30.     NULL,
  31.     NULL,
  32.     NULL,
  33.     NULL,
  34.     NULL
  35. };
  36.  
  37. STATIC struct Gadget *
  38. CreateAllGadgets(struct Configuration *Config,struct Gadget *GadgetArray[],struct Gadget **GadgetList,APTR VisualInfo,UWORD TopEdge)
  39. {
  40.     struct Gadget        *Gadget;
  41.     struct NewGadget     NewGadget;
  42.     UWORD             Counter = 0,i;
  43.  
  44.     LocalizeString(SelectText,MSG_PATHPANEL_SELECT_CONFIG_STORAGE_DIR_TXT,MSG_PATHPANEL_SELECT_TERMINAL_BEEP_SOUND_TXT);
  45.  
  46.     SZ_SizeSetup(Screen,&UserFont,TRUE);
  47.  
  48.     memset(&NewGadget,0,sizeof(struct NewGadget));
  49.  
  50.     if(Gadget = CreateContext(GadgetList))
  51.     {
  52.         SZ_AddLeftOffset(SZ_LeftOffsetDelta(MSG_PATHPANEL_CONFIGURATION_STORAGE_DIR_GAD,MSG_PATHPANEL_TERMINAL_BEEP_SOUND_GAD));
  53.  
  54.         SZ_ResetMaxWidth();
  55.  
  56.         SZ_UpdateMaxWidth(STRING_KIND,NULL,30,NULL);
  57.  
  58.         SZ_SetWidth(SZ_ResetMaxWidth());
  59.  
  60.         NewGadget . ng_GadgetText    = LocaleString(MSG_PATHPANEL_CONFIGURATION_STORAGE_DIR_GAD);
  61.         NewGadget . ng_TextAttr        = &UserFont;
  62.         NewGadget . ng_VisualInfo    = VisualInfo;
  63.         NewGadget . ng_GadgetID        = Counter;
  64.         NewGadget . ng_Flags        = 0;
  65.  
  66.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  67.             SZ_Adjust,    TRUE,
  68.             SZ_AutoWidth,    TRUE,
  69.  
  70.             GT_Underscore,    '_',
  71.             GTST_MaxChars,    255,
  72.             GTST_String,    Config -> DefaultStorage,
  73.             GTST_EditHook,    &CommandHook,
  74.             GA_Immediate,    TRUE,
  75.         TAG_DONE);
  76.  
  77.         NewGadget . ng_GadgetText    = LocaleString(MSG_PATHPANEL_DEFAULT_TEXT_UPLOAD_PATH_GAD);
  78.         NewGadget . ng_GadgetID        = Counter;
  79.  
  80.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  81.             SZ_Adjust,    TRUE,
  82.             SZ_AutoWidth,    TRUE,
  83.  
  84.             GT_Underscore,    '_',
  85.             GTST_MaxChars,    255,
  86.             GTST_String,    Config -> TextUploadPath,
  87.             GTST_EditHook,    &CommandHook,
  88.             GA_Immediate,    TRUE,
  89.         TAG_DONE);
  90.  
  91.         NewGadget . ng_GadgetText    = LocaleString(MSG_PATHPANEL_DEFAULT_TEXT_DOWNLOAD_PATH_GAD);
  92.         NewGadget . ng_GadgetID        = Counter;
  93.  
  94.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  95.             SZ_Adjust,    TRUE,
  96.             SZ_AutoWidth,    TRUE,
  97.  
  98.             GT_Underscore,    '_',
  99.             GTST_MaxChars,    255,
  100.             GTST_String,    Config -> TextDownloadPath,
  101.             GTST_EditHook,    &CommandHook,
  102.             GA_Immediate,    TRUE,
  103.         TAG_DONE);
  104.  
  105.         NewGadget . ng_GadgetText    = LocaleString(MSG_PATHPANEL_DEFAULT_ASCII_UPLOAD_PATH_GAD);
  106.         NewGadget . ng_GadgetID        = Counter;
  107.  
  108.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  109.             SZ_Adjust,    TRUE,
  110.             SZ_AutoWidth,    TRUE,
  111.  
  112.             GT_Underscore,    '_',
  113.             GTST_MaxChars,    255,
  114.             GTST_String,    Config -> ASCIIUploadPath,
  115.             GTST_EditHook,    &CommandHook,
  116.             GA_Immediate,    TRUE,
  117.         TAG_DONE);
  118.  
  119.         NewGadget . ng_GadgetText    = LocaleString(MSG_PATHPANEL_DEFAULT_ASCII_DOWNLOAD_PATH_GAD);
  120.         NewGadget . ng_GadgetID        = Counter;
  121.  
  122.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  123.             SZ_Adjust,    TRUE,
  124.             SZ_AutoWidth,    TRUE,
  125.  
  126.             GT_Underscore,    '_',
  127.             GTST_MaxChars,    255,
  128.             GTST_String,    Config -> ASCIIDownloadPath,
  129.             GTST_EditHook,    &CommandHook,
  130.             GA_Immediate,    TRUE,
  131.         TAG_DONE);
  132.  
  133.         NewGadget . ng_GadgetText    = LocaleString(MSG_PATHPANEL_DEFAULT_BINARY_UPLOAD_PATH_GAD);
  134.         NewGadget . ng_GadgetID        = Counter;
  135.  
  136.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  137.             SZ_Adjust,    TRUE,
  138.             SZ_AutoWidth,    TRUE,
  139.  
  140.             GT_Underscore,    '_',
  141.             GTST_MaxChars,    255,
  142.             GTST_String,    Config -> BinaryUploadPath,
  143.             GTST_EditHook,    &CommandHook,
  144.             GA_Immediate,    TRUE,
  145.         TAG_DONE);
  146.  
  147.         NewGadget . ng_GadgetText    = LocaleString(MSG_PATHPANEL_DEFAULT_BINARY_DOWNLOAD_PATH_GAD);
  148.         NewGadget . ng_GadgetID        = Counter;
  149.  
  150.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  151.             SZ_Adjust,    TRUE,
  152.             SZ_AutoWidth,    TRUE,
  153.  
  154.             GT_Underscore,    '_',
  155.             GTST_MaxChars,    255,
  156.             GTST_String,    Config -> BinaryDownloadPath,
  157.             GTST_EditHook,    &CommandHook,
  158.             GA_Immediate,    TRUE,
  159.         TAG_DONE);
  160.  
  161.         NewGadget . ng_GadgetText    = LocaleString(MSG_PATHPANEL_DEFAULT_CAPTURE_PATH_GAD);
  162.         NewGadget . ng_GadgetID        = Counter;
  163.  
  164.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  165.             SZ_Adjust,    TRUE,
  166.             SZ_AutoWidth,    TRUE,
  167.  
  168.             GT_Underscore,    '_',
  169.             GTST_MaxChars,    255,
  170.             GTST_String,    Config -> CapturePath,
  171.             GTST_EditHook,    &CommandHook,
  172.             GA_Immediate,    TRUE,
  173.         TAG_DONE);
  174.  
  175.         NewGadget . ng_GadgetText    = LocaleString(MSG_PATHPANEL_DEFAULT_LOG_FILE_GAD);
  176.         NewGadget . ng_GadgetID        = Counter;
  177.  
  178.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  179.             SZ_Adjust,    TRUE,
  180.             SZ_AutoWidth,    TRUE,
  181.  
  182.             GT_Underscore,    '_',
  183.             GTST_MaxChars,    255,
  184.             GTST_String,    Config -> LogFile,
  185.             GTST_EditHook,    &CommandHook,
  186.             GA_Immediate,    TRUE,
  187.         TAG_DONE);
  188.  
  189.         NewGadget . ng_GadgetText    = LocaleString(MSG_PATHPANEL_DEFAULT_TEXT_EDITOR_GAD);
  190.         NewGadget . ng_GadgetID        = Counter;
  191.  
  192.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  193.             SZ_Adjust,    TRUE,
  194.             SZ_AutoWidth,    TRUE,
  195.  
  196.             GT_Underscore,    '_',
  197.             GTST_MaxChars,    255,
  198.             GTST_String,    Config -> Editor,
  199.             GTST_EditHook,    &CommandHook,
  200.             GA_Immediate,    TRUE,
  201.         TAG_DONE);
  202.  
  203.         NewGadget . ng_GadgetText    = LocaleString(MSG_PATHPANEL_TERMINAL_BEEP_SOUND_GAD);
  204.         NewGadget . ng_GadgetID        = Counter;
  205.  
  206.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  207.             SZ_Adjust,    TRUE,
  208.             SZ_AutoWidth,    TRUE,
  209.  
  210.             GT_Underscore,    '_',
  211.             GTST_MaxChars,    255,
  212.             GTST_String,    Config -> BeepSound,
  213.             GTST_EditHook,    &CommandHook,
  214.             GA_Immediate,    TRUE,
  215.         TAG_DONE);
  216.  
  217.         SZ_SetWidth(SZ_Width(BUTTON_KIND,LocaleString(MSG_GLOBAL_SELECT_TXT),0,NULL));
  218.  
  219.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_SELECT_TXT);
  220.         NewGadget . ng_GadgetID        = Counter;
  221.  
  222.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  223.             SZ_Adjust,    TRUE,
  224.             SZ_AutoWidth,    TRUE,
  225.             SZ_NewColumn,    TRUE,
  226.             SZ_UseHeight,    SZ_Height(STRING_KIND,0,0),
  227.         TAG_DONE);
  228.  
  229.         for(i = 0 ; i < 10 ; i++)
  230.         {
  231.             NewGadget . ng_GadgetID    = Counter;
  232.  
  233.             GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  234.                 SZ_Adjust,    TRUE,
  235.                 SZ_AutoWidth,    TRUE,
  236.                 SZ_UseHeight,    SZ_Height(STRING_KIND,0,0),
  237.             TAG_DONE);
  238.         }
  239.  
  240.         SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(MSG_GLOBAL_USE_GAD),0,NULL);
  241.         SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(MSG_GLOBAL_CANCEL_GAD),0,NULL);
  242.  
  243.         SZ_SetWidth(SZ_ResetMaxWidth());
  244.  
  245.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_USE_GAD);
  246.         NewGadget . ng_GadgetID        = Counter;
  247.         NewGadget . ng_Flags        = 0;
  248.  
  249.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  250.             SZ_Adjust,    TRUE,
  251.             SZ_AutoWidth,    TRUE,
  252.             SZ_AlignExtra,    TRUE,
  253.             SZ_AlignLeft,    TRUE,
  254.             SZ_AlignBottom,    TRUE,
  255.  
  256.             GT_Underscore,    '_',
  257.         TAG_DONE);
  258.  
  259.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_CANCEL_GAD);
  260.         NewGadget . ng_GadgetID        = Counter;
  261.  
  262.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  263.             SZ_Adjust,    TRUE,
  264.             SZ_AutoWidth,    TRUE,
  265.             SZ_AlignRight,    TRUE,
  266.  
  267.             GT_Underscore,    '_',
  268.         TAG_DONE);
  269.     }
  270.  
  271.     return(Gadget);
  272. }
  273.  
  274. BYTE
  275. PathPanel(struct Configuration *Config)
  276. {
  277.     struct Window    *PanelWindow;
  278.     struct Gadget    *GadgetList = NULL;
  279.     struct Gadget    *GadgetArray[GAD_CANCEL + 1];
  280.  
  281.     CopyMem(Config,&PrivateConfig,sizeof(struct Configuration));
  282.  
  283.     if(CreateAllGadgets(Config,&GadgetArray[0],&GadgetList,VisualInfo,Screen -> WBorTop + Screen -> Font -> ta_YSize + 1))
  284.     {
  285.         if(PanelWindow = OpenWindowTags(NULL,
  286.             WA_Left,    (Screen -> Width    - SZ_GetWindowWidth())    / 2,
  287.             WA_Top,        (Screen -> Height    - SZ_GetWindowHeight())    / 2,
  288.             WA_Width,    SZ_GetWindowWidth(),
  289.             WA_Height,    SZ_GetWindowHeight(),
  290.  
  291.             WA_Activate,    TRUE,
  292.             WA_DragBar,    TRUE,
  293.             WA_DepthGadget,    TRUE,
  294.             WA_RMBTrap,    TRUE,
  295.             WA_DepthGadget,    TRUE,
  296.             WA_CloseGadget,    TRUE,
  297.             WA_CustomScreen,Screen,
  298.  
  299.             WA_IDCMP,    IDCMP_GADGETDOWN | IDCMP_ACTIVEWINDOW | IDCMP_CLOSEWINDOW | IDCMP_VANILLAKEY | BUTTONIDCMP | STRINGIDCMP,
  300.  
  301.             WA_Title,    LocaleString(MSG_PATHPANEL_PATH_PREFERENCES_TXT),
  302.         TAG_DONE))
  303.         {
  304.             struct IntuiMessage    *Massage;
  305.             ULONG             Class,Code;
  306.             struct Gadget        *Gadget;
  307.             BYTE             Terminated = FALSE;
  308.  
  309.             PushWindow(PanelWindow);
  310.  
  311.             AddGList(PanelWindow,GadgetList,(UWORD)-1,(UWORD)-1,NULL);
  312.             RefreshGList(GadgetList,PanelWindow,NULL,(UWORD)-1);
  313.             GT_RefreshWindow(PanelWindow,NULL);
  314.  
  315.             ActiveGadget = NULL;
  316.  
  317.             while(!Terminated)
  318.             {
  319.                 WaitPort(PanelWindow -> UserPort);
  320.  
  321.                 while(!Terminated && (Massage = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort)))
  322.                 {
  323.                     Class    = Massage -> Class;
  324.                     Code    = Massage -> Code;
  325.                     Gadget    = (struct Gadget *)Massage -> IAddress;
  326.  
  327.                     GT_ReplyIMsg(Massage);
  328.  
  329.                     if(Class == IDCMP_VANILLAKEY)
  330.                         KeySelect(GadgetArray,GAD_CANCEL,Code,PanelWindow,&Gadget,&Class,&Code);
  331.  
  332.                     if(Class == IDCMP_ACTIVEWINDOW && ActiveGadget)
  333.                         ActivateGadget(ActiveGadget,PanelWindow,NULL);
  334.  
  335.                     if(Class == IDCMP_GADGETDOWN)
  336.                     {
  337.                         if((Gadget -> GadgetType & GTYP_GTYPEMASK) == GTYP_STRGADGET)
  338.                             ActiveGadget = Gadget;
  339.                     }
  340.  
  341.                     if(Class == IDCMP_CLOSEWINDOW)
  342.                         Terminated = TRUE;
  343.  
  344. GadCheck:                if(Class == IDCMP_GADGETUP)
  345.                     {
  346.                         switch(Gadget -> GadgetID)
  347.                         {
  348.                             case GAD_USE:        Terminated = TRUE;
  349.  
  350.                                         strcpy(Config -> DefaultStorage,    GT_STRING(GadgetArray[GAD_CONFIGSTORE]));
  351.  
  352.                                         strcpy(Config -> TextUploadPath,    GT_STRING(GadgetArray[GAD_TUPLOAD]));
  353.                                         strcpy(Config -> TextDownloadPath,    GT_STRING(GadgetArray[GAD_TDOWNLOAD]));
  354.  
  355.                                         strcpy(Config -> ASCIIUploadPath,    GT_STRING(GadgetArray[GAD_AUPLOAD]));
  356.                                         strcpy(Config -> ASCIIDownloadPath,    GT_STRING(GadgetArray[GAD_ADOWNLOAD]));
  357.  
  358.                                         strcpy(Config -> BinaryUploadPath,    GT_STRING(GadgetArray[GAD_BUPLOAD]));
  359.                                         strcpy(Config -> BinaryDownloadPath,    GT_STRING(GadgetArray[GAD_BDOWNLOAD]));
  360.  
  361.                                         strcpy(Config -> CapturePath,        GT_STRING(GadgetArray[GAD_CAPTURE]));
  362.                                         strcpy(Config -> LogFile,        GT_STRING(GadgetArray[GAD_LOG]));
  363.                                         strcpy(Config -> Editor,        GT_STRING(GadgetArray[GAD_EDITOR]));
  364.                                         strcpy(Config -> BeepSound,        GT_STRING(GadgetArray[GAD_BEEP]));
  365.  
  366.                                         break;
  367.  
  368.                             case GAD_CANCEL:    Terminated = TRUE;
  369.  
  370.                                         CopyMem(&PrivateConfig,Config,sizeof(struct Configuration));
  371.  
  372.                                         break;
  373.  
  374.                             default:                if(Gadget -> GadgetID >= GAD_SELECT1 && Gadget -> GadgetID <= GAD_SELECT11)
  375.                                         {
  376.                                             UBYTE             DummyBuffer[256],
  377.                                                         *DummyChar;
  378.                                             struct FileRequester    *FileRequest;
  379.                                             LONG             Selection = Gadget -> GadgetID - GAD_SELECT1;
  380.  
  381.                                             BlockWindow(PanelWindow);
  382.  
  383.                                             strcpy(DummyBuffer,GT_STRING(GadgetArray[Selection]));
  384.  
  385.                                             if(Gadget -> GadgetID >= GAD_SELECT9)
  386.                                             {
  387.                                                 if(DummyBuffer[0])
  388.                                                 {
  389.                                                     if(FilePart(DummyBuffer) == DummyBuffer)
  390.                                                         DummyBuffer[0] = 0;
  391.                                                     else
  392.                                                     {
  393.                                                         DummyChar = PathPart(DummyBuffer);
  394.  
  395.                                                         *DummyChar = 0;
  396.                                                     }
  397.  
  398.                                                     DummyChar = FilePart(GT_STRING(GadgetArray[Selection]));
  399.                                                 }
  400.                                                 else
  401.                                                     DummyChar = "";
  402.                                             }
  403.                                             else
  404.                                                 DummyChar = "";
  405.  
  406.                                             if(FileRequest = GetFile(SelectText[Selection],DummyBuffer,DummyChar,DummyBuffer,NULL,FALSE,FALSE,Gadget -> GadgetID < GAD_SELECT9,LocaleString(MSG_GLOBAL_SELECT_TXT)))
  407.                                             {
  408.                                                 GT_SetGadgetAttrs(GadgetArray[Selection],PanelWindow,NULL,
  409.                                                     GTST_String,(Gadget -> GadgetID < GAD_SELECT9 ? FileRequest -> rf_Dir : DummyBuffer),
  410.                                                 TAG_DONE);
  411.  
  412.                                                 FreeAslRequest(FileRequest);
  413.                                             }
  414.  
  415.                                             ReleaseWindow(PanelWindow);
  416.                                         }
  417.  
  418.                                         break;
  419.                         }
  420.                     }
  421.                 }
  422.             }
  423.  
  424.             RemoveGList(PanelWindow,GadgetList,(UWORD)-1);
  425.  
  426.             PopWindow();
  427.  
  428.             CloseWindow(PanelWindow);
  429.         }
  430.     }
  431.  
  432.     FreeGadgets(GadgetList);
  433.  
  434.     return((BYTE)Stricmp(Config -> BeepSound,PrivateConfig . BeepSound));
  435. }
  436.