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

  1. /*
  2. **    $Id: MiscPanel.c,v 1.7 92/08/18 16:11:26 olsen Sta Locker: olsen $
  3. **    $Revision: 1.7 $
  4. **    $Date: 92/08/18 16:11:26 $
  5. **
  6. **    Editing panel for miscellaneous parts of the 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_PRIORITY,GAD_OVERRIDE,GAD_BACKUP,GAD_AUTOUPLOAD,GAD_SETBIT,GAD_CLIPBOARD,GAD_CHARDELAY,GAD_LINEDELAY,
  15.         GAD_MAXBUFFSIZE,GAD_BUFFERENABLED,GAD_SHOWFASTMACROS,GAD_USE,GAD_CANCEL };
  16.  
  17. STATIC STRPTR __saveds
  18. ShowTime(struct Gadget *SomeGadget,WORD Level)
  19. {
  20.     return(LocaleSeconds(Level));
  21. }
  22.  
  23. STATIC struct Gadget *
  24. CreateAllGadgets(struct Configuration *Config,struct Gadget **GadgetArray,struct Gadget **GadgetList,APTR VisualInfo,UWORD TopEdge)
  25. {
  26.     struct Gadget        *Gadget;
  27.     struct NewGadget     NewGadget;
  28.     UWORD             Counter = 0;
  29.  
  30.     SZ_SizeSetup(Screen,&UserFont,TRUE);
  31.  
  32.     memset(&NewGadget,0,sizeof(struct NewGadget));
  33.  
  34.     if(Gadget = CreateContext(GadgetList))
  35.     {
  36.         SZ_AddLeftOffset(SZ_LeftOffsetDelta(MSG_MISCPANEL_PROGRAM_PRIORITY_GAD,MSG_MISCPANEL_SHOW_FAST_MACROS_GAD));
  37.  
  38.         if(SZ_Width(INTEGER_KIND,NULL,10,NULL) > 140)
  39.             SZ_SetWidth(SZ_Width(INTEGER_KIND,NULL,10,NULL));
  40.         else
  41.             SZ_SetWidth(140);
  42.  
  43.         NewGadget . ng_GadgetText    = LocaleString(MSG_MISCPANEL_PROGRAM_PRIORITY_GAD);
  44.         NewGadget . ng_TextAttr        = &UserFont;
  45.         NewGadget . ng_GadgetID        = Counter;
  46.         NewGadget . ng_Flags        = PLACETEXT_LEFT;
  47.         NewGadget . ng_VisualInfo    = VisualInfo;
  48.  
  49.         GadgetArray[Counter++] = Gadget = CreateGadget(SLIDER_KIND,Gadget,&NewGadget,
  50.             SZ_Adjust,        TRUE,
  51.             SZ_AutoWidth,        TRUE,
  52.  
  53.             GT_Underscore,        '_',
  54.             GTSL_Min,        -128,
  55.             GTSL_Max,        127,
  56.             GTSL_Level,        Config -> Priority,
  57.             GTSL_MaxLevelLen,    4,
  58.             GTSL_LevelFormat,    "%4ld",
  59.             PGA_Freedom,        LORIENT_HORIZ,
  60.             GA_Immediate,        TRUE,
  61.             GA_RelVerify,        TRUE,
  62.         TAG_DONE);
  63.  
  64.         NewGadget . ng_GadgetText    = LocaleString(MSG_MISCPANEL_OVERRIDE_TRANSFER_PATH_GAD);
  65.         NewGadget . ng_GadgetID        = Counter;
  66.  
  67.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  68.             SZ_Adjust,    TRUE,
  69.             SZ_AutoWidth,    TRUE,
  70.  
  71.             GTCB_Checked,    Config -> OverridePath,
  72.             GT_Underscore,    '_',
  73.         TAG_DONE);
  74.  
  75.         NewGadget . ng_GadgetText    = LocaleString(MSG_MISCPANEL_BACKUP_CONFIGURATION_GAD);
  76.         NewGadget . ng_GadgetID        = Counter;
  77.  
  78.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  79.             SZ_Adjust,    TRUE,
  80.             SZ_AutoWidth,    TRUE,
  81.  
  82.             GTCB_Checked,    Config -> BackupConfig,
  83.             GT_Underscore,    '_',
  84.         TAG_DONE);
  85.  
  86.         NewGadget . ng_GadgetText    = LocaleString(MSG_MISCPANEL_USE_AUTO_UPLOAD_PANEL_GAD);
  87.         NewGadget . ng_GadgetID        = Counter;
  88.  
  89.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  90.             SZ_Adjust,    TRUE,
  91.             SZ_AutoWidth,    TRUE,
  92.  
  93.             GTCB_Checked,    Config -> AutoUpload,
  94.             GT_Underscore,    '_',
  95.         TAG_DONE);
  96.  
  97.         NewGadget . ng_GadgetText    = LocaleString(MSG_MISCPANEL_SET_ARCHIVED_BIT_GAD);
  98.         NewGadget . ng_GadgetID        = Counter;
  99.  
  100.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  101.             SZ_Adjust,    TRUE,
  102.             SZ_AutoWidth,    TRUE,
  103.  
  104.             GTCB_Checked,    Config -> SetArchivedBit,
  105.             GT_Underscore,    '_',
  106.         TAG_DONE);
  107.  
  108.         NewGadget . ng_GadgetText    = LocaleString(MSG_MISCPANEL_CLIPBOARD_UNIT_GAD);
  109.         NewGadget . ng_GadgetID        = Counter;
  110.  
  111.         GadgetArray[Counter++] = Gadget = CreateGadget(INTEGER_KIND,Gadget,&NewGadget,
  112.             SZ_Adjust,    TRUE,
  113.             SZ_AutoWidth,    TRUE,
  114.  
  115.             GT_Underscore,    '_',
  116.             GTIN_MaxChars,    3,
  117.             GTIN_Number,    Config -> ClipboardUnit,
  118.             GTST_EditHook,    &CommandHook,
  119.             GA_Immediate,    TRUE,
  120.         TAG_DONE);
  121.  
  122.         NewGadget . ng_GadgetText    = LocaleString(MSG_MISCPANEL_CHAR_DELAY_GAD);
  123.         NewGadget . ng_GadgetID        = Counter;
  124.  
  125.         GadgetArray[Counter++] = Gadget = CreateGadget(SLIDER_KIND,Gadget,&NewGadget,
  126.             SZ_Adjust,        TRUE,
  127.             SZ_AutoWidth,        TRUE,
  128.  
  129.             GT_Underscore,        '_',
  130.             GTSL_Min,        0,
  131.             GTSL_Max,        10 * 100,
  132.             GTSL_Level,        Config -> CharDelay,
  133.             GTSL_MaxLevelLen,    6,
  134.             GTSL_LevelFormat,    "%s s",
  135.             GTSL_DispFunc,        ShowTime,
  136.             PGA_Freedom,        LORIENT_HORIZ,
  137.             GA_Immediate,        TRUE,
  138.             GA_RelVerify,        TRUE,
  139.         TAG_DONE);
  140.  
  141.         NewGadget . ng_GadgetText    = LocaleString(MSG_MISCPANEL_LINE_DELAY_GAD);
  142.         NewGadget . ng_GadgetID        = Counter;
  143.  
  144.         GadgetArray[Counter++] = Gadget = CreateGadget(SLIDER_KIND,Gadget,&NewGadget,
  145.             SZ_Adjust,        TRUE,
  146.             SZ_AutoWidth,        TRUE,
  147.  
  148.             GT_Underscore,        '_',
  149.             GTSL_Min,        0,
  150.             GTSL_Max,        10 * 100,
  151.             GTSL_Level,        Config -> LineDelay,
  152.             GTSL_MaxLevelLen,    6,
  153.             GTSL_LevelFormat,    "%s s",
  154.             GTSL_DispFunc,        ShowTime,
  155.             PGA_Freedom,        LORIENT_HORIZ,
  156.             GA_Immediate,        TRUE,
  157.             GA_RelVerify,        TRUE,
  158.         TAG_DONE);
  159.  
  160.         NewGadget . ng_GadgetText    = LocaleString(MSG_MISCPANEL_MAXIMUM_BUFFER_SIZE_GAD);
  161.         NewGadget . ng_GadgetID        = Counter;
  162.  
  163.         GadgetArray[Counter++] = Gadget = CreateGadget(INTEGER_KIND,Gadget,&NewGadget,
  164.             SZ_Adjust,    TRUE,
  165.             SZ_AutoWidth,    TRUE,
  166.  
  167.             GT_Underscore,    '_',
  168.             GTIN_MaxChars,    8,
  169.             GTIN_Number,    Config -> MaxLogBuffSize,
  170.             GTST_EditHook,    &CommandHook,
  171.             GA_Immediate,    TRUE,
  172.         TAG_DONE);
  173.  
  174.         NewGadget . ng_GadgetText    = LocaleString(MSG_MISCPANEL_BUFFER_ENABLED_GAD);
  175.         NewGadget . ng_GadgetID        = Counter;
  176.  
  177.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  178.             SZ_Adjust,    TRUE,
  179.             SZ_AutoWidth,    TRUE,
  180.  
  181.             GTCB_Checked,    Config -> BufferEnabled,
  182.             GT_Underscore,    '_',
  183.         TAG_DONE);
  184.  
  185.         NewGadget . ng_GadgetText    = LocaleString(MSG_MISCPANEL_SHOW_FAST_MACROS_GAD);
  186.         NewGadget . ng_GadgetID        = Counter;
  187.  
  188.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  189.             SZ_Adjust,    TRUE,
  190.             SZ_AutoWidth,    TRUE,
  191.  
  192.             GTCB_Checked,    Config -> OpenFastMacroPanel,
  193.             GT_Underscore,    '_',
  194.         TAG_DONE);
  195.  
  196.         SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(MSG_GLOBAL_USE_GAD),0,NULL);
  197.         SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(MSG_GLOBAL_CANCEL_GAD),0,NULL);
  198.  
  199.         SZ_SetWidth(SZ_ResetMaxWidth());
  200.  
  201.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_USE_GAD);
  202.         NewGadget . ng_GadgetID        = Counter;
  203.         NewGadget . ng_Flags        = 0;
  204.  
  205.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  206.             SZ_Adjust,    TRUE,
  207.             SZ_AutoWidth,    TRUE,
  208.             SZ_AlignExtra,    TRUE,
  209.             SZ_AlignLeft,    TRUE,
  210.             SZ_AlignBottom,    TRUE,
  211.  
  212.             GT_Underscore,    '_',
  213.         TAG_DONE);
  214.  
  215.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_CANCEL_GAD);
  216.         NewGadget . ng_GadgetID        = Counter;
  217.  
  218.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  219.             SZ_Adjust,    TRUE,
  220.             SZ_AutoWidth,    TRUE,
  221.             SZ_AlignRight,    TRUE,
  222.  
  223.             GT_Underscore,    '_',
  224.         TAG_DONE);
  225.     }
  226.  
  227.     return(Gadget);
  228. }
  229.  
  230. VOID
  231. MiscPanel(struct Configuration *Config)
  232. {
  233.     struct Window    *PanelWindow;
  234.     struct Gadget    *GadgetList = NULL;
  235.     struct Gadget    *GadgetArray[GAD_CANCEL + 1];
  236.  
  237.     CopyMem(Config,&PrivateConfig,sizeof(struct Configuration));
  238.  
  239.     if(CreateAllGadgets(Config,&GadgetArray[0],&GadgetList,VisualInfo,Screen -> WBorTop + Screen -> Font -> ta_YSize + 1))
  240.     {
  241.         if(PanelWindow = OpenWindowTags(NULL,
  242.             WA_Left,    (Screen -> Width    - SZ_GetWindowWidth())    / 2,
  243.             WA_Top,        (Screen -> Height    - SZ_GetWindowHeight())    / 2,
  244.             WA_Width,    SZ_GetWindowWidth(),
  245.             WA_Height,    SZ_GetWindowHeight(),
  246.  
  247.             WA_Activate,    TRUE,
  248.             WA_DragBar,    TRUE,
  249.             WA_DepthGadget,    TRUE,
  250.             WA_RMBTrap,    TRUE,
  251.             WA_DepthGadget,    TRUE,
  252.             WA_CloseGadget,    TRUE,
  253.             WA_CustomScreen,Screen,
  254.  
  255.             WA_IDCMP,    IDCMP_GADGETDOWN | IDCMP_ACTIVEWINDOW | IDCMP_VANILLAKEY | IDCMP_CLOSEWINDOW | BUTTONIDCMP | CHECKBOXIDCMP | SLIDERIDCMP | INTEGERIDCMP,
  256.  
  257.             WA_Title,    LocaleString(MSG_MISCPANEL_MISCELLANEOUS_PREFERENCES_TXT),
  258.         TAG_DONE))
  259.         {
  260.             struct IntuiMessage    *Massage;
  261.             ULONG             Class,Code;
  262.             struct Gadget        *Gadget;
  263.             BYTE             Terminated = FALSE;
  264.  
  265.             PushWindow(PanelWindow);
  266.  
  267.             AddGList(PanelWindow,GadgetList,(UWORD)-1,(UWORD)-1,NULL);
  268.             RefreshGList(GadgetList,PanelWindow,NULL,(UWORD)-1);
  269.             GT_RefreshWindow(PanelWindow,NULL);
  270.  
  271.             ActiveGadget = NULL;
  272.  
  273.             while(!Terminated)
  274.             {
  275.                 WaitPort(PanelWindow -> UserPort);
  276.  
  277.                 while(!Terminated && (Massage = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort)))
  278.                 {
  279.                     Class    = Massage -> Class;
  280.                     Code    = Massage -> Code;
  281.                     Gadget    = (struct Gadget *)Massage -> IAddress;
  282.  
  283.                     GT_ReplyIMsg(Massage);
  284.  
  285.                     if(Class == IDCMP_VANILLAKEY)
  286.                         KeySelect(GadgetArray,GAD_CANCEL,Code,PanelWindow,&Gadget,&Class,&Code);
  287.  
  288.                     if(Class == IDCMP_GADGETDOWN)
  289.                     {
  290.                         if((Gadget -> GadgetType & GTYP_GTYPEMASK) == GTYP_STRGADGET)
  291.                             ActiveGadget = Gadget;
  292.                     }
  293.  
  294.                     if(Class == IDCMP_ACTIVEWINDOW && ActiveGadget)
  295.                         ActivateGadget(ActiveGadget,PanelWindow,NULL);
  296.  
  297.                     if(Class == IDCMP_CLOSEWINDOW)
  298.                     {
  299.                         Terminated = TRUE;
  300.  
  301.                         Config -> Priority = PrivateConfig . Priority;
  302.                     }
  303.  
  304.                     if(Class == IDCMP_MOUSEMOVE)
  305.                     {
  306.                         switch(Gadget -> GadgetID)
  307.                         {
  308.                             case GAD_PRIORITY:    Config -> Priority = (BYTE)Code;
  309.                                         break;
  310.  
  311.                             case GAD_CHARDELAY:    Config -> CharDelay = Code;
  312.                                         break;
  313.  
  314.                             case GAD_LINEDELAY:    Config -> LineDelay = Code;
  315.                                         break;
  316.                         }
  317.                     }
  318.  
  319.                     if(Class == IDCMP_GADGETUP)
  320.                     {
  321.                         switch(Gadget -> GadgetID)
  322.                         {
  323.                             case GAD_PRIORITY:    Config -> Priority = (BYTE)Code;
  324.                                         break;
  325.  
  326.                             case GAD_CHARDELAY:    Config -> CharDelay = Code;
  327.                                         break;
  328.  
  329.                             case GAD_LINEDELAY:    Config -> LineDelay = Code;
  330.                                         break;
  331.  
  332.                             case GAD_USE:        Terminated = TRUE;
  333.  
  334.                                         Config -> OverridePath        = GT_CHECKED(GadgetArray[GAD_OVERRIDE]);
  335.                                         Config -> BackupConfig        = GT_CHECKED(GadgetArray[GAD_BACKUP]);
  336.                                         Config -> AutoUpload        = GT_CHECKED(GadgetArray[GAD_AUTOUPLOAD]);
  337.                                         Config -> SetArchivedBit    = GT_CHECKED(GadgetArray[GAD_SETBIT]);
  338.                                         Config -> BufferEnabled        = GT_CHECKED(GadgetArray[GAD_BUFFERENABLED]);
  339.                                         Config -> OpenFastMacroPanel    = GT_CHECKED(GadgetArray[GAD_SHOWFASTMACROS]);
  340.                                         Config -> MaxLogBuffSize    = GT_INTEGER(GadgetArray[GAD_MAXBUFFSIZE]);
  341.                                         Config -> ClipboardUnit        = GT_INTEGER(GadgetArray[GAD_CLIPBOARD]);
  342.  
  343.                                         if(Config -> ClipboardUnit < 0)
  344.                                             Config -> ClipboardUnit = 0;
  345.  
  346.                                         if(GT_INTEGER(GadgetArray[GAD_CLIPBOARD]) > 255)
  347.                                             Config -> ClipboardUnit = 255;
  348.  
  349.                                         if(Config -> MaxLogBuffSize && Config -> MaxLogBuffSize < 2000)
  350.                                             Config -> MaxLogBuffSize = 2000;
  351.  
  352.                                         break;
  353.  
  354.                             case GAD_CANCEL:    Terminated = TRUE;
  355.  
  356.                                         Config -> Priority = PrivateConfig . Priority;
  357.  
  358.                                         break;
  359.  
  360.                             default:        break;
  361.                         }
  362.                     }
  363.                 }
  364.             }
  365.  
  366.             RemoveGList(PanelWindow,GadgetList,(UWORD)-1);
  367.  
  368.             PopWindow();
  369.  
  370.             CloseWindow(PanelWindow);
  371.         }
  372.     }
  373.  
  374.     FreeGadgets(GadgetList);
  375. }
  376.