home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d8xx / d832 / term.lha / Term / term-3.1-Source.lha / MiscPanel.c < prev    next >
C/C++ Source or Header  |  1993-02-18  |  9KB  |  348 lines

  1. /*
  2. **    MiscPanel.c
  3. **
  4. **    Editing panel for miscellaneous parts of the configuration
  5. **
  6. **    Copyright © 1990-1993 by Olaf `Olsen' Barthel & MXM
  7. **        All Rights Reserved
  8. */
  9.  
  10. #include "termGlobal.h"
  11.  
  12. enum    {    GAD_PRIORITY,GAD_BACKUP,GAD_SHOWFASTMACROS,GAD_RELEASE,
  13.         GAD_OVERRIDE,GAD_AUTOUPLOAD,GAD_SETBIT,GAD_TRANSFER_ICONS,GAD_IDENTIFY,
  14.         GAD_USE,GAD_CANCEL,GAD_DEFAULT };
  15.  
  16. STATIC STRPTR IdentifyType[4];
  17.  
  18. STATIC struct Gadget *
  19. CreateAllGadgets(struct Configuration *Config,struct Gadget **GadgetArray,struct Gadget **GadgetList,BYTE *Default)
  20. {
  21.     struct Gadget        *Gadget;
  22.     struct NewGadget     NewGadget;
  23.     UWORD             Counter = 0;
  24.  
  25.     SZ_SizeSetup(Window -> WScreen,&UserFont,TRUE);
  26.  
  27.     LocalizeString(IdentifyType,MSG_MISCPANEL_IDENTIFY_IGNORE_TXT,MSG_MISCPANEL_IDENTIFY_SOURCE_TXT);
  28.  
  29.     memset(&NewGadget,0,sizeof(struct NewGadget));
  30.  
  31.     if(Gadget = CreateContext(GadgetList))
  32.     {
  33.         LONG Max;
  34.  
  35.         SZ_AddLeftOffset(SZ_LeftOffsetDelta(MSG_MISCPANEL_PROGRAM_PRIORITY_GAD,MSG_MISCPANEL_IDENTIFY_FILES_GAD));
  36.  
  37.         SZ_ResetMaxWidth();
  38.  
  39.         SZ_UpdateMaxWidth(CYCLE_KIND,NULL,0,IdentifyType);
  40.         SZ_UpdateMaxWidth(CHECKBOX_KIND,NULL,0,NULL);
  41.  
  42.         Max = SZ_ResetMaxWidth();
  43.  
  44.         if(Max < 140)
  45.             Max = 140;
  46.  
  47.         SZ_SetWidth(Max);
  48.  
  49.         NewGadget . ng_GadgetText    = LocaleString(MSG_MISCPANEL_PROGRAM_PRIORITY_GAD);
  50.         NewGadget . ng_GadgetID        = Counter;
  51.  
  52.         GadgetArray[Counter++] = Gadget = CreateGadget(SLIDER_KIND,Gadget,&NewGadget,
  53.             SZ_Adjust,        TRUE,
  54.             SZ_AutoWidth,        TRUE,
  55.  
  56.             GTSL_Min,        -128,
  57.             GTSL_Max,        127,
  58.             GTSL_Level,        Config -> MiscConfig -> Priority,
  59.             GTSL_MaxLevelLen,    4,
  60.             GTSL_LevelFormat,    "%4ld",
  61.             PGA_Freedom,        LORIENT_HORIZ,
  62.             GA_Immediate,        TRUE,
  63.             GA_RelVerify,        TRUE,
  64.         TAG_DONE);
  65.  
  66.         NewGadget . ng_GadgetText    = LocaleString(MSG_MISCPANEL_BACKUP_CONFIGURATION_GAD);
  67.         NewGadget . ng_GadgetID        = Counter;
  68.  
  69.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  70.             SZ_Adjust,    TRUE,
  71.             SZ_AutoWidth,    TRUE,
  72.             SZ_AlignExtra,    TRUE,
  73.  
  74.             GTCB_Checked,    Config -> MiscConfig -> BackupConfig,
  75.         TAG_DONE);
  76.  
  77.         NewGadget . ng_GadgetText    = LocaleString(MSG_MISCPANEL_SHOW_FAST_MACROS_GAD);
  78.         NewGadget . ng_GadgetID        = Counter;
  79.  
  80.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  81.             SZ_Adjust,    TRUE,
  82.             SZ_AutoWidth,    TRUE,
  83.             SZ_AlignExtra,    TRUE,
  84.  
  85.             GTCB_Checked,    Config -> MiscConfig -> OpenFastMacroPanel,
  86.         TAG_DONE);
  87.  
  88.         NewGadget . ng_GadgetText    = LocaleString(MSG_MISCPANEL_RELEASE_SERIAL_DEVICE_GAD);
  89.         NewGadget . ng_GadgetID        = Counter;
  90.  
  91.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  92.             SZ_Adjust,    TRUE,
  93.             SZ_AutoWidth,    TRUE,
  94.             SZ_AlignExtra,    TRUE,
  95.  
  96.             GTCB_Checked,    Config -> MiscConfig -> ReleaseDevice,
  97.         TAG_DONE);
  98.  
  99.         NewGadget . ng_GadgetText    = LocaleString(MSG_MISCPANEL_OVERRIDE_TRANSFER_PATH_GAD);
  100.         NewGadget . ng_GadgetID        = Counter;
  101.  
  102.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  103.             SZ_Adjust,    TRUE,
  104.             SZ_AutoWidth,    TRUE,
  105.             SZ_AlignExtra,    TRUE,
  106.  
  107.             GTCB_Checked,    Config -> MiscConfig -> OverridePath,
  108.         TAG_DONE);
  109.  
  110.         NewGadget . ng_GadgetText    = LocaleString(MSG_MISCPANEL_USE_AUTO_UPLOAD_PANEL_GAD);
  111.         NewGadget . ng_GadgetID        = Counter;
  112.  
  113.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  114.             SZ_Adjust,    TRUE,
  115.             SZ_AutoWidth,    TRUE,
  116.  
  117.             GTCB_Checked,    Config -> MiscConfig -> AutoUpload,
  118.         TAG_DONE);
  119.  
  120.         NewGadget . ng_GadgetText    = LocaleString(MSG_MISCPANEL_SET_ARCHIVED_BIT_GAD);
  121.         NewGadget . ng_GadgetID        = Counter;
  122.  
  123.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  124.             SZ_Adjust,    TRUE,
  125.             SZ_AutoWidth,    TRUE,
  126.  
  127.             GTCB_Checked,    Config -> MiscConfig -> SetArchivedBit,
  128.         TAG_DONE);
  129.  
  130.         NewGadget . ng_GadgetText    = LocaleString(MSG_MISCPANEL_TRANSFER_ICONS_GAD);
  131.         NewGadget . ng_GadgetID        = Counter;
  132.  
  133.         GadgetArray[Counter++] = Gadget = CreateGadget(CHECKBOX_KIND,Gadget,&NewGadget,
  134.             SZ_Adjust,    TRUE,
  135.             SZ_AutoWidth,    TRUE,
  136.  
  137.             GTCB_Checked,    Config -> MiscConfig -> TransferIcons,
  138.         TAG_DONE);
  139.  
  140.         NewGadget . ng_GadgetText    = LocaleString(MSG_MISCPANEL_IDENTIFY_FILES_GAD);
  141.         NewGadget . ng_GadgetID        = Counter;
  142.  
  143.         GadgetArray[Counter++] = Gadget = CreateGadget(CYCLE_KIND,Gadget,&NewGadget,
  144.             SZ_Adjust,    TRUE,
  145.             SZ_AutoWidth,    TRUE,
  146.  
  147.             GTCY_Labels,    IdentifyType,
  148.             GTCY_Active,    Config -> MiscConfig -> IdentifyFiles,
  149.         TAG_DONE);
  150.  
  151.         SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(MSG_GLOBAL_USE_GAD),0,NULL);
  152.         SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(MSG_GLOBAL_CANCEL_GAD),0,NULL);
  153.         SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(MSG_GLOBAL_DEFAULT_GAD),0,NULL);
  154.  
  155.         SZ_SetWidth(SZ_ResetMaxWidth());
  156.  
  157.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_USE_GAD);
  158.         NewGadget . ng_GadgetID        = Counter;
  159.         NewGadget . ng_Flags        = 0;
  160.  
  161.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  162.             SZ_Adjust,    TRUE,
  163.             SZ_AutoWidth,    TRUE,
  164.             SZ_AlignExtra,    TRUE,
  165.             SZ_AlignLeft,    TRUE,
  166.             SZ_AlignBottom,    TRUE,
  167.         TAG_DONE);
  168.  
  169.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_CANCEL_GAD);
  170.         NewGadget . ng_GadgetID        = Counter;
  171.  
  172.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  173.             SZ_Adjust,    TRUE,
  174.             SZ_AutoWidth,    TRUE,
  175.             SZ_AlignRight,    TRUE,
  176.         TAG_DONE);
  177.  
  178.         if(Default)
  179.         {
  180.             NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_DEFAULT_GAD);
  181.             NewGadget . ng_GadgetID        = Counter;
  182.  
  183.             GadgetArray[Counter] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  184.                 SZ_Adjust,    TRUE,
  185.                 SZ_AutoWidth,    TRUE,
  186.                 SZ_AlignCentre,    TRUE,
  187.             TAG_DONE);
  188.         }
  189.     }
  190.  
  191.     return(Gadget);
  192. }
  193.  
  194. BYTE
  195. MiscPanel(struct Configuration *Config,BYTE *Default)
  196. {
  197.     struct Window    *PanelWindow;
  198.     struct Gadget    *GadgetList = NULL;
  199.     struct Gadget    *GadgetArray[GAD_DEFAULT + 1];
  200.  
  201.     SaveConfig(Config,PrivateConfig);
  202.  
  203.     if(CreateAllGadgets(Config,GadgetArray,&GadgetList,Default))
  204.     {
  205.         if(PanelWindow = OpenWindowTags(NULL,
  206.             WA_Left,    GetScreenLeft(Window) + (GetScreenWidth(Window) - SZ_GetWindowWidth()) / 2,
  207.             WA_Top,        GetScreenTop(Window) + (GetScreenHeight(Window) - SZ_GetWindowHeight())    / 2,
  208.             WA_Width,    SZ_GetWindowWidth(),
  209.             WA_Height,    SZ_GetWindowHeight(),
  210.  
  211.             WA_Activate,    TRUE,
  212.             WA_DragBar,    TRUE,
  213.             WA_DepthGadget,    TRUE,
  214.             WA_RMBTrap,    TRUE,
  215.             WA_DepthGadget,    TRUE,
  216.             WA_CloseGadget,    TRUE,
  217.             WA_CustomScreen,Window -> WScreen,
  218.  
  219.             WA_IDCMP,    IDCMP_GADGETDOWN | IDCMP_ACTIVEWINDOW | IDCMP_RAWKEY | IDCMP_VANILLAKEY | IDCMP_CLOSEWINDOW | BUTTONIDCMP | CHECKBOXIDCMP | SLIDERIDCMP | INTEGERIDCMP,
  220.  
  221.             WA_Title,    LocaleString(MSG_MISCPANEL_MISCELLANEOUS_PREFERENCES_TXT),
  222.         TAG_DONE))
  223.         {
  224.             struct IntuiMessage    *Massage;
  225.             ULONG             IClass,Code;
  226.             struct Gadget        *Gadget;
  227.             BYTE             Terminated = FALSE;
  228.  
  229.             GuideContext(CONTEXT_MISC);
  230.  
  231.             PushWindow(PanelWindow);
  232.  
  233.             AddGList(PanelWindow,GadgetList,(UWORD)-1,(UWORD)-1,NULL);
  234.             RefreshGList(GadgetList,PanelWindow,NULL,(UWORD)-1);
  235.             GT_RefreshWindow(PanelWindow,NULL);
  236.  
  237.             ActiveGadget = NULL;
  238.  
  239.             SetSignal(0,SIG_BREAK);
  240.  
  241.             while(!Terminated)
  242.             {
  243.                 if(Wait(PORTMASK(PanelWindow -> UserPort) | SIG_BREAK) & SIG_BREAK)
  244.                 {
  245.                     SaveConfig(PrivateConfig,Config);
  246.  
  247.                     break;
  248.                 }
  249.  
  250.                 while(!Terminated && (Massage = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort)))
  251.                 {
  252.                     IClass    = Massage -> Class;
  253.                     Code    = Massage -> Code;
  254.                     Gadget    = (struct Gadget *)Massage -> IAddress;
  255.  
  256.                     GT_ReplyIMsg(Massage);
  257.  
  258.                     KeySelect(GadgetArray,GAD_CANCEL,Code,PanelWindow,&Gadget,&IClass,&Code);
  259.  
  260.                     if(IClass == IDCMP_GADGETDOWN)
  261.                     {
  262.                         if((Gadget -> GadgetType & GTYP_GTYPEMASK) == GTYP_STRGADGET)
  263.                             ActiveGadget = Gadget;
  264.                     }
  265.  
  266.                     if(IClass == IDCMP_ACTIVEWINDOW && ActiveGadget)
  267.                         ActivateGadget(ActiveGadget,PanelWindow,NULL);
  268.  
  269.                     if(IClass == IDCMP_CLOSEWINDOW)
  270.                     {
  271.                         SaveConfig(PrivateConfig,Config);
  272.  
  273.                         Terminated = TRUE;
  274.                     }
  275.  
  276.                     if(IClass == IDCMP_MOUSEMOVE)
  277.                     {
  278.                         switch(Gadget -> GadgetID)
  279.                         {
  280.                             case GAD_PRIORITY:
  281.  
  282.                                 Config -> MiscConfig -> Priority = (BYTE)Code;
  283.                                 break;
  284.                         }
  285.                     }
  286.  
  287.                     if(IClass == IDCMP_GADGETUP)
  288.                     {
  289.                         switch(Gadget -> GadgetID)
  290.                         {
  291.                             case GAD_PRIORITY:
  292.  
  293.                                 Config -> MiscConfig -> Priority = (BYTE)Code;
  294.                                 break;
  295.  
  296.                             case GAD_IDENTIFY:
  297.  
  298.                                 Config -> MiscConfig -> IdentifyFiles = Code;
  299.                                 break;
  300.  
  301.                             case GAD_USE:
  302.  
  303.                                 Terminated = TRUE;
  304.  
  305.                                 Config -> MiscConfig -> BackupConfig        = SZ_GetChecked(GadgetArray[GAD_BACKUP]);
  306.                                 Config -> MiscConfig -> OpenFastMacroPanel    = SZ_GetChecked(GadgetArray[GAD_SHOWFASTMACROS]);
  307.                                 Config -> MiscConfig -> ReleaseDevice        = SZ_GetChecked(GadgetArray[GAD_RELEASE]);
  308.                                 Config -> MiscConfig -> OverridePath        = SZ_GetChecked(GadgetArray[GAD_OVERRIDE]);
  309.  
  310.                                 Config -> MiscConfig -> AutoUpload        = SZ_GetChecked(GadgetArray[GAD_AUTOUPLOAD]);
  311.                                 Config -> MiscConfig -> SetArchivedBit        = SZ_GetChecked(GadgetArray[GAD_SETBIT]);
  312.                                 Config -> MiscConfig -> TransferIcons        = SZ_GetChecked(GadgetArray[GAD_TRANSFER_ICONS]);
  313.  
  314.                                 break;
  315.  
  316.                             case GAD_CANCEL:
  317.  
  318.                                 Terminated = TRUE;
  319.  
  320.                                 SaveConfig(PrivateConfig,Config);
  321.  
  322.                                 break;
  323.  
  324.                             case GAD_DEFAULT:
  325.  
  326.                                 *Default    = TRUE;
  327.  
  328.                                 Terminated    = TRUE;
  329.  
  330.                                 break;
  331.                         }
  332.                     }
  333.                 }
  334.             }
  335.  
  336.             RemoveGList(PanelWindow,GadgetList,(UWORD)-1);
  337.  
  338.             PopWindow();
  339.  
  340.             CloseWindow(PanelWindow);
  341.         }
  342.     }
  343.  
  344.     FreeGadgets(GadgetList);
  345.  
  346.     return((BYTE)memcmp(PrivateConfig -> MiscConfig,Config -> MiscConfig,sizeof(struct MiscSettings)));
  347. }
  348.