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

  1. /*
  2. **    ClipPanel.c
  3. **
  4. **    Editing panel for clipboard 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_UNIT=1000,GAD_USE,GAD_CANCEL,
  15.         GAD_PAGER,GAD_PAGEGROUP
  16.     };
  17.  
  18. BOOL
  19. ClipPanel(struct Window *Parent,struct Configuration *LocalConfig)
  20. {
  21.     STATIC LONG PageTitleID[3] =
  22.     {
  23.         MSG_V36_0019,
  24.         MSG_V36_0020,
  25.         -1
  26.     };
  27.  
  28.     STATIC BYTE         InitialPage = 0;
  29.  
  30.     struct LayoutHandle    *Handle;
  31.     BOOL             UseIt = FALSE;
  32.  
  33.     SaveConfig(LocalConfig,PrivateConfig);
  34.  
  35.     if(Handle = LT_CreateHandleTags(Parent -> WScreen,
  36.         LH_LocaleHook,    &LocaleHook,
  37.         LH_ExitFlush,    FALSE,
  38.     TAG_DONE))
  39.     {
  40.         struct Window *PanelWindow;
  41.  
  42.         LT_New(Handle,
  43.             LA_Type,    VERTICAL_KIND,
  44.         TAG_DONE);
  45.         {
  46.             LT_New(Handle,
  47.                 LA_Type,VERTICAL_KIND,
  48.             TAG_DONE);
  49.             {
  50.                 LT_New(Handle,
  51.                     LA_Type,    TAB_KIND,
  52.                     LA_ID,        GAD_PAGER,
  53.                     LA_LabelID,    MSG_XFER_PAGE_TXT,
  54.                     LACY_LabelTable,PageTitleID,
  55.                     LACY_AutoPageID,GAD_PAGEGROUP,
  56.                     LACY_TabKey,    TRUE,
  57.                     LA_BYTE,    &InitialPage,
  58.                     LATB_FullWidth,    TRUE,
  59.                 TAG_DONE);
  60.  
  61.                 LT_EndGroup(Handle);
  62.             }
  63.  
  64.             LT_New(Handle,
  65.                 LA_Type,    VERTICAL_KIND,
  66.                 LA_ID,        GAD_PAGEGROUP,
  67.                 LAGR_ActivePage,InitialPage,
  68.             TAG_DONE);
  69.             {
  70.                 LT_New(Handle,
  71.                     LA_Type,    VERTICAL_KIND,
  72.                 TAG_DONE);
  73.                 {
  74.                     LT_New(Handle,
  75.                         LA_Type,    VERTICAL_KIND,
  76.                     TAG_DONE);
  77.                     {
  78.                         LT_New(Handle,
  79.                             LA_Type,        INTEGER_KIND,
  80.                             LA_LabelID,        MSG_CLIPPANEL_UNIT_GAD,
  81.                             LA_WORD,        &PrivateConfig -> ClipConfig -> ClipboardUnit,
  82.                             LA_Chars,        20,
  83.                             LAIN_Min,        0,
  84.                             LAIN_Max,        255,
  85.                             LA_ID,            GAD_UNIT,
  86.                             LAIN_UseIncrementers,    TRUE,
  87.                             GTIN_MaxChars,        3,
  88.                         TAG_DONE);
  89.  
  90.                         LT_New(Handle,
  91.                             LA_Type,    XBAR_KIND,
  92.                         TAG_DONE);
  93.  
  94.                         LT_New(Handle,
  95.                             LA_Type,    STRING_KIND,
  96.                             LA_LabelID,    MSG_CLIPPANEL_PASTE_PREFIX_GAD,
  97.                             LA_STRPTR,    PrivateConfig -> ClipConfig -> InsertPrefix,
  98.                             GTST_MaxChars,    79,
  99.                         TAG_DONE);
  100.  
  101.                         LT_New(Handle,
  102.                             LA_Type,    STRING_KIND,
  103.                             LA_LabelID,    MSG_CLIPPANEL_PASTE_SUFFIX_GAD,
  104.                             LA_STRPTR,    PrivateConfig -> ClipConfig -> InsertSuffix,
  105.                             GTST_MaxChars,    79,
  106.                         TAG_DONE);
  107.  
  108.                         LT_New(Handle,
  109.                             LA_Type,    XBAR_KIND,
  110.                         TAG_DONE);
  111.  
  112.                         LT_EndGroup(Handle);
  113.                     }
  114.  
  115.                     LT_New(Handle,
  116.                         LA_Type,    VERTICAL_KIND,
  117.                     TAG_DONE);
  118.                     {
  119.                         LT_New(Handle,
  120.                             LA_Type,    CHECKBOX_KIND,
  121.                             LA_LabelID,    MSG_CONVERT_LF_TXT,
  122.                             LA_BYTE,    &PrivateConfig -> ClipConfig -> ConvertLF,
  123.                         TAG_DONE);
  124.  
  125.                         LT_EndGroup(Handle);
  126.                     }
  127.  
  128.                     LT_EndGroup(Handle);
  129.                 }
  130.  
  131.                 LT_New(Handle,
  132.                     LA_Type,    VERTICAL_KIND,
  133.                 TAG_DONE);
  134.                 {
  135.                     LT_New(Handle,
  136.                         LA_Type,    VERTICAL_KIND,
  137.                     TAG_DONE);
  138.                     {
  139.                         LT_New(Handle,
  140.                             LA_Type,    CYCLE_KIND,
  141.                             LA_LabelID,    MSG_CLIPPANEL_TEXT_PACING_GAD,
  142.                             LA_UBYTE,    &PrivateConfig -> ClipConfig -> PacingMode,
  143.                             LACY_FirstLabel,MSG_CLIPPANEL_DIRECT_TXT,
  144.                             LACY_LastLabel,    MSG_CLIPPANEL_KEYDELAY_TXT,
  145.                         TAG_DONE);
  146.  
  147.                         LT_EndGroup(Handle);
  148.                     }
  149.  
  150.                     LT_New(Handle,
  151.                         LA_Type,    VERTICAL_KIND,
  152.                         LA_LabelID,    MSG_V36_0021,
  153.                     TAG_DONE);
  154.                     {
  155.                         LT_New(Handle,
  156.                             LA_Type,        SliderType,
  157.                             LA_LabelID,        MSG_CLIPPANEL_CHAR_DELAY_GAD,
  158.                             GTSL_Min,        0,
  159.                             GTSL_Max,        10 * 100,
  160.                             LA_Chars,        10,
  161.                             LA_WORD,        &PrivateConfig -> ClipConfig -> CharDelay,
  162.                             GTSL_LevelFormat,    "%s s",
  163.                             GTSL_DispFunc,        StandardShowTime,
  164.                         TAG_DONE);
  165.  
  166.                         LT_New(Handle,
  167.                             LA_Type,        SliderType,
  168.                             LA_LabelID,        MSG_CLIPPANEL_LINE_DELAY_GAD,
  169.                             GTSL_Min,        0,
  170.                             GTSL_Max,        10 * 100,
  171.                             LA_Chars,        10,
  172.                             LA_WORD,        &PrivateConfig -> ClipConfig -> LineDelay,
  173.                             GTSL_LevelFormat,    "%s s",
  174.                             GTSL_DispFunc,        StandardShowTime,
  175.                         TAG_DONE);
  176.  
  177.                         LT_EndGroup(Handle);
  178.                     }
  179.  
  180.                     LT_New(Handle,
  181.                         LA_Type,    VERTICAL_KIND,
  182.                         LA_LabelID,    MSG_V36_0024,
  183.                     TAG_DONE);
  184.                     {
  185.                         LT_New(Handle,
  186.                             LA_Type,        STRING_KIND,
  187.                             LA_LabelID,        MSG_CLIPPANEL_LINE_PROMPT_GAD,
  188.                             LA_STRPTR,        PrivateConfig -> ClipConfig -> LinePrompt,
  189.                             LA_Chars,        10,
  190.                             GTST_MaxChars,        255,
  191.                         TAG_DONE);
  192.  
  193.                         LT_New(Handle,
  194.                             LA_Type,        SliderType,
  195.                             LA_LabelID,        MSG_CLIPPANEL_SEND_TIMEOUT_GAD,
  196.                             GTSL_Min,        0,
  197.                             GTSL_Max,        10 * 100,
  198.                             LA_WORD,        &PrivateConfig -> ClipConfig -> SendTimeout,
  199.                             GTSL_LevelFormat,    "%s s",
  200.                             GTSL_DispFunc,        StandardShowTime,
  201.                         TAG_DONE);
  202.  
  203.                         LT_EndGroup(Handle);
  204.                     }
  205.  
  206.                     LT_EndGroup(Handle);
  207.                 }
  208.  
  209.                 LT_EndGroup(Handle);
  210.             }
  211.  
  212.             LT_New(Handle,
  213.                 LA_Type,VERTICAL_KIND,
  214.             TAG_DONE);
  215.             {
  216.                 LT_New(Handle,
  217.                     LA_Type,    XBAR_KIND,
  218.                     LAXB_FullSize,    TRUE,
  219.                 TAG_DONE);
  220.  
  221.                 LT_EndGroup(Handle);
  222.             }
  223.  
  224.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  225.                 LAGR_SameSize,    TRUE,
  226.                 LAGR_Spread,    TRUE,
  227.             TAG_DONE);
  228.             {
  229.                 LT_New(Handle,
  230.                     LA_Type,    BUTTON_KIND,
  231.                     LA_LabelID,    MSG_GLOBAL_USE_GAD,
  232.                     LA_ID,        GAD_USE,
  233.                     LABT_ReturnKey,    TRUE,
  234.                     LABT_ExtraFat,    TRUE,
  235.                 TAG_DONE);
  236.  
  237.                 LT_New(Handle,
  238.                     LA_Type,    BUTTON_KIND,
  239.                     LA_LabelID,    MSG_GLOBAL_CANCEL_GAD,
  240.                     LA_ID,        GAD_CANCEL,
  241.                     LABT_EscKey,    TRUE,
  242.                     LABT_ExtraFat,    TRUE,
  243.                 TAG_DONE);
  244.  
  245.                 LT_EndGroup(Handle);
  246.             }
  247.  
  248.             LT_EndGroup(Handle);
  249.         }
  250.  
  251.         if(PanelWindow = LT_Build(Handle,
  252.             LAWN_TitleID,        MSG_CLIPPANEL_CLIP_SETTINGS_TXT,
  253.             LAWN_IDCMP,        IDCMP_CLOSEWINDOW,
  254.             LAWN_HelpHook,        &GuideHook,
  255.             LAWN_Parent,        Parent,
  256.             WA_DepthGadget,        TRUE,
  257.             WA_CloseGadget,        TRUE,
  258.             WA_DragBar,        TRUE,
  259.             WA_RMBTrap,        TRUE,
  260.             WA_Activate,        TRUE,
  261.             WA_SimpleRefresh,    TRUE,
  262.         TAG_DONE))
  263.         {
  264.             struct IntuiMessage    *Message;
  265.             BOOL             Done = FALSE;
  266.             ULONG             MsgClass;
  267.             struct Gadget        *MsgGadget;
  268.  
  269.             GuideContext(CONTEXT_CLIP);
  270.  
  271.             PushWindow(PanelWindow);
  272.  
  273.             LT_ShowWindow(Handle,TRUE);
  274.  
  275.             do
  276.             {
  277.                 if(Wait(PORTMASK(PanelWindow -> UserPort) | SIG_BREAK) & SIG_BREAK)
  278.                     break;
  279.  
  280.                 while(Message = (struct IntuiMessage *)LT_GetIMsg(Handle))
  281.                 {
  282.                     MsgClass    = Message -> Class;
  283.                     MsgGadget    = (struct Gadget *)Message -> IAddress;
  284.  
  285.                     LT_ReplyIMsg(Message);
  286.  
  287.                     if(MsgClass == IDCMP_CLOSEWINDOW)
  288.                         Done = TRUE;
  289.  
  290.                     if(MsgClass == IDCMP_GADGETUP)
  291.                     {
  292.                         switch(MsgGadget -> GadgetID)
  293.                         {
  294.                             case GAD_USE:
  295.  
  296.                                 LT_UpdateStrings(Handle);
  297.  
  298.                                 UseIt = Done = TRUE;
  299.                                 break;
  300.  
  301.                             case GAD_CANCEL:
  302.  
  303.                                 Done = TRUE;
  304.                                 break;
  305.                         }
  306.                     }
  307.                 }
  308.             }
  309.             while(!Done);
  310.  
  311.             PopWindow();
  312.         }
  313.  
  314.         LT_DeleteHandle(Handle);
  315.     }
  316.  
  317.     if(UseIt)
  318.         SwapConfig(LocalConfig,PrivateConfig);
  319.     else
  320.         SaveConfig(LocalConfig,PrivateConfig);
  321.  
  322.     return(UseIt);
  323. }
  324.