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

  1. /*
  2. **    EmulationPanel.c
  3. **
  4. **    Editing panel for emulation 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_SCROLL, GAD_JUMP_SCROLL,
  16.         GAD_EDITPENS, GAD_STDPENS,
  17.         GAD_PAGER, GAD_PAGEGROUP, GAD_BBS_ANSI_COMPLIANT,
  18.         GAD_TERMINALTYPE, GAD_CLS_RESETS_CURSOR, GAD_WRAP_CURSOR_MOVES,
  19.         GAD_WRAP_CHARACTERS, GAD_DESTRUCTIVE_BS,
  20.     };
  21.  
  22. STATIC BOOL
  23. EmulationPenPanel(struct Window *Parent,struct Configuration *Config,LONG Depth)
  24. {
  25.     struct LayoutHandle    *Handle;
  26.     UWORD             Pen[16];
  27.     UBYTE             Attribute[4];
  28.     UBYTE             Colours[16];
  29.     LONG             i;
  30.     BOOL             Result = FALSE;
  31.  
  32.     for(i = 0 ; i < (1L << Depth) ; i++)
  33.         Colours[i] = MappedPens[0][i];
  34.  
  35.     CopyMem(Config -> EmulationConfig -> Pens,Pen,sizeof(Pen));
  36.     CopyMem(Config -> EmulationConfig -> Attributes,Attribute,sizeof(Attribute));
  37.  
  38.     if(Handle = LT_CreateHandleTags(Parent -> WScreen,
  39.         LH_LocaleHook,    &LocaleHook,
  40.         LH_ExactClone,    TRUE,
  41.         LH_ExitFlush,    FALSE,
  42.     TAG_DONE))
  43.     {
  44.         struct Window *PanelWindow;
  45.  
  46.         LT_New(Handle,
  47.             LA_Type,    VERTICAL_KIND,
  48.         TAG_DONE);
  49.         {
  50.             LT_New(Handle,
  51.                 LA_Type,    HORIZONTAL_KIND,
  52.             TAG_DONE);
  53.             {
  54.                 LT_New(Handle,
  55.                     LA_Type,    VERTICAL_KIND,
  56.                     LA_LabelID,    MSG_PENPANEL_DRAWING_PENS_TXT,
  57.                 TAG_DONE);
  58.                 {
  59.                     LT_New(Handle,
  60.                         LA_Type,        PALETTE_KIND,
  61.                         LA_LabelText,        "_0",
  62.                         GTPA_Depth,        Depth,
  63.                         GTPA_ColorTable,    Colours,
  64.                         LAPA_SmallPalette,    TRUE,
  65.                         LA_UWORD,        &Pen[0],
  66.                     TAG_DONE);
  67.  
  68.                     LT_New(Handle,
  69.                         LA_Type,        PALETTE_KIND,
  70.                         LA_LabelText,        "_1",
  71.                         GTPA_Depth,        Depth,
  72.                         GTPA_ColorTable,    Colours,
  73.                         LAPA_SmallPalette,    TRUE,
  74.                         LA_UWORD,        &Pen[1],
  75.                     TAG_DONE);
  76.  
  77.                     if(Depth > 1)
  78.                     {
  79.                         LT_New(Handle,
  80.                             LA_Type,        PALETTE_KIND,
  81.                             LA_LabelText,        "_2",
  82.                             GTPA_Depth,        Depth,
  83.                             GTPA_ColorTable,    Colours,
  84.                             LAPA_SmallPalette,    TRUE,
  85.                             LA_UWORD,        &Pen[2],
  86.                         TAG_DONE);
  87.  
  88.                         LT_New(Handle,
  89.                             LA_Type,        PALETTE_KIND,
  90.                             LA_LabelText,        "_3",
  91.                             GTPA_Depth,        Depth,
  92.                             GTPA_ColorTable,    Colours,
  93.                             LAPA_SmallPalette,    TRUE,
  94.                             LA_UWORD,        &Pen[3],
  95.                         TAG_DONE);
  96.                     }
  97.  
  98.                     if(Depth > 2)
  99.                     {
  100.                         LT_New(Handle,
  101.                             LA_Type,        PALETTE_KIND,
  102.                             LA_LabelText,        "_4",
  103.                             GTPA_Depth,        Depth,
  104.                             GTPA_ColorTable,    Colours,
  105.                             LAPA_SmallPalette,    TRUE,
  106.                             LA_UWORD,        &Pen[4],
  107.                         TAG_DONE);
  108.  
  109.                         LT_New(Handle,
  110.                             LA_Type,        PALETTE_KIND,
  111.                             LA_LabelText,        "_5",
  112.                             GTPA_Depth,        Depth,
  113.                             GTPA_ColorTable,    Colours,
  114.                             LAPA_SmallPalette,    TRUE,
  115.                             LA_UWORD,        &Pen[5],
  116.                         TAG_DONE);
  117.  
  118.                         LT_New(Handle,
  119.                             LA_Type,        PALETTE_KIND,
  120.                             LA_LabelText,        "_6",
  121.                             GTPA_Depth,        Depth,
  122.                             GTPA_ColorTable,    Colours,
  123.                             LAPA_SmallPalette,    TRUE,
  124.                             LA_UWORD,        &Pen[6],
  125.                         TAG_DONE);
  126.  
  127.                         LT_New(Handle,
  128.                             LA_Type,        PALETTE_KIND,
  129.                             LA_LabelText,        "_7",
  130.                             GTPA_Depth,        Depth,
  131.                             GTPA_ColorTable,    Colours,
  132.                             LAPA_SmallPalette,    TRUE,
  133.                             LA_UWORD,        &Pen[7],
  134.                         TAG_DONE);
  135.                     }
  136.  
  137.                     LT_EndGroup(Handle);
  138.                 }
  139.  
  140.                 LT_New(Handle,
  141.                     LA_Type,    VERTICAL_KIND,
  142.                     LA_LabelID,    MSG_ATTRIBUTES_TXT,
  143.                 TAG_DONE);
  144.                 {
  145.                     LT_New(Handle,
  146.                         LA_Type,    CYCLE_KIND,
  147.                         LA_LabelID,    MSG_ATTRIBUTE1_GAD,
  148.                         LACY_FirstLabel,MSG_ATTRIBUTE1_GAD,
  149.                         LACY_LastLabel,    MSG_ATTRIBUTE5_GAD,
  150.                         LA_UBYTE,    &Attribute[TEXTATTR_UNDERLINE],
  151.                     TAG_DONE);
  152.  
  153.                     LT_New(Handle,
  154.                         LA_Type,    CYCLE_KIND,
  155.                         LA_LabelID,    MSG_ATTRIBUTE2_GAD,
  156.                         LACY_FirstLabel,MSG_ATTRIBUTE1_GAD,
  157.                         LACY_LastLabel,    MSG_ATTRIBUTE5_GAD,
  158.                         LA_UBYTE,    &Attribute[TEXTATTR_HIGHLIGHT],
  159.                     TAG_DONE);
  160.  
  161.                     LT_New(Handle,
  162.                         LA_Type,    CYCLE_KIND,
  163.                         LA_LabelID,    MSG_ATTRIBUTE3_GAD,
  164.                         LACY_FirstLabel,MSG_ATTRIBUTE1_GAD,
  165.                         LACY_LastLabel,    MSG_ATTRIBUTE5_GAD,
  166.                         LA_UBYTE,    &Attribute[TEXTATTR_BLINK],
  167.                     TAG_DONE);
  168.  
  169.                     LT_New(Handle,
  170.                         LA_Type,    CYCLE_KIND,
  171.                         LA_LabelID,    MSG_ATTRIBUTE4_GAD,
  172.                         LACY_FirstLabel,MSG_ATTRIBUTE1_GAD,
  173.                         LACY_LastLabel,    MSG_ATTRIBUTE5_GAD,
  174.                         LA_UBYTE,    &Attribute[TEXTATTR_INVERSE],
  175.                     TAG_DONE);
  176.  
  177.                     LT_EndGroup(Handle);
  178.                 }
  179.  
  180.                 LT_EndGroup(Handle);
  181.             }
  182.  
  183.             LT_New(Handle,
  184.                 LA_Type,VERTICAL_KIND,
  185.             TAG_DONE);
  186.             {
  187.                 LT_New(Handle,
  188.                     LA_Type,    XBAR_KIND,
  189.                     LAXB_FullSize,    TRUE,
  190.                 TAG_DONE);
  191.  
  192.                 LT_EndGroup(Handle);
  193.             }
  194.  
  195.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  196.                 LAGR_SameSize,    TRUE,
  197.                 LAGR_Spread,    TRUE,
  198.             TAG_DONE);
  199.             {
  200.                 LT_New(Handle,
  201.                     LA_Type,    BUTTON_KIND,
  202.                     LA_LabelID,    MSG_GLOBAL_USE_GAD,
  203.                     LA_ID,        GAD_USE,
  204.                     LABT_ReturnKey,    TRUE,
  205.                     LABT_ExtraFat,    TRUE,
  206.                 TAG_DONE);
  207.  
  208.                 LT_New(Handle,
  209.                     LA_Type,    BUTTON_KIND,
  210.                     LA_LabelID,    MSG_GLOBAL_CANCEL_GAD,
  211.                     LA_ID,        GAD_CANCEL,
  212.                     LABT_EscKey,    TRUE,
  213.                     LABT_ExtraFat,    TRUE,
  214.                 TAG_DONE);
  215.  
  216.                 LT_EndGroup(Handle);
  217.             }
  218.  
  219.             LT_EndGroup(Handle);
  220.         }
  221.  
  222.         if(PanelWindow = LT_Build(Handle,
  223.             LAWN_TitleID,        MSG_PENPANEL_SCREEN_DRAWING_PENS_TXT,
  224.             LAWN_IDCMP,        IDCMP_CLOSEWINDOW,
  225.             LAWN_HelpHook,        &GuideHook,
  226.             LAWN_Parent,        Parent,
  227.             WA_DepthGadget,        TRUE,
  228.             WA_CloseGadget,        TRUE,
  229.             WA_DragBar,        TRUE,
  230.             WA_RMBTrap,        TRUE,
  231.             WA_Activate,        TRUE,
  232.             WA_SimpleRefresh,    TRUE,
  233.         TAG_DONE))
  234.         {
  235.             struct IntuiMessage    *Message;
  236.             BOOL             Done = FALSE;
  237.             ULONG             MsgClass;
  238.             struct Gadget        *MsgGadget;
  239.  
  240.             PushWindow(PanelWindow);
  241.  
  242.             LT_ShowWindow(Handle,TRUE);
  243.  
  244.             GuideContext(CONTEXT_TEXTPEN_PANEL);
  245.  
  246.             do
  247.             {
  248.                 if(Wait(PORTMASK(PanelWindow -> UserPort) | SIG_BREAK) & SIG_BREAK)
  249.                     break;
  250.  
  251.                 while(Message = (struct IntuiMessage *)LT_GetIMsg(Handle))
  252.                 {
  253.                     MsgClass    = Message -> Class;
  254.                     MsgGadget    = (struct Gadget *)Message -> IAddress;
  255.  
  256.                     LT_ReplyIMsg(Message);
  257.  
  258.                     if(MsgClass == IDCMP_CLOSEWINDOW)
  259.                         Done = TRUE;
  260.  
  261.                     if(MsgClass == IDCMP_GADGETUP)
  262.                     {
  263.                         switch(MsgGadget -> GadgetID)
  264.                         {
  265.                             case GAD_USE:
  266.  
  267.                                 CopyMem(Pen,Config -> EmulationConfig -> Pens,sizeof(Pen));
  268.                                 CopyMem(Attribute,Config -> EmulationConfig -> Attributes,sizeof(Attribute));
  269.  
  270.                                 Result = Done = TRUE;
  271.                                 break;
  272.  
  273.                             case GAD_CANCEL:
  274.  
  275.                                 Done = TRUE;
  276.                                 break;
  277.                         }
  278.                     }
  279.                 }
  280.             }
  281.             while(!Done);
  282.  
  283.             PopWindow();
  284.         }
  285.  
  286.         LT_DeleteHandle(Handle);
  287.     }
  288.  
  289.     return(Result);
  290. }
  291.  
  292. BOOL
  293. EmulationPanel(struct Window *Parent,struct Configuration *LocalConfig)
  294. {
  295.     STATIC LONG PageTitleID[5] =
  296.     {
  297.         MSG_V36_0035,
  298.         MSG_V36_0034,
  299.         MSG_V36_0036,
  300.         MSG_PENPANEL_DRAWING_PENS_TXT,
  301.         -1
  302.     };
  303.  
  304.     STATIC BYTE         InitialPage = 0;
  305.  
  306.     struct LayoutHandle    *Handle;
  307.     BOOL             UseIt = FALSE;
  308.     BOOL             PenChoices;
  309.     LONG             Depth,
  310.                  CurrentDepth;
  311.     STRPTR             PageTitle[5];
  312.  
  313.     LocalizeStringTable(PageTitle,PageTitleID);
  314.  
  315.     SaveConfig(LocalConfig,PrivateConfig);
  316.  
  317.     if(PrivateConfig -> ScreenConfig -> UseWorkbench || PrivateConfig -> ScreenConfig -> ShareScreen)
  318.         PenChoices = FALSE;
  319.     else
  320.         PenChoices = TRUE;
  321.  
  322.     switch(PrivateConfig -> ScreenConfig -> ColourMode)
  323.     {
  324.         case COLOUR_MONO:
  325.  
  326.             Depth = 1;
  327.             break;
  328.  
  329.         case COLOUR_AMIGA:
  330.  
  331.             Depth = 2;
  332.             break;
  333.  
  334.         case COLOUR_EIGHT:
  335.  
  336.             Depth = 3;
  337.             break;
  338.  
  339.         case COLOUR_SIXTEEN:
  340.  
  341.             Depth = 4;
  342.             break;
  343.     }
  344.  
  345.     switch(PrivateConfig -> ScreenConfig -> ColourMode)
  346.     {
  347.         case COLOUR_MONO:
  348.  
  349.             CurrentDepth = 1;
  350.             break;
  351.  
  352.         case COLOUR_AMIGA:
  353.  
  354.             CurrentDepth = 2;
  355.             break;
  356.  
  357.         case COLOUR_EIGHT:
  358.  
  359.             CurrentDepth = 3;
  360.             break;
  361.  
  362.         case COLOUR_SIXTEEN:
  363.  
  364.             CurrentDepth = 4;
  365.             break;
  366.     }
  367.  
  368.     if(Depth != CurrentDepth || !PenChoices)
  369.     {
  370.         PageTitle[3] = NULL;
  371.  
  372.         if(InitialPage == 4)
  373.             InitialPage = 3;
  374.     }
  375.     else
  376.         PageTitle[4] = NULL;
  377.  
  378.     if(Handle = LT_CreateHandleTags(Parent -> WScreen,
  379.         LH_LocaleHook,    &LocaleHook,
  380.         LH_ExactClone,    TRUE,
  381.     TAG_DONE))
  382.     {
  383.         struct Window *PanelWindow;
  384.  
  385.         LT_New(Handle,
  386.             LA_Type,    VERTICAL_KIND,
  387.         TAG_DONE);
  388.         {
  389.             LT_New(Handle,
  390.                 LA_Type,VERTICAL_KIND,
  391.             TAG_DONE);
  392.             {
  393.                 LT_New(Handle,
  394.                     LA_Type,    TAB_KIND,
  395.                     LA_ID,        GAD_PAGER,
  396.                     LA_LabelID,    MSG_XFER_PAGE_TXT,
  397.                     GTCY_Labels,    PageTitle,
  398.                     LACY_AutoPageID,GAD_PAGEGROUP,
  399.                     LACY_TabKey,    TRUE,
  400.                     LA_BYTE,    &InitialPage,
  401.                     LATB_FullWidth,    TRUE,
  402.                 TAG_DONE);
  403.  
  404.                 LT_EndGroup(Handle);
  405.             }
  406.  
  407.             LT_New(Handle,
  408.                 LA_Type,    VERTICAL_KIND,
  409.                 LA_ID,        GAD_PAGEGROUP,
  410.                 LAGR_ActivePage,InitialPage,
  411.             TAG_DONE);
  412.             {
  413.                 LT_New(Handle,
  414.                     LA_Type,    VERTICAL_KIND,
  415.                 TAG_DONE);
  416.                 {
  417.                     LT_New(Handle,
  418.                         LA_Type,    VERTICAL_KIND,
  419.                     TAG_DONE);
  420.                     {
  421.                         LT_New(Handle,
  422.                             LA_Type,    CHECKBOX_KIND,
  423.                             LA_LabelID,    MSG_BBS_ANSI_COMPLIANT_TXT,
  424.                             LA_ID,        GAD_BBS_ANSI_COMPLIANT,
  425.                             GTCB_Checked,    PrivateConfig -> EmulationConfig -> CLSResetsCursor && PrivateConfig -> EmulationConfig -> CursorWrap && PrivateConfig -> EmulationConfig -> LineWrap && PrivateConfig -> EmulationConfig -> TerminalType == TERMINAL_VT102 && !PrivateConfig -> EmulationConfig -> DestructiveBackspace,
  426.                         TAG_DONE);
  427.  
  428.                         LT_New(Handle,
  429.                             LA_Type,    XBAR_KIND,
  430.                         TAG_DONE);
  431.  
  432.                         LT_EndGroup(Handle);
  433.                     }
  434.  
  435.                     LT_New(Handle,
  436.                         LA_Type,    HORIZONTAL_KIND,
  437.                     TAG_DONE);
  438.                     {
  439.                         LT_New(Handle,
  440.                             LA_Type,    VERTICAL_KIND,
  441.                         TAG_DONE);
  442.                         {
  443.                             LT_New(Handle,
  444.                                 LA_Type,    CHECKBOX_KIND,
  445.                                 LA_LabelID,    MSG_EMULATIONPANEL_WRAP_CHARACTERS_GAD,
  446.                                 LA_BYTE,    &PrivateConfig -> EmulationConfig -> LineWrap,
  447.                                 LA_ID,        GAD_WRAP_CHARACTERS,
  448.                             TAG_DONE);
  449.  
  450.                             LT_New(Handle,
  451.                                 LA_Type,    CHECKBOX_KIND,
  452.                                 LA_LabelID,    MSG_LOCK_WRAPPING_GAD,
  453.                                 LA_BYTE,    &PrivateConfig -> EmulationConfig -> LockWrapping,
  454.                             TAG_DONE);
  455.  
  456.                             LT_New(Handle,
  457.                                 LA_Type,    CHECKBOX_KIND,
  458.                                 LA_LabelID,    MSG_EMULATIONPANEL_INSERT_MODE_GAD,
  459.                                 LA_BYTE,    &PrivateConfig -> EmulationConfig -> InsertMode,
  460.                             TAG_DONE);
  461.  
  462.                             LT_New(Handle,
  463.                                 LA_Type,    CHECKBOX_KIND,
  464.                                 LA_LabelID,    MSG_EMULATIONPANEL_NEW_LINE_MODE_GAD,
  465.                                 LA_BYTE,    &PrivateConfig -> EmulationConfig -> NewLineMode,
  466.                             TAG_DONE);
  467.  
  468.                             LT_EndGroup(Handle);
  469.                         }
  470.  
  471.                         LT_New(Handle,
  472.                             LA_Type,    VERTICAL_KIND,
  473.                         TAG_DONE);
  474.                         {
  475.                             LT_New(Handle,
  476.                                 LA_Type,    CHECKBOX_KIND,
  477.                                 LA_LabelID,    MSG_EMULATIONPANEL_CLS_RESETS_CURSOR_GAD,
  478.                                 LA_BYTE,    &PrivateConfig -> EmulationConfig -> CLSResetsCursor,
  479.                                 LA_ID,        GAD_CLS_RESETS_CURSOR,
  480.                             TAG_DONE);
  481.  
  482.                             LT_New(Handle,
  483.                                 LA_Type,    CHECKBOX_KIND,
  484.                                 LA_LabelID,    MSG_EMULATIONPANEL_PRINTER_CONTROL_GAD,
  485.                                 LA_BYTE,    &PrivateConfig -> EmulationConfig -> PrinterEnabled,
  486.                             TAG_DONE);
  487.  
  488.                             LT_New(Handle,
  489.                                 LA_Type,    CHECKBOX_KIND,
  490.                                 LA_LabelID,    MSG_LOCK_STYLE_GAD,
  491.                                 LA_BYTE,    &PrivateConfig -> EmulationConfig -> LockStyle,
  492.                             TAG_DONE);
  493.  
  494.                             LT_New(Handle,
  495.                                 LA_Type,    CHECKBOX_KIND,
  496.                                 LA_LabelID,    MSG_LOCK_COLOUR_GAD,
  497.                                 LA_BYTE,    &PrivateConfig -> EmulationConfig -> LockColour,
  498.                             TAG_DONE);
  499.  
  500.                             LT_EndGroup(Handle);
  501.                         }
  502.  
  503.                         LT_EndGroup(Handle);
  504.                     }
  505.  
  506.                     LT_New(Handle,
  507.                         LA_Type,    VERTICAL_KIND,
  508.                     TAG_DONE);
  509.                     {
  510.                         LT_New(Handle,
  511.                             LA_Type,    CHECKBOX_KIND,
  512.                             LA_LabelID,    MSG_EMULATIONPANEL_WRAP_CURSOR_MOVES_GAD,
  513.                             LA_BYTE,    &PrivateConfig -> EmulationConfig -> CursorWrap,
  514.                             LA_ID,        GAD_WRAP_CURSOR_MOVES,
  515.                         TAG_DONE);
  516.  
  517.                         LT_EndGroup(Handle);
  518.                     }
  519.  
  520.                     LT_New(Handle,
  521.                         LA_Type,    VERTICAL_KIND,
  522.                     TAG_DONE);
  523.                     {
  524.                         LT_New(Handle,
  525.                             LA_Type,    XBAR_KIND,
  526.                         TAG_DONE);
  527.  
  528.                         LT_New(Handle,
  529.                             LA_Type,    CYCLE_KIND,
  530.                             LA_LabelID,    MSG_TERMINALTYPE_TXT,
  531.                             LA_BYTE,    &PrivateConfig -> EmulationConfig -> TerminalType,
  532.                             LACY_FirstLabel,MSG_TERMINALTYPE_VT200_TXT,
  533.                             LACY_LastLabel,    MSG_TERMINALTYPE_VT100_TXT,
  534.                             LA_ID,        GAD_TERMINALTYPE,
  535.                         TAG_DONE);
  536.  
  537.                         LT_EndGroup(Handle);
  538.                     }
  539.  
  540.                     LT_EndGroup(Handle);
  541.                 }
  542.  
  543.                 LT_New(Handle,
  544.                     LA_Type,    VERTICAL_KIND,
  545.                 TAG_DONE);
  546.                 {
  547.                     LT_New(Handle,
  548.                         LA_Type,    CYCLE_KIND,
  549.                         LA_LabelID,    MSG_EMULATIONPANEL_CURSOR_KEYS_GAD,
  550.                         LA_BYTE,    &PrivateConfig -> EmulationConfig -> CursorMode,
  551.                         LACY_FirstLabel,MSG_EMULATIONPANEL_STANDARD_MODE_TXT,
  552.                         LACY_LastLabel,    MSG_EMULATIONPANEL_APPLICATION_MODE_TXT,
  553.                         LA_Chars,    20,
  554.                     TAG_DONE);
  555.  
  556.                     LT_New(Handle,
  557.                         LA_Type,    CHECKBOX_KIND,
  558.                         LA_LabelID,    MSG_LOCK_CURSOR_KEY_MODE_TXT,
  559.                         LA_BYTE,    &PrivateConfig -> EmulationConfig -> CursorLocked,
  560.                     TAG_DONE);
  561.  
  562.                     LT_New(Handle,
  563.                         LA_Type,    XBAR_KIND,
  564.                     TAG_DONE);
  565.  
  566.                     LT_New(Handle,
  567.                         LA_Type,    CYCLE_KIND,
  568.                         LA_LabelID,    MSG_EMULATIONPANEL_NUMERIC_KEYPAD_GAD,
  569.                         LA_BYTE,    &PrivateConfig -> EmulationConfig -> NumericMode,
  570.                         LACY_FirstLabel,MSG_EMULATIONPANEL_STANDARD_MODE_TXT,
  571.                         LACY_LastLabel,    MSG_EMULATIONPANEL_APPLICATION_MODE_TXT,
  572.                     TAG_DONE);
  573.  
  574.                     LT_New(Handle,
  575.                         LA_Type,    CHECKBOX_KIND,
  576.                         LA_LabelID,    MSG_V36_1820,
  577.                         LA_BYTE,    &PrivateConfig -> EmulationConfig -> KeysLocked,
  578.                     TAG_DONE);
  579.  
  580.                     LT_New(Handle,
  581.                         LA_Type,    XBAR_KIND,
  582.                     TAG_DONE);
  583.  
  584.                     LT_New(Handle,
  585.                         LA_Type,    CHECKBOX_KIND,
  586.                         LA_LabelID,    MSG_EMULATIONPANEL_SWAP_BS_AND_DEL_GAD,
  587.                         LA_BYTE,    &PrivateConfig -> EmulationConfig -> SwapBSDelete,
  588.                     TAG_DONE);
  589.  
  590.                     LT_EndGroup(Handle);
  591.                 }
  592.  
  593.                 LT_New(Handle,
  594.                     LA_Type,    VERTICAL_KIND,
  595.                 TAG_DONE);
  596.                 {
  597.                     LT_New(Handle,
  598.                         LA_Type,    CHECKBOX_KIND,
  599.                         LA_LabelID,    MSG_LOCK_FONT_MODE_TXT,
  600.                         LA_BYTE,    &PrivateConfig -> EmulationConfig -> FontLocked,
  601.                     TAG_DONE);
  602.  
  603.                     LT_New(Handle,
  604.                         LA_Type,    CYCLE_KIND,
  605.                         LA_LabelID,    MSG_EMULATIONPANEL_SMOOTH_SCROLLING_GAD,
  606.                         LA_BYTE,    &PrivateConfig -> EmulationConfig -> ScrollMode,
  607.                         LACY_FirstLabel,MSG_EMULATIONPANEL_JUMP_TXT,
  608.                         LACY_LastLabel,    MSG_EMULATIONPANEL_SMOOTH_TXT,
  609.                     TAG_DONE);
  610.  
  611.                     LT_New(Handle,
  612.                         LA_Type,    CYCLE_KIND,
  613.                         LA_ID,        GAD_DESTRUCTIVE_BS,
  614.                         LA_LabelID,    MSG_EMULATIONPANEL_DESTRUCTIVE_BACKSPACE_GAD,
  615.                         LA_BYTE,    &PrivateConfig -> EmulationConfig -> DestructiveBackspace,
  616.                         LACY_FirstLabel,MSG_DESTRUCTIVE_BS_OFF_TXT,
  617.                         LACY_LastLabel,    MSG_DESTRUCTIVE_BS_SHIFT_TXT,
  618.                     TAG_DONE);
  619.  
  620.                     LT_New(Handle,
  621.                         LA_Type,    STRING_KIND,
  622.                         LA_LabelID,    MSG_EMULATIONPANEL_ANSWERBACK_MESSAGE_GAD,
  623.                         LA_STRPTR,    PrivateConfig -> EmulationConfig -> AnswerBack,
  624.                         GTST_MaxChars,    79,
  625.                     TAG_DONE);
  626.  
  627.                     LT_New(Handle,
  628.                         LA_Type,        INTEGER_KIND,
  629.                         LA_LabelID,        MSG_EMULATIONPANEL_PRESCROLL_TXT,
  630.                         LA_UBYTE,        &PrivateConfig -> EmulationConfig -> MaxScroll,
  631.                         LAIN_Min,        0,
  632.                         LAIN_Max,        255,
  633.                         LA_ID,            GAD_SCROLL,
  634.                         LAIN_UseIncrementers,    TRUE,
  635.                         GTIN_MaxChars,        3,
  636.                     TAG_DONE);
  637.  
  638.                     LT_New(Handle,
  639.                         LA_Type,        INTEGER_KIND,
  640.                         LA_LabelID,        MSG_EMULATIONPANEL_JUMP_SCROLL_TXT,
  641.                         LA_UBYTE,        &PrivateConfig -> EmulationConfig -> MaxJump,
  642.                         LAIN_Min,        0,
  643.                         LAIN_Max,        255,
  644.                         LA_ID,            GAD_JUMP_SCROLL,
  645.                         LAIN_UseIncrementers,    TRUE,
  646.                         GTIN_MaxChars,        3,
  647.                     TAG_DONE);
  648.  
  649.                     LT_EndGroup(Handle);
  650.                 }
  651.  
  652.                 if(PageTitle[3])
  653.                 {
  654.                     LT_New(Handle,
  655.                         LA_Type,    VERTICAL_KIND,
  656.                     TAG_DONE);
  657.                     {
  658.                         LT_New(Handle,
  659.                             LA_Type,    VERTICAL_KIND,
  660.                         TAG_DONE);
  661.                         {
  662.                             LT_New(Handle,
  663.                                 LA_Type,    CHECKBOX_KIND,
  664.                                 LA_LabelID,    MSG_PENPANEL_STANDARDPENS_TXT,
  665.                                 LA_ID,        GAD_STDPENS,
  666.                                 LA_BYTE,    &PrivateConfig -> EmulationConfig -> UseStandardPens,
  667.                             TAG_DONE);
  668.  
  669.                             LT_EndGroup(Handle);
  670.                         }
  671.  
  672.                         LT_New(Handle,
  673.                             LA_Type,    VERTICAL_KIND,
  674.                         TAG_DONE);
  675.                         {
  676.                             LT_New(Handle,
  677.                                 LA_Type,    BUTTON_KIND,
  678.                                 LA_LabelID,    MSG_PENPANEL_EDITPENS_TXT,
  679.                                 LA_ID,        GAD_EDITPENS,
  680.                                 GA_Disabled,    PrivateConfig -> EmulationConfig -> UseStandardPens,
  681.                             TAG_DONE);
  682.  
  683.                             LT_EndGroup(Handle);
  684.                         }
  685.  
  686.                         LT_EndGroup(Handle);
  687.                     }
  688.                 }
  689.  
  690.                 LT_EndGroup(Handle);
  691.             }
  692.  
  693.             LT_New(Handle,
  694.                 LA_Type,VERTICAL_KIND,
  695.             TAG_DONE);
  696.             {
  697.                 LT_New(Handle,
  698.                     LA_Type,    XBAR_KIND,
  699.                     LAXB_FullSize,    TRUE,
  700.                 TAG_DONE);
  701.  
  702.                 LT_EndGroup(Handle);
  703.             }
  704.  
  705.             LT_New(Handle,LA_Type,HORIZONTAL_KIND,
  706.                 LAGR_SameSize,    TRUE,
  707.                 LAGR_Spread,    TRUE,
  708.             TAG_DONE);
  709.             {
  710.                 LT_New(Handle,
  711.                     LA_Type,    BUTTON_KIND,
  712.                     LA_LabelID,    MSG_GLOBAL_USE_GAD,
  713.                     LA_ID,        GAD_USE,
  714.                     LABT_ReturnKey,    TRUE,
  715.                     LABT_ExtraFat,    TRUE,
  716.                 TAG_DONE);
  717.  
  718.                 LT_New(Handle,
  719.                     LA_Type,    BUTTON_KIND,
  720.                     LA_LabelID,    MSG_GLOBAL_CANCEL_GAD,
  721.                     LA_ID,        GAD_CANCEL,
  722.                     LABT_EscKey,    TRUE,
  723.                     LABT_ExtraFat,    TRUE,
  724.                 TAG_DONE);
  725.  
  726.                 LT_EndGroup(Handle);
  727.             }
  728.  
  729.             LT_EndGroup(Handle);
  730.         }
  731.  
  732.         if(PanelWindow = LT_Build(Handle,
  733.             LAWN_TitleID,        MSG_EMULATIONPANEL_EMULATION_PREFERENCES_TXT,
  734.             LAWN_IDCMP,        IDCMP_CLOSEWINDOW,
  735.             LAWN_HelpHook,        &GuideHook,
  736.             LAWN_Parent,        Parent,
  737.             WA_DepthGadget,        TRUE,
  738.             WA_CloseGadget,        TRUE,
  739.             WA_DragBar,        TRUE,
  740.             WA_RMBTrap,        TRUE,
  741.             WA_Activate,        TRUE,
  742.             WA_SimpleRefresh,    TRUE,
  743.         TAG_DONE))
  744.         {
  745.             struct IntuiMessage    *Message;
  746.             BOOL             Done = FALSE;
  747.             ULONG             MsgClass;
  748.             UWORD             MsgCode;
  749.             struct Gadget        *MsgGadget;
  750.  
  751.             GuideContext(CONTEXT_EMULATION);
  752.  
  753.             PushWindow(PanelWindow);
  754.  
  755.             LT_ShowWindow(Handle,TRUE);
  756.  
  757.             do
  758.             {
  759.                 if(Wait(PORTMASK(PanelWindow -> UserPort) | SIG_BREAK) & SIG_BREAK)
  760.                     break;
  761.  
  762.                 while(Message = (struct IntuiMessage *)LT_GetIMsg(Handle))
  763.                 {
  764.                     MsgClass    = Message -> Class;
  765.                     MsgCode        = Message -> Code;
  766.                     MsgGadget    = (struct Gadget *)Message -> IAddress;
  767.  
  768.                     LT_ReplyIMsg(Message);
  769.  
  770.                     if(MsgClass == IDCMP_CLOSEWINDOW)
  771.                         Done = TRUE;
  772.  
  773.                     if(MsgClass == IDCMP_GADGETUP)
  774.                     {
  775.                         switch(MsgGadget -> GadgetID)
  776.                         {
  777.                             case GAD_STDPENS:
  778.  
  779.                                 LT_SetAttributes(Handle,GAD_EDITPENS,
  780.                                     GA_Disabled,    MsgCode,
  781.                                 TAG_DONE);
  782.  
  783.                                 break;
  784.  
  785.                             case GAD_EDITPENS:
  786.  
  787.                                 LT_LockWindow(PanelWindow);
  788.  
  789.                                 EmulationPenPanel(PanelWindow,PrivateConfig,Depth);
  790.  
  791.                                 LT_UnlockWindow(PanelWindow);
  792.  
  793.                                 break;
  794.  
  795.                             case GAD_USE:
  796.  
  797.                                 LT_UpdateStrings(Handle);
  798.  
  799.                                 UseIt = Done = TRUE;
  800.  
  801.                                 break;
  802.  
  803.                             case GAD_CANCEL:
  804.  
  805.                                 Done = TRUE;
  806.                                 break;
  807.  
  808.                             case GAD_BBS_ANSI_COMPLIANT:
  809.  
  810.                                 if(MsgCode)
  811.                                 {
  812.                                     LT_SetAttributes(Handle,GAD_TERMINALTYPE,
  813.                                         GTCY_Active,    TERMINAL_VT102,
  814.                                     TAG_DONE);
  815.  
  816.                                     LT_SetAttributes(Handle,GAD_CLS_RESETS_CURSOR,
  817.                                         GTCB_Checked,    TRUE,
  818.                                     TAG_DONE);
  819.  
  820.                                     LT_SetAttributes(Handle,GAD_WRAP_CURSOR_MOVES,
  821.                                         GTCB_Checked,    TRUE,
  822.                                     TAG_DONE);
  823.  
  824.                                     LT_SetAttributes(Handle,GAD_WRAP_CHARACTERS,
  825.                                         GTCB_Checked,    TRUE,
  826.                                     TAG_DONE);
  827.  
  828.                                     LT_SetAttributes(Handle,GAD_DESTRUCTIVE_BS,
  829.                                         GTCY_Active,    0,
  830.                                     TAG_DONE);
  831.                                 }
  832.  
  833.                                 break;
  834.  
  835.                             default:
  836.  
  837.                                 LT_SetAttributes(Handle,GAD_BBS_ANSI_COMPLIANT,
  838.                                     GTCB_Checked,    PrivateConfig -> EmulationConfig -> CLSResetsCursor && PrivateConfig -> EmulationConfig -> CursorWrap && PrivateConfig -> EmulationConfig -> LineWrap && PrivateConfig -> EmulationConfig -> TerminalType == TERMINAL_VT102 && !PrivateConfig -> EmulationConfig -> DestructiveBackspace,
  839.                                 TAG_DONE);
  840.  
  841.                                 break;
  842.                         }
  843.                     }
  844.                 }
  845.             }
  846.             while(!Done);
  847.  
  848.             PopWindow();
  849.         }
  850.  
  851.         LT_DeleteHandle(Handle);
  852.     }
  853.  
  854.     if(UseIt)
  855.         SwapConfig(LocalConfig,PrivateConfig);
  856.     else
  857.         SaveConfig(LocalConfig,PrivateConfig);
  858.  
  859.     if(LocalConfig == Config && UseIt)
  860.         ScreenSizeStuff();
  861.  
  862.     return(UseIt);
  863. }
  864.