home *** CD-ROM | disk | FTP | other *** search
/ Network PC / Network PC.iso / amiga utilities / communication / bbs / termv4.6 / extras / source / term-source.lha / MiscPanel.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-03-18  |  9.5 KB  |  409 lines

  1. /*
  2. **    MiscPanel.c
  3. **
  4. **    Editing panel for miscellaneous parts of the configuration
  5. **
  6. **    Copyright © 1990-1996 by Olaf `Olsen' Barthel
  7. **        All Rights Reserved
  8. */
  9.  
  10. #ifndef _GLOBAL_H
  11. #include "Global.h"
  12. #endif
  13.  
  14. enum    {    GAD_USE=1000,GAD_CANCEL,
  15.         GAD_PAGER,GAD_PAGEGROUP,
  16.         GAD_REQUESTERMODE,GAD_SET_REQUESTERSIZE,
  17.         GAD_WAITSTRING
  18.     };
  19.  
  20. STATIC UBYTE * __saveds __stdargs
  21. MiscShowSeconds(struct Gadget *SomeGadget,LONG Level)
  22. {
  23.     STATIC UBYTE Buffer[15];
  24.  
  25.     SPrintf(Buffer,LocaleString(MSG_GLOBAL_SHOW_MINUTES_TXT),Level / 60,Level % 60);
  26.  
  27.     return(Buffer);
  28. }
  29.  
  30. STATIC LONG __saveds __stdargs
  31. ShowSize(struct Gadget *SomeGadget,LONG Level)
  32. {
  33.     return(1L << Level);
  34. }
  35.  
  36. BOOL
  37. MiscPanel(struct Window *Parent,struct Configuration *LocalConfig)
  38. {
  39.     STATIC LONG PageTitleID[] =
  40.     {
  41.         MSG_V36_0107,
  42.         MSG_V36_0108,
  43.         MSG_USER_INTERFACE_TXT,
  44.         -1
  45.     };
  46.  
  47.     STATIC BYTE InitialPage = 0;
  48.  
  49.     struct LayoutHandle    *Handle;
  50.     BOOL             UseIt = FALSE;
  51.  
  52.     SaveConfig(LocalConfig,PrivateConfig);
  53.  
  54.     if(Handle = LT_CreateHandleTags(Parent -> WScreen,
  55.         LH_LocaleHook,    &LocaleHook,
  56.         LH_ExitFlush,    FALSE,
  57.     TAG_DONE))
  58.     {
  59.         struct Window    *PanelWindow;
  60.         LONG         i,BufferSize;
  61.  
  62.         for(i = 0 ; i < 32 ; i++)
  63.         {
  64.             if((1L << i) == PrivateConfig -> MiscConfig -> IOBufferSize)
  65.             {
  66.                 BufferSize = i;
  67.  
  68.                 break;
  69.             }
  70.         }
  71.  
  72.         LT_New(Handle,
  73.             LA_Type,VERTICAL_KIND,
  74.         TAG_DONE);
  75.         {
  76.             LT_New(Handle,
  77.                 LA_Type,VERTICAL_KIND,
  78.             TAG_DONE);
  79.             {
  80.                 LT_New(Handle,
  81.                     LA_Type,    TAB_KIND,
  82.                     LA_ID,        GAD_PAGER,
  83.                     LA_LabelID,    MSG_XFER_PAGE_TXT,
  84.                     LACY_LabelTable,PageTitleID,
  85.                     LACY_AutoPageID,GAD_PAGEGROUP,
  86.                     LACY_TabKey,    TRUE,
  87.                     LA_BYTE,    &InitialPage,
  88.                     LATB_FullWidth,    TRUE,
  89.                 TAG_DONE);
  90.  
  91.                 LT_EndGroup(Handle);
  92.             }
  93.  
  94.             LT_New(Handle,
  95.                 LA_Type,    VERTICAL_KIND,
  96.                 LA_ID,        GAD_PAGEGROUP,
  97.                 LAGR_ActivePage,InitialPage,
  98.             TAG_DONE);
  99.             {
  100.                 LT_New(Handle,
  101.                     LA_Type,    VERTICAL_KIND,
  102.                 TAG_DONE);
  103.                 {
  104.                     LT_New(Handle,
  105.                         LA_Type,    CHECKBOX_KIND,
  106.                         LA_LabelID,    MSG_MISCPANEL_BACKUP_CONFIGURATION_GAD,
  107.                         LA_BYTE,    &PrivateConfig -> MiscConfig -> BackupConfig,
  108.                     TAG_DONE);
  109.  
  110.                     LT_New(Handle,
  111.                         LA_Type,    CHECKBOX_KIND,
  112.                         LA_LabelID,    MSG_MISCPANEL_SHOW_FAST_MACROS_GAD,
  113.                         LA_BYTE,    &PrivateConfig -> MiscConfig -> OpenFastMacroPanel,
  114.                     TAG_DONE);
  115.  
  116.                     LT_New(Handle,
  117.                         LA_Type,    CHECKBOX_KIND,
  118.                         LA_LabelID,    MSG_MISCPANEL_RELEASE_SERIAL_DEVICE_GAD,
  119.                         LA_BYTE,    &PrivateConfig -> MiscConfig -> ReleaseDevice,
  120.                     TAG_DONE);
  121.  
  122.                     LT_New(Handle,
  123.                         LA_Type,    CHECKBOX_KIND,
  124.                         LA_LabelID,    MSG_MISCPANEL_SIMPLE_IO_GAD,
  125.                         LA_BYTE,    &PrivateConfig -> MiscConfig -> SimpleIO,
  126.                     TAG_DONE);
  127.  
  128.                     LT_New(Handle,
  129.                         LA_Type,    CHECKBOX_KIND,
  130.                         LA_LabelID,    MSG_OVERWRITE_WARNING_TXT,
  131.                         LA_BYTE,    &PrivateConfig -> MiscConfig -> ProtectiveMode,
  132.                     TAG_DONE);
  133.  
  134.                     LT_New(Handle,
  135.                         LA_Type,    CHECKBOX_KIND,
  136.                         LA_LabelID,    MSG_MISCPANEL_CREATE_ICONS_GAD,
  137.                         LA_BYTE,    &PrivateConfig -> MiscConfig -> CreateIcons,
  138.                     TAG_DONE);
  139.  
  140.                     LT_New(Handle,
  141.                         LA_Type,    XBAR_KIND,
  142.                     TAG_DONE);
  143.  
  144.                     LT_New(Handle,
  145.                         LA_Type,    STRING_KIND,
  146.                         LA_ID,        GAD_WAITSTRING,
  147.                         LA_LabelID,    MSG_WAIT_STRING,
  148.                         LA_STRPTR,    PrivateConfig -> MiscConfig -> WaitString,
  149.                         LA_Chars,    20,
  150.                         GTST_MaxChars,    sizeof(PrivateConfig -> MiscConfig -> WaitString) - 1,
  151.                     TAG_DONE);
  152.  
  153.                     if(PrivateConfig -> MiscConfig -> WaitDelay < 1)
  154.                         PrivateConfig -> MiscConfig -> WaitDelay = 1;
  155.  
  156.                     LT_New(Handle,
  157.                         LA_Type,        SliderType,
  158.                         LA_LabelID,        MSG_WAIT_DELAY_GAD,
  159.                         LA_LONG,        &PrivateConfig -> MiscConfig -> WaitDelay,
  160.                         GTSL_Min,        1,
  161.                         GTSL_Max,        60 * 60,
  162.                         GTSL_DispFunc,        MiscShowSeconds,
  163.                         GTSL_LevelFormat,    "%s",
  164.                     TAG_DONE);
  165.  
  166.                     LT_EndGroup(Handle);
  167.                 }
  168.  
  169.                 LT_New(Handle,
  170.                     LA_Type,    VERTICAL_KIND,
  171.                 TAG_DONE);
  172.                 {
  173.                     LT_New(Handle,
  174.                         LA_Type,        SliderType,
  175.                         LA_LabelID,        MSG_MISCPANEL_PROGRAM_PRIORITY_GAD,
  176.                         GTSL_Min,        -128,
  177.                         GTSL_Max,         127,
  178.                         GTSL_LevelFormat,    "%4ld",
  179.                         LA_BYTE,        &PrivateConfig -> MiscConfig -> Priority,
  180.                         LA_Chars,        12,
  181.                     TAG_DONE);
  182.  
  183.                     LT_New(Handle,
  184.                         LA_Type,        SliderType,
  185.                         LA_LabelID,        MSG_V36_1810,
  186.                         LA_LONG,        &BufferSize,
  187.                         GTSL_Min,        12,
  188.                         GTSL_Max,        20,
  189.                         GTSL_DispFunc,        ShowSize,
  190.                         GTSL_LevelFormat,    LocaleBase ? "%7lD" : "%7ld",
  191.                     TAG_DONE);
  192.  
  193.                     LT_EndGroup(Handle);
  194.                 }
  195.  
  196.                 LT_New(Handle,
  197.                     LA_Type,    VERTICAL_KIND,
  198.                 TAG_DONE);
  199.                 {
  200.                     LT_New(Handle,
  201.                         LA_Type,    CYCLE_KIND,
  202.                         LA_LabelID,    MSG_TERMINALPANEL_ALERT_GAD,
  203.                         LA_BYTE,    &PrivateConfig -> MiscConfig -> AlertMode,
  204.                         LACY_FirstLabel,MSG_TERMINALPANEL_ALERT_NONE_TXT,
  205.                         LACY_LastLabel,    MSG_TERMINALPANEL_ALERT_SIGNAL_SCREEN_TXT,
  206.                     TAG_DONE);
  207.  
  208.                     LT_New(Handle,
  209.                         LA_Type,    XBAR_KIND,
  210.                     TAG_DONE);
  211.  
  212.                     LT_New(Handle,
  213.                         LA_Type,    CYCLE_KIND,
  214.                         LA_LabelID,    MSG_REQUESTER_DIMENSIONS_TXT,
  215.                         LA_BYTE,    &PrivateConfig -> MiscConfig -> RequesterMode,
  216.                         LACY_FirstLabel,MSG_LABEL_CENTRE_TXT,
  217.                         LACY_LastLabel,    MSG_LABEL_IGNORE_TXT,
  218.                         LA_ID,        GAD_REQUESTERMODE,
  219.                     TAG_DONE);
  220.  
  221.                     LT_New(Handle,
  222.                         LA_Type,    BUTTON_KIND,
  223.                         LA_LabelID,    MSG_REQUESTER_EDIT_SIZE_TXT,
  224.                         LA_ID,        GAD_SET_REQUESTERSIZE,
  225.                         GA_Disabled,    PrivateConfig -> MiscConfig -> RequesterMode == REQUESTERMODE_IGNORE,
  226.                     TAG_DONE);
  227.  
  228.                     LT_EndGroup(Handle);
  229.                 }
  230.  
  231.                 LT_EndGroup(Handle);
  232.             }
  233.  
  234.             LT_New(Handle,
  235.                 LA_Type,VERTICAL_KIND,
  236.             TAG_DONE);
  237.             {
  238.                 LT_New(Handle,
  239.                     LA_Type,    XBAR_KIND,
  240.                     LAXB_FullSize,    TRUE,
  241.                 TAG_DONE);
  242.  
  243.                 LT_EndGroup(Handle);
  244.             }
  245.  
  246.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  247.                 LAGR_SameSize,    TRUE,
  248.                 LAGR_Spread,    TRUE,
  249.             TAG_DONE);
  250.             {
  251.                 LT_New(Handle,
  252.                     LA_Type,    BUTTON_KIND,
  253.                     LA_LabelID,    MSG_GLOBAL_USE_GAD,
  254.                     LA_ID,        GAD_USE,
  255.                     LABT_ReturnKey,    TRUE,
  256.                     LABT_ExtraFat,    TRUE,
  257.                 TAG_DONE);
  258.  
  259.                 LT_New(Handle,
  260.                     LA_Type,    BUTTON_KIND,
  261.                     LA_LabelID,    MSG_GLOBAL_CANCEL_GAD,
  262.                     LA_ID,        GAD_CANCEL,
  263.                     LABT_EscKey,    TRUE,
  264.                     LABT_ExtraFat,    TRUE,
  265.                 TAG_DONE);
  266.  
  267.                 LT_EndGroup(Handle);
  268.             }
  269.  
  270.             LT_EndGroup(Handle);
  271.         }
  272.  
  273.         if(PanelWindow = LT_Build(Handle,
  274.             LAWN_TitleID,        MSG_MISCPANEL_MISCELLANEOUS_PREFERENCES_TXT,
  275.             LAWN_IDCMP,        IDCMP_CLOSEWINDOW,
  276.             LAWN_HelpHook,        &GuideHook,
  277.             LAWN_Parent,        Parent,
  278.             WA_DepthGadget,        TRUE,
  279.             WA_CloseGadget,        TRUE,
  280.             WA_DragBar,        TRUE,
  281.             WA_RMBTrap,        TRUE,
  282.             WA_Activate,        TRUE,
  283.             WA_SimpleRefresh,    TRUE,
  284.         TAG_DONE))
  285.         {
  286.             struct IntuiMessage    *Message;
  287.             ULONG             MsgClass;
  288.             struct Gadget        *MsgGadget;
  289.             struct FileRequester    *FileRequester = NULL;
  290.             BOOL             Done = FALSE;
  291.             BOOL             JustCreated;
  292.  
  293.             GuideContext(CONTEXT_MISC);
  294.  
  295.             PushWindow(PanelWindow);
  296.  
  297.             LT_ShowWindow(Handle,TRUE);
  298.  
  299.             do
  300.             {
  301.                 if(Wait(PORTMASK(PanelWindow -> UserPort) | SIG_BREAK) & SIG_BREAK)
  302.                     break;
  303.  
  304.                 while(Message = (struct IntuiMessage *)LT_GetIMsg(Handle))
  305.                 {
  306.                     MsgClass    = Message -> Class;
  307.                     MsgGadget    = (struct Gadget *)Message -> IAddress;
  308.  
  309.                     LT_ReplyIMsg(Message);
  310.  
  311.                     if(MsgClass == IDCMP_CLOSEWINDOW)
  312.                         Done = TRUE;
  313.  
  314.                     if(MsgClass == IDCMP_GADGETUP)
  315.                     {
  316.                         switch(MsgGadget -> GadgetID)
  317.                         {
  318.                             case GAD_REQUESTERMODE:
  319.  
  320.                                 LT_SetAttributes(Handle,GAD_SET_REQUESTERSIZE,
  321.                                     GA_Disabled,PrivateConfig -> MiscConfig -> RequesterMode == REQUESTERMODE_IGNORE,
  322.                                 TAG_DONE);
  323.  
  324.                                 break;
  325.  
  326.                             case GAD_SET_REQUESTERSIZE:
  327.  
  328.                                 LT_LockWindow(PanelWindow);
  329.  
  330.                                 if(!FileRequester)
  331.                                 {
  332.                                     if(FileRequester = (struct FileRequester *)AllocAslRequestTags(ASL_FileRequest,
  333.                                         ASLFR_Window,        PanelWindow,
  334.                                         ASLFR_TitleText,    LocaleString(MSG_MOVE_RESIZE_THIS_WINDOW_TXT),
  335.                                         ASLFR_PositiveText,    LocaleString(MSG_GLOBAL_USE_GAD),
  336.                                         ASLFR_Flags1,        FILF_NEWIDCMP,
  337.                                         ASLFR_PrivateIDCMP,    TRUE,
  338.                                     TAG_DONE))
  339.                                         JustCreated = TRUE;
  340.                                 }
  341.  
  342.                                 if(FileRequester)
  343.                                 {
  344.                                     BOOL Result;
  345.  
  346.                                     if(JustCreated && (!PrivateConfig -> MiscConfig -> RequesterWidth || !PrivateConfig -> MiscConfig -> RequesterHeight))
  347.                                         JustCreated = FALSE;
  348.  
  349.                                     Result = AslRequestTags(FileRequester,
  350.                                         ASLFR_InitialLeftEdge,                Window -> LeftEdge + PrivateConfig -> MiscConfig -> RequesterLeft,
  351.                                         ASLFR_InitialTopEdge,                Window -> TopEdge + PrivateConfig -> MiscConfig -> RequesterTop,
  352.                                         JustCreated ? ASLFR_InitialWidth : TAG_IGNORE,    PrivateConfig -> MiscConfig -> RequesterWidth,
  353.                                         JustCreated ? ASLFR_InitialHeight : TAG_IGNORE,    PrivateConfig -> MiscConfig -> RequesterHeight,
  354.                                     TAG_DONE);
  355.  
  356.                                     if(!Result && IoErr())
  357.                                         Result = AslRequest(FileRequester,NULL);
  358.  
  359.                                     if(Result)
  360.                                     {
  361.                                         PrivateConfig -> MiscConfig -> RequesterLeft    = FileRequester -> fr_LeftEdge - Window -> LeftEdge;
  362.                                         PrivateConfig -> MiscConfig -> RequesterTop    = FileRequester -> fr_TopEdge - Window -> TopEdge;
  363.                                         PrivateConfig -> MiscConfig -> RequesterWidth    = FileRequester -> fr_Width;
  364.                                         PrivateConfig -> MiscConfig -> RequesterHeight    = FileRequester -> fr_Height;
  365.                                     }
  366.  
  367.                                     JustCreated = FALSE;
  368.                                 }
  369.  
  370.                                 LT_UnlockWindow(PanelWindow);
  371.  
  372.                                 break;
  373.  
  374.                             case GAD_USE:
  375.  
  376.                                 LT_UpdateStrings(Handle);
  377.  
  378.                                 PrivateConfig -> MiscConfig -> IOBufferSize = 1L << BufferSize;
  379.  
  380.                                 UseIt = Done = TRUE;
  381.                                 break;
  382.  
  383.                             case GAD_CANCEL:
  384.  
  385.                                 Done = TRUE;
  386.                                 break;
  387.                         }
  388.                     }
  389.                 }
  390.             }
  391.             while(!Done);
  392.  
  393.             if(FileRequester)
  394.                 FreeAslRequest(FileRequester);
  395.  
  396.             PopWindow();
  397.         }
  398.  
  399.         LT_DeleteHandle(Handle);
  400.     }
  401.  
  402.     if(UseIt)
  403.         SwapConfig(LocalConfig,PrivateConfig);
  404.     else
  405.         SaveConfig(LocalConfig,PrivateConfig);
  406.  
  407.     return(UseIt);
  408. }
  409.