home *** CD-ROM | disk | FTP | other *** search
/ Amiga Elysian Archive / AmigaElysianArchive.iso / comm / term23_2.lha / Source_Code / termSource / CopyPanel.c < prev    next >
C/C++ Source or Header  |  1992-08-18  |  13KB  |  459 lines

  1. /*
  2. **    $Id: CopyPanel.c,v 1.10 92/08/18 16:11:05 olsen Sta Locker: olsen $
  3. **    $Revision: 1.10 $
  4. **    $Date: 92/08/18 16:11:05 $
  5. **
  6. **    Editing panel for configuration copying
  7. **
  8. **    Copyright © 1990-1992 by Olaf `Olsen' Barthel & MXM
  9. **        All Rights Reserved
  10. */
  11.  
  12. #include "termGlobal.h"
  13.  
  14. enum    {    GAD_TITLE,GAD_SERIAL,GAD_MODEM,GAD_SCREEN,GAD_TERMINAL,GAD_COMMANDS,
  15.         GAD_KEYMACROS,GAD_TRANSFER,GAD_PATHS,GAD_MISC,GAD_FASTMACROS,
  16.         GAD_COPYTOALL,GAD_ALL,GAD_CLEAR,GAD_USE,GAD_CANCEL };
  17.  
  18. STATIC ULONG Bits = 0;
  19.  
  20. STATIC struct Gadget *
  21. CreateAllGadgets(struct Gadget **GadgetArray,struct Gadget **GadgetList,APTR VisualInfo,UWORD TopEdge)
  22. {
  23.     struct Gadget        *Gadget;
  24.     struct NewGadget     NewGadget;
  25.     UWORD             Counter = 0;
  26.  
  27.     SZ_SizeSetup(Screen,&UserFont,TRUE);
  28.  
  29.     memset(&NewGadget,0,sizeof(struct NewGadget));
  30.  
  31.     if(Gadget = CreateContext(GadgetList))
  32.     {
  33.         SZ_AddLeftOffset(SZ_LeftOffsetN(MSG_COPYPANEL_SERIAL_GAD,MSG_COPYPANEL_MODEM_GAD,MSG_COPYPANEL_SCREEN_GAD,MSG_COPYPANEL_TERMINAL_GAD,MSG_COPYPANEL_COMMANDS_GAD,MSG_COPYPANEL_KEYBOARD_MACROS_GAD,MSG_COPYPANEL_TRANSFER_GAD,MSG_COPYPANEL_PATHS_GAD,MSG_COPYPANEL_MISCELLANEOUS_GAD,MSG_COPYPANEL_FAST_MACROS_GAD,MSG_COPYPANEL_TO_ALL_ENTRIES_GAD,MSG_COPYPANEL_SELECT_DATA_TO_COPY_GAD,-1));
  34.  
  35.         SZ_ResetMaxWidth();
  36.  
  37.         SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(MSG_COPYPANEL_ALL_GAD),0,NULL);
  38.         SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(MSG_COPYPANEL_CLEAR_GAD),0,NULL);
  39.         SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(MSG_GLOBAL_USE_GAD),0,NULL);
  40.         SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(MSG_GLOBAL_CANCEL_GAD),0,NULL);
  41.  
  42.         SZ_SetWidth(SZ_ResetMaxWidth());
  43.  
  44.         NewGadget . ng_TextAttr        = &UserFont;
  45.         NewGadget . ng_VisualInfo    = VisualInfo;
  46.         NewGadget . ng_GadgetText    = LocaleString(MSG_COPYPANEL_SELECT_DATA_TO_COPY_GAD);
  47.         NewGadget . ng_Flags        = NG_HIGHLABEL;
  48.         NewGadget . ng_GadgetID        = Counter;
  49.  
  50.         GadgetArray[Counter++] = Gadget = CreateGadget(TEXT_KIND,Gadget,&NewGadget,
  51.             SZ_Adjust,    TRUE,
  52.             SZ_AutoWidth,    TRUE,
  53.         TAG_DONE);
  54.  
  55.         NewGadget . ng_GadgetText    = LocaleString(MSG_COPYPANEL_SERIAL_GAD);
  56.         NewGadget . ng_GadgetID        = Counter;
  57.         NewGadget . ng_Flags        = 0;
  58.  
  59.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  60.             SZ_Adjust,    TRUE,
  61.             SZ_AutoWidth,    TRUE,
  62.  
  63.             GT_Underscore,    '_',
  64.             GTCB_Checked,    Bits & (1 << 0),
  65.         TAG_DONE);
  66.  
  67.         NewGadget . ng_GadgetText    = LocaleString(MSG_COPYPANEL_MODEM_GAD);
  68.         NewGadget . ng_GadgetID        = Counter;
  69.  
  70.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  71.             SZ_Adjust,    TRUE,
  72.             SZ_AutoWidth,    TRUE,
  73.  
  74.             GT_Underscore,    '_',
  75.             GTCB_Checked,    Bits & (1 << 1),
  76.         TAG_DONE);
  77.  
  78.         NewGadget . ng_GadgetText    = LocaleString(MSG_COPYPANEL_SCREEN_GAD);
  79.         NewGadget . ng_GadgetID        = Counter;
  80.  
  81.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  82.             SZ_Adjust,    TRUE,
  83.             SZ_AutoWidth,    TRUE,
  84.  
  85.             GT_Underscore,    '_',
  86.             GTCB_Checked,    Bits & (1 << 2),
  87.         TAG_DONE);
  88.  
  89.         NewGadget . ng_GadgetText    = LocaleString(MSG_COPYPANEL_TERMINAL_GAD);
  90.         NewGadget . ng_GadgetID        = Counter;
  91.  
  92.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  93.             SZ_Adjust,    TRUE,
  94.             SZ_AutoWidth,    TRUE,
  95.  
  96.             GT_Underscore,    '_',
  97.             GTCB_Checked,    Bits & (1 << 3),
  98.         TAG_DONE);
  99.  
  100.         NewGadget . ng_GadgetText    = LocaleString(MSG_COPYPANEL_COMMANDS_GAD);
  101.         NewGadget . ng_GadgetID        = Counter;
  102.  
  103.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  104.             SZ_Adjust,    TRUE,
  105.             SZ_AutoWidth,    TRUE,
  106.  
  107.             GT_Underscore,    '_',
  108.             GTCB_Checked,    Bits & (1 << 4),
  109.         TAG_DONE);
  110.  
  111.         NewGadget . ng_GadgetText    = LocaleString(MSG_COPYPANEL_KEYBOARD_MACROS_GAD);
  112.         NewGadget . ng_GadgetID        = Counter;
  113.  
  114.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  115.             SZ_Adjust,    TRUE,
  116.             SZ_AutoWidth,    TRUE,
  117.  
  118.             GT_Underscore,    '_',
  119.             GTCB_Checked,    Bits & (1 << 5),
  120.         TAG_DONE);
  121.  
  122.         NewGadget . ng_GadgetText    = LocaleString(MSG_COPYPANEL_TRANSFER_GAD);
  123.         NewGadget . ng_GadgetID        = Counter;
  124.  
  125.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  126.             SZ_Adjust,    TRUE,
  127.             SZ_AutoWidth,    TRUE,
  128.  
  129.             GT_Underscore,    '_',
  130.             GTCB_Checked,    Bits & (1 << 6),
  131.         TAG_DONE);
  132.  
  133.         NewGadget . ng_GadgetText    = LocaleString(MSG_COPYPANEL_PATHS_GAD);
  134.         NewGadget . ng_GadgetID        = Counter;
  135.  
  136.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  137.             SZ_Adjust,    TRUE,
  138.             SZ_AutoWidth,    TRUE,
  139.  
  140.             GT_Underscore,    '_',
  141.             GTCB_Checked,    Bits & (1 << 7),
  142.         TAG_DONE);
  143.  
  144.         NewGadget . ng_GadgetText    = LocaleString(MSG_COPYPANEL_MISCELLANEOUS_GAD);
  145.         NewGadget . ng_GadgetID        = Counter;
  146.  
  147.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  148.             SZ_Adjust,    TRUE,
  149.             SZ_AutoWidth,    TRUE,
  150.  
  151.             GT_Underscore,    '_',
  152.             GTCB_Checked,    Bits & (1 << 8),
  153.         TAG_DONE);
  154.  
  155.         NewGadget . ng_GadgetText    = LocaleString(MSG_COPYPANEL_FAST_MACROS_GAD);
  156.         NewGadget . ng_GadgetID        = Counter;
  157.  
  158.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  159.             SZ_Adjust,    TRUE,
  160.             SZ_AutoWidth,    TRUE,
  161.  
  162.             GT_Underscore,    '_',
  163.             GTCB_Checked,    Bits & (1 << 9),
  164.         TAG_DONE);
  165.  
  166.         NewGadget . ng_GadgetText    = LocaleString(MSG_COPYPANEL_TO_ALL_ENTRIES_GAD);
  167.         NewGadget . ng_GadgetID        = Counter;
  168.  
  169.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  170.             SZ_Adjust,    TRUE,
  171.             SZ_AutoWidth,    TRUE,
  172.  
  173.             GT_Underscore,    '_',
  174.             GTCB_Checked,    FALSE,
  175.         TAG_DONE);
  176.  
  177.         NewGadget . ng_GadgetText    = LocaleString(MSG_COPYPANEL_ALL_GAD);
  178.         NewGadget . ng_GadgetID        = Counter;
  179.         NewGadget . ng_Flags        = PLACETEXT_IN;
  180.  
  181.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  182.             SZ_Adjust,    TRUE,
  183.             SZ_AutoWidth,    TRUE,
  184.             SZ_AlignExtra,    TRUE,
  185.             SZ_AlignLeft,    TRUE,
  186.             SZ_AlignBottom,    TRUE,
  187.  
  188.             GT_Underscore,    '_',
  189.         TAG_DONE);
  190.  
  191.         NewGadget . ng_GadgetText    = LocaleString(MSG_COPYPANEL_CLEAR_GAD);
  192.         NewGadget . ng_GadgetID        = Counter;
  193.  
  194.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  195.             SZ_Adjust,    TRUE,
  196.             SZ_AutoWidth,    TRUE,
  197.             SZ_AlignRight,    TRUE,
  198.  
  199.             GT_Underscore,    '_',
  200.         TAG_DONE);
  201.  
  202.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_USE_GAD);
  203.         NewGadget . ng_GadgetID        = Counter;
  204.  
  205.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  206.             SZ_Adjust,    TRUE,
  207.             SZ_AutoWidth,    TRUE,
  208.             SZ_AlignLeft,    TRUE,
  209.             SZ_AlignBottom,    TRUE,
  210.  
  211.             GT_Underscore,    '_',
  212.         TAG_DONE);
  213.  
  214.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_CANCEL_GAD);
  215.         NewGadget . ng_GadgetID        = Counter;
  216.  
  217.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  218.             SZ_Adjust,    TRUE,
  219.             SZ_AutoWidth,    TRUE,
  220.             SZ_AlignRight,    TRUE,
  221.  
  222.             GT_Underscore,    '_',
  223.         TAG_DONE);
  224.     }
  225.  
  226.     return(Gadget);
  227. }
  228.  
  229. STATIC VOID __regargs
  230. CopyConfig(struct Configuration *MyConfig,BYTE Part)
  231. {
  232.     switch(Part)
  233.     {
  234.         case GAD_SERIAL:    memcpy(&MyConfig -> BaudRate,&Config . BaudRate,offsetof(struct Configuration,ModemInit));
  235.  
  236.                     MyConfig -> SerBuffSize = Config . SerBuffSize;
  237.  
  238.                     break;
  239.  
  240.         case GAD_MODEM:        memcpy(&MyConfig -> ModemInit[0],&Config . ModemInit[0],offsetof(struct Configuration,Protocol) - offsetof(struct Configuration,ModemInit));
  241.  
  242.                     strcpy(MyConfig -> NoDialTone,Config . NoDialTone);
  243.                     strcpy(MyConfig -> DialSuffix,Config . DialSuffix);
  244.  
  245.                     MyConfig -> CheckCarrier    = Config . CheckCarrier;
  246.                     MyConfig -> DropDTR        = Config . DropDTR;
  247.                     MyConfig -> PassThrough        = Config . PassThrough;
  248.                     MyConfig -> NCommLog        = Config . NCommLog;
  249.  
  250.                     break;
  251.  
  252.         case GAD_SCREEN:    memcpy(&MyConfig -> DisplayMode,&Config . DisplayMode,offsetof(struct Configuration,CaptureFilter) - offsetof(struct Configuration,DisplayMode));
  253.  
  254.                     strcpy(MyConfig -> FontName,Config . FontName);
  255.  
  256.                     MyConfig -> FontHeight = Config . FontHeight;
  257.  
  258.                     break;
  259.  
  260.         case GAD_TERMINAL:    memcpy(&MyConfig -> CaptureFilter,&Config . CaptureFilter,offsetof(struct Configuration,CursorApp) - offsetof(struct Configuration,CaptureFilter));
  261.                     memcpy(&MyConfig -> SwapBSDelete,&Config . SwapBSDelete,offsetof(struct Configuration,UploadMacro) - offsetof(struct Configuration,SwapBSDelete));
  262.  
  263.                     strcpy(MyConfig -> KeyMapName,Config . KeyMapName);
  264.                     strcpy(MyConfig -> AnswerBack,Config . AnswerBack);
  265.  
  266.                     MyConfig -> TitleBar        = Config . TitleBar;
  267.                     MyConfig -> StatusLine        = Config . StatusLine;
  268.  
  269.                     MyConfig -> ReceiveCR        = Config . ReceiveCR;
  270.                     MyConfig -> ReceiveLF        = Config . ReceiveLF;
  271.  
  272.                     MyConfig -> SystemBeep        = Config . SystemBeep;
  273.                     MyConfig -> Alert        = Config . Alert;
  274.  
  275.                     MyConfig -> PrinterEnabled    = Config . PrinterEnabled;
  276.  
  277.                     strcpy(MyConfig -> TextFontName,Config . TextFontName);
  278.                     MyConfig -> TextFontHeight = Config . TextFontHeight;
  279.  
  280.                     break;
  281.  
  282.         case GAD_COMMANDS:    strcpy(MyConfig -> StartupMacro,Config . StartupMacro);
  283.                     strcpy(MyConfig -> LogoffMacro,Config . LogoffMacro);
  284.                     strcpy(MyConfig -> UploadMacro,Config . UploadMacro);
  285.                     strcpy(MyConfig -> DownloadMacro,Config . DownloadMacro);
  286.                     break;
  287.  
  288.         case GAD_KEYMACROS:    strcpy(MyConfig -> MacroFile,Config . MacroFile);
  289.                     break;
  290.  
  291.         case GAD_TRANSFER:    strcpy(MyConfig -> Protocol,Config . Protocol);
  292.                     break;
  293.  
  294.         case GAD_MISC:        MyConfig -> Priority        = Config . Priority;
  295.                     MyConfig -> OverridePath    = Config . OverridePath;
  296.                     MyConfig -> BackupConfig    = Config . BackupConfig;
  297.  
  298.                     MyConfig -> MaxLogBuffSize    = Config . MaxLogBuffSize;
  299.                     MyConfig -> BufferEnabled    = Config . BufferEnabled;
  300.                     MyConfig -> SetArchivedBit    = Config . SetArchivedBit;
  301.                     MyConfig -> OpenFastMacroPanel    = Config . OpenFastMacroPanel;
  302.                     MyConfig -> ClipboardUnit    = Config . ClipboardUnit;
  303.                     MyConfig -> LineDelay        = Config . LineDelay;
  304.                     MyConfig -> CharDelay        = Config . CharDelay;
  305.  
  306.                     break;
  307.  
  308.         case GAD_PATHS:        memcpy(&MyConfig -> DefaultStorage[0],&Config . DefaultStorage[0],offsetof(struct Configuration,SwapBSDelete) - offsetof(struct Configuration,DefaultStorage));
  309.                     break;
  310.  
  311.         case GAD_FASTMACROS:    strcpy(MyConfig -> FastMacroFile,Config . FastMacroFile);
  312.                     break;
  313.     }
  314. }
  315.  
  316. VOID
  317. CopyPanel(struct Configuration *MyConfig)
  318. {
  319.     struct Window    *PanelWindow;
  320.     struct Gadget    *GadgetList;
  321.     struct Gadget    *GadgetArray[GAD_CANCEL + 1];
  322.  
  323.     if(CreateAllGadgets(&GadgetArray[0],&GadgetList,VisualInfo,Screen -> WBorTop + Screen -> Font -> ta_YSize + 1))
  324.     {
  325.         if(PanelWindow = OpenWindowTags(NULL,
  326.             WA_Left,    (Screen -> Width    - SZ_GetWindowWidth())    / 2,
  327.             WA_Top,        (Screen -> Height    - SZ_GetWindowHeight())    / 2,
  328.             WA_Width,    SZ_GetWindowWidth(),
  329.             WA_Height,    SZ_GetWindowHeight(),
  330.  
  331.             WA_Activate,    TRUE,
  332.             WA_DragBar,    TRUE,
  333.             WA_DepthGadget,    TRUE,
  334.             WA_RMBTrap,    TRUE,
  335.             WA_DepthGadget,    TRUE,
  336.             WA_CloseGadget,    TRUE,
  337.             WA_CustomScreen,Screen,
  338.             WA_IDCMP,    IDCMP_CLOSEWINDOW | IDCMP_VANILLAKEY | BUTTONIDCMP | CHECKBOXIDCMP,
  339.             WA_Title,    LocaleString(MSG_COPYPANEL_COPY_CONFIG_TXT),
  340.         TAG_DONE))
  341.         {
  342.             struct IntuiMessage    *Massage;
  343.             ULONG             Class,Code;
  344.             struct Gadget        *Gadget;
  345.             BYTE             Terminated = FALSE;
  346.             LONG             i;
  347.  
  348.             PushWindow(PanelWindow);
  349.  
  350.             AddGList(PanelWindow,GadgetList,(UWORD)-1,(UWORD)-1,NULL);
  351.             RefreshGList(GadgetList,PanelWindow,NULL,(UWORD)-1);
  352.             GT_RefreshWindow(PanelWindow,NULL);
  353.  
  354.             if(!MyConfig)
  355.             {
  356.                 GT_SetGadgetAttrs(GadgetArray[GAD_COPYTOALL],PanelWindow,NULL,
  357.                     GTCB_Checked,    TRUE,
  358.                     GA_Disabled,    TRUE,
  359.                 TAG_DONE);
  360.             }
  361.  
  362.             while(!Terminated)
  363.             {
  364.                 WaitPort(PanelWindow -> UserPort);
  365.  
  366.                 while(!Terminated && (Massage = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort)))
  367.                 {
  368.                     Class    = Massage -> Class;
  369.                     Code    = Massage -> Code;
  370.                     Gadget    = (struct Gadget *)Massage -> IAddress;
  371.  
  372.                     GT_ReplyIMsg(Massage);
  373.  
  374.                     if(Class == IDCMP_VANILLAKEY)
  375.                         KeySelect(GadgetArray,GAD_CANCEL,Code,PanelWindow,&Gadget,&Class,&Code);
  376.  
  377.                     if(Class == IDCMP_CLOSEWINDOW)
  378.                         Terminated = TRUE;
  379.  
  380.                     if(Class == IDCMP_GADGETUP)
  381.                     {
  382.                         switch(Gadget -> GadgetID)
  383.                         {
  384.                             case GAD_ALL:    for(i = GAD_SERIAL ; i <= GAD_FASTMACROS ; i++)
  385.                                     {
  386.                                         GT_SetGadgetAttrs(GadgetArray[i],PanelWindow,NULL,
  387.                                             GTCB_Checked,    TRUE,
  388.                                         TAG_DONE);
  389.                                     }
  390.  
  391.                                     break;
  392.  
  393.                             case GAD_CLEAR:    for(i = GAD_SERIAL ; i <= GAD_FASTMACROS ; i++)
  394.                                     {
  395.                                         GT_SetGadgetAttrs(GadgetArray[i],PanelWindow,NULL,
  396.                                             GTCB_Checked,    FALSE,
  397.                                         TAG_DONE);
  398.                                     }
  399.  
  400.                                     break;
  401.  
  402.                             case GAD_USE:    Bits = NULL;
  403.  
  404.                                     if(GT_CHECKED(GadgetArray[GAD_COPYTOALL]))
  405.                                     {
  406.                                         LONG j;
  407.  
  408.                                         for(i = GAD_SERIAL ; i <= GAD_FASTMACROS ; i++)
  409.                                         {
  410.                                             if(GT_CHECKED(GadgetArray[i]))
  411.                                             {
  412.                                                 for(j = 0 ; j < NumPhoneEntries ; j++)
  413.                                                     CopyConfig(&Phonebook[j] -> Config,i);
  414.  
  415.                                                 Bits |= (1 << (i - 1));
  416.                                             }
  417.                                         }
  418.                                     }
  419.                                     else
  420.                                     {
  421.                                         if(MyConfig)
  422.                                         {
  423.                                             for(i = GAD_SERIAL ; i <= GAD_FASTMACROS ; i++)
  424.                                             {
  425.                                                 if(GT_CHECKED(GadgetArray[i]))
  426.                                                 {
  427.                                                     CopyConfig(MyConfig,i);
  428.  
  429.                                                     Bits |= (1 << (i - 1));
  430.                                                 }
  431.                                             }
  432.                                         }
  433.                                     }
  434.  
  435.                                     Terminated = TRUE;
  436.  
  437.                                     break;
  438.  
  439.                             case GAD_CANCEL:Terminated = TRUE;
  440.  
  441.                                     break;
  442.  
  443.                             default:    break;
  444.                         }
  445.                     }
  446.                 }
  447.             }
  448.  
  449.             RemoveGList(PanelWindow,GadgetList,(UWORD)-1);
  450.  
  451.             PopWindow();
  452.  
  453.             CloseWindow(PanelWindow);
  454.         }
  455.  
  456.         FreeGadgets(GadgetList);
  457.     }
  458. }
  459.