home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / source / term43-source.lha / Extras / Source / term-Source.lha / EmulationPanel.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-02-18  |  17.2 KB  |  810 lines

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