home *** CD-ROM | disk | FTP | other *** search
/ BCI NET / BCI NET Dec 94.iso / archives / telecomm / terms / term-4.1-source.lha / Extras / Source / term-Source.lha / MiscPanel.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-08-14  |  6.8 KB  |  326 lines

  1. /*
  2. **    MiscPanel.c
  3. **
  4. **    Editing panel for miscellaneous parts of the configuration
  5. **
  6. **    Copyright © 1990-1994 by Olaf `Olsen' Barthel
  7. **        All Rights Reserved
  8. */
  9.  
  10. #include "termGlobal.h"
  11.  
  12. enum    {    GAD_USE=1000,GAD_CANCEL,GAD_DEFAULT };
  13.  
  14. STATIC LONG __saveds
  15. ShowSize(struct Gadget *SomeGadget,WORD Level)
  16. {
  17.     return(1L << Level);
  18. }
  19.  
  20. BYTE __regargs
  21. MiscPanel(struct Configuration *Config,BYTE *Default)
  22. {
  23.     struct LayoutHandle    *Handle;
  24.     BYTE             Cancel = FALSE;
  25.  
  26.     SaveConfig(Config,PrivateConfig);
  27.  
  28.     if(Handle = LT_CreateHandleTags(Window -> WScreen,
  29.         LH_LocaleHook,    &LocaleHook,
  30.     TAG_DONE))
  31.     {
  32.         struct Window    *PanelWindow;
  33.         WORD         i,BufferSize;
  34.  
  35.         for(i = 0 ; i < 32 ; i++)
  36.         {
  37.             if((1L << i) == Config -> MiscConfig -> IOBufferSize)
  38.             {
  39.                 BufferSize = i;
  40.  
  41.                 break;
  42.             }
  43.         }
  44.  
  45.         LT_New(Handle,
  46.             LA_Type,    VERTICAL_KIND,
  47.         TAG_DONE);
  48.         {
  49.             LT_New(Handle,
  50.                 LA_Type,    VERTICAL_KIND,
  51.                 LA_LabelID,    MSG_V36_0107,
  52.             TAG_DONE);
  53.             {
  54.                 LT_New(Handle,
  55.                     LA_Type,    HORIZONTAL_KIND,
  56.                 TAG_DONE);
  57.                 {
  58.                     LT_New(Handle,
  59.                         LA_Type,    VERTICAL_KIND,
  60.                     TAG_DONE);
  61.                     {
  62.                         LT_New(Handle,
  63.                             LA_Type,    CHECKBOX_KIND,
  64.                             LA_LabelID,    MSG_MISCPANEL_BACKUP_CONFIGURATION_GAD,
  65.                             LA_BYTE,    &Config -> MiscConfig -> BackupConfig,
  66.                         TAG_DONE);
  67.     
  68.                         LT_New(Handle,
  69.                             LA_Type,    CHECKBOX_KIND,
  70.                             LA_LabelID,    MSG_MISCPANEL_SHOW_FAST_MACROS_GAD,
  71.                             LA_BYTE,    &Config -> MiscConfig -> OpenFastMacroPanel,
  72.                         TAG_DONE);
  73.     
  74.                         LT_New(Handle,
  75.                             LA_Type,    CHECKBOX_KIND,
  76.                             LA_LabelID,    MSG_MISCPANEL_RELEASE_SERIAL_DEVICE_GAD,
  77.                             LA_BYTE,    &Config -> MiscConfig -> ReleaseDevice,
  78.                         TAG_DONE);
  79.     
  80.                         LT_New(Handle,
  81.                             LA_Type,    CHECKBOX_KIND,
  82.                             LA_LabelID,    MSG_MISCPANEL_OVERRIDE_TRANSFER_PATH_GAD,
  83.                             LA_BYTE,    &Config -> MiscConfig -> OverridePath,
  84.                         TAG_DONE);
  85.     
  86.                         LT_New(Handle,
  87.                             LA_Type,    CHECKBOX_KIND,
  88.                             LA_LabelID,    MSG_MISCPANEL_USE_AUTO_UPLOAD_PANEL_GAD,
  89.                             LA_BYTE,    &Config -> MiscConfig -> AutoUpload,
  90.                         TAG_DONE);
  91.     
  92.                         LT_EndGroup(Handle);
  93.                     }
  94.     
  95.                     LT_New(Handle,
  96.                         LA_Type,    VERTICAL_KIND,
  97.                     TAG_DONE);
  98.                     {
  99.                         LT_New(Handle,
  100.                             LA_Type,    CHECKBOX_KIND,
  101.                             LA_LabelID,    MSG_MISCPANEL_SET_ARCHIVED_BIT_GAD,
  102.                             LA_BYTE,    &Config -> MiscConfig -> SetArchivedBit,
  103.                         TAG_DONE);
  104.     
  105.                         LT_New(Handle,
  106.                             LA_Type,    CHECKBOX_KIND,
  107.                             LA_LabelID,    MSG_MISCPANEL_TRANSFER_ICONS_GAD,
  108.                             LA_BYTE,    &Config -> MiscConfig -> TransferIcons,
  109.                         TAG_DONE);
  110.     
  111.                         LT_New(Handle,
  112.                             LA_Type,    CHECKBOX_KIND,
  113.                             LA_LabelID,    MSG_MISCPANEL_TRANSFER_METER_GAD,
  114.                             LA_BYTE,    &Config -> MiscConfig -> PerfMeter,
  115.                         TAG_DONE);
  116.     
  117.                         LT_New(Handle,
  118.                             LA_Type,    CHECKBOX_KIND,
  119.                             LA_LabelID,    MSG_MISCPANEL_CREATE_ICONS_GAD,
  120.                             LA_BYTE,    &Config -> MiscConfig -> CreateIcons,
  121.                         TAG_DONE);
  122.     
  123.                         LT_New(Handle,
  124.                             LA_Type,    CHECKBOX_KIND,
  125.                             LA_LabelID,    MSG_MISCPANEL_SIMPLE_IO_GAD,
  126.                             LA_BYTE,    &Config -> MiscConfig -> SimpleIO,
  127.                         TAG_DONE);
  128.     
  129.                         LT_EndGroup(Handle);
  130.                     }
  131.  
  132.                     LT_EndGroup(Handle);
  133.                 }
  134.  
  135.                 LT_New(Handle,
  136.                     LA_Type,    VERTICAL_KIND,
  137.                 TAG_DONE);
  138.                 {
  139.                     LT_New(Handle,
  140.                         LA_Type,    CHECKBOX_KIND,
  141.                         LA_LabelID,    MSG_MISCPANEL_HIDE_UPLOAD_ICON_GAD,
  142.                         LA_BYTE,    &Config -> MiscConfig -> HideUploadIcon,
  143.                     TAG_DONE);
  144.  
  145.                     LT_EndGroup(Handle);
  146.                 }
  147.  
  148.                 LT_EndGroup(Handle);
  149.             }
  150.  
  151.             LT_New(Handle,
  152.                 LA_Type,    VERTICAL_KIND,
  153.                 LA_LabelID,    MSG_V36_0108,
  154.             TAG_DONE);
  155.             {
  156.                 LT_New(Handle,
  157.                     LA_Type,        SLIDER_KIND,
  158.                     LA_LabelID,        MSG_MISCPANEL_PROGRAM_PRIORITY_GAD,
  159.                     GTSL_Min,        -128,
  160.                     GTSL_Max,         127,
  161.                     GTSL_LevelFormat,    "%4ld",
  162.                     LA_BYTE,        &Config -> MiscConfig -> Priority,
  163.                 TAG_DONE);
  164.  
  165.                 LT_New(Handle,
  166.                     LA_Type,        CYCLE_KIND,
  167.                     LA_LabelID,        MSG_MISCPANEL_IDENTIFY_FILES_GAD,
  168.                     LACY_FirstLabel,    MSG_MISCPANEL_IDENTIFY_IGNORE_TXT,
  169.                     LACY_LastLabel,        MSG_MISCPANEL_IDENTIFY_SOURCE_TXT,
  170.                     LA_BYTE,        &Config -> MiscConfig -> IdentifyFiles,
  171.                 TAG_DONE);
  172.  
  173.                 LT_New(Handle,
  174.                     LA_Type,        SLIDER_KIND,
  175.                     LA_LabelID,        MSG_V36_1810,
  176.                     LA_WORD,        &BufferSize,
  177.                     GTSL_Min,        12,
  178.                     GTSL_Max,        20,
  179.                     GTSL_DispFunc,        ShowSize,
  180.                     GTSL_LevelFormat,    LocaleBase ? "%7lD" : "%7ld",
  181.                 TAG_DONE);
  182.  
  183.                 LT_EndGroup(Handle);
  184.             }
  185.  
  186.             LT_New(Handle,
  187.                 LA_Type,VERTICAL_KIND,
  188.             TAG_DONE);
  189.             {
  190.                 LT_New(Handle,
  191.                     LA_Type,    XBAR_KIND,
  192.                     LAXB_FullSize,    TRUE,
  193.                 TAG_DONE);
  194.  
  195.                 LT_EndGroup(Handle);
  196.             }
  197.  
  198.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  199.                 LAGR_SameSize,    TRUE,
  200.                 LAGR_Spread,    TRUE,
  201.             TAG_DONE);
  202.             {
  203.                 LT_New(Handle,
  204.                     LA_Type,    BUTTON_KIND,
  205.                     LA_LabelID,    MSG_GLOBAL_USE_GAD,
  206.                     LA_ID,        GAD_USE,
  207.                     LABT_ReturnKey,    TRUE,
  208.                     LABT_ExtraFat,    TRUE,
  209.                 TAG_DONE);
  210.  
  211.                 if(Default)
  212.                 {
  213.                     LT_New(Handle,
  214.                         LA_Type,    BUTTON_KIND,
  215.                         LA_LabelID,    MSG_GLOBAL_DEFAULT_GAD,
  216.                         LA_ID,        GAD_DEFAULT,
  217.                         LABT_ExtraFat,    TRUE,
  218.                     TAG_DONE);
  219.                 }
  220.  
  221.                 LT_New(Handle,
  222.                     LA_Type,    BUTTON_KIND,
  223.                     LA_LabelID,    MSG_GLOBAL_CANCEL_GAD,
  224.                     LA_ID,        GAD_CANCEL,
  225.                     LABT_EscKey,    TRUE,
  226.                     LABT_ExtraFat,    TRUE,
  227.                 TAG_DONE);
  228.  
  229.                 LT_EndGroup(Handle);
  230.             }
  231.  
  232.             LT_EndGroup(Handle);
  233.         }
  234.  
  235.         if(PanelWindow = LT_Layout(Handle,LocaleString(MSG_MISCPANEL_MISCELLANEOUS_PREFERENCES_TXT),NULL,0,0,IDCMP_CLOSEWINDOW,0,
  236.             LAWN_HelpHook,        &GuideHook,
  237.             LAWN_Parent,        Window,
  238.             WA_DepthGadget,        TRUE,
  239.             WA_CloseGadget,        TRUE,
  240.             WA_DragBar,        TRUE,
  241.             WA_RMBTrap,        TRUE,
  242.             WA_Activate,        TRUE,
  243.         TAG_DONE))
  244.         {
  245.             struct IntuiMessage    *Message;
  246.             BOOLEAN             Done = FALSE;
  247.             ULONG             MsgClass,
  248.                          MsgQualifier;
  249.             UWORD             MsgCode;
  250.             struct Gadget        *MsgGadget;
  251.  
  252.             GuideContext(CONTEXT_MISC);
  253.  
  254.             PushWindow(PanelWindow);
  255.  
  256.             LT_ShowWindow(Handle,TRUE);
  257.  
  258.             do
  259.             {
  260.                 if(Wait(PORTMASK(PanelWindow -> UserPort) | SIG_BREAK) & SIG_BREAK)
  261.                 {
  262.                     SaveConfig(PrivateConfig,Config);
  263.  
  264.                     break;
  265.                 }
  266.  
  267.                 while(Message = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort))
  268.                 {
  269.                     MsgClass    = Message -> Class;
  270.                     MsgQualifier    = Message -> Qualifier;
  271.                     MsgCode        = Message -> Code;
  272.                     MsgGadget    = (struct Gadget *)Message -> IAddress;
  273.  
  274.                     GT_ReplyIMsg(Message);
  275.  
  276.                     LT_HandleInput(Handle,MsgQualifier,&MsgClass,&MsgCode,&MsgGadget);
  277.  
  278.                     if(MsgClass == IDCMP_CLOSEWINDOW)
  279.                     {
  280.                         SaveConfig(PrivateConfig,Config);
  281.  
  282.                         Done = TRUE;
  283.                     }
  284.  
  285.                     if(MsgClass == IDCMP_GADGETUP)
  286.                     {
  287.                         switch(MsgGadget -> GadgetID)
  288.                         {
  289.                             case GAD_USE:
  290.  
  291.                                 Config -> MiscConfig -> IOBufferSize = 1L << BufferSize;
  292.  
  293.                                 Done = TRUE;
  294.                                 break;
  295.  
  296.                             case GAD_CANCEL:
  297.  
  298.                                 SaveConfig(PrivateConfig,Config);
  299.  
  300.                                 Cancel = Done = TRUE;
  301.                                 break;
  302.  
  303.                             case GAD_DEFAULT:
  304.  
  305.                                 *Default = TRUE;
  306.  
  307.                                 Done = TRUE;
  308.                                 break;
  309.                         }
  310.                     }
  311.                 }
  312.             }
  313.             while(!Done);
  314.  
  315.             PopWindow();
  316.         }
  317.  
  318.         LT_DeleteHandle(Handle);
  319.     }
  320.  
  321.     if(Default)
  322.         return((BYTE)(!Cancel));
  323.     else
  324.         return((BYTE)memcmp(PrivateConfig -> MiscConfig,Config -> MiscConfig,sizeof(struct MiscSettings)));
  325. }
  326.