home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / p2demo21.exe / PEL / SETTINGS.PEL < prev    next >
Text File  |  1995-03-20  |  71KB  |  2,050 lines

  1. # $Header:   P:\source\wmacros\settings.pev   1.143   20 Mar 1995 16:54:30   NOBLE  $
  2. ## $Tabs:4 7$
  3.  
  4. ##############################################################################
  5. #
  6. #       Compuware Corporation
  7. #         31440 Northwestern Highway
  8. #           Farmington Hills, Michigan 48334-2564
  9. #
  10. #   This source code listing contains information that is
  11. #   proprietary to Compuware Corporation and may not be copied
  12. #   duplicated, translated, transmitted, stored, retrieved
  13. #   or in any manner or by any method conveyed or disclosed
  14. #   to a third party or parties without express written
  15. #   permission from Compuware Corporation.
  16. #
  17. #  
  18. ##############################################################################
  19.  
  20. #### $Workfile:   settings.pel  $: Notebook settings
  21.  
  22. local  key_bindings_set      = 0
  23. local  IDD_CURSOR_PAGE       = 1580;
  24. local  IDE_CURSOR_WIDTH      = 104;
  25. local  IDE_CURSOR_HEIGHT     = 105;
  26. local  IDC_CURSOR_GRAY       = 103;
  27. local  IDR_CURSOR_VERTICAL   = 106;
  28. local  IDR_CURSOR_HORIZONTAL = 107;
  29. local  IDR_CURSOR_CUSTOM     = 108;
  30. local local_cur_text;                #  Name of the cursor currently being used modified
  31. local save_normal;                   #  Variables used to save the cursor settings
  32. local save_overtype;
  33. local save_virtual;
  34. local save_virtual_overtype;
  35. local default_vert = 0x02FF;  # default vertical normal cursor
  36. local default_horz = 0xFF03;  # default horizontal normal cursor
  37. local NORMAL    = "Normal";
  38. local OVERTYPE  = "Overtype";
  39. local VIRTUAL   = "Virtual";
  40. local VOVERTYPE = "Virtual Overtype";
  41.  
  42. global STB_MASK2 = STB_LEVELS + STB_PAUSEONERR;
  43. global STB_MASK1 = STB_DYNA_SIZE + STB_CLOCK + STB_TOTAL_INDS + STB_PROMPTS + STB_MESSAGES + STB_POSITION;
  44. local  IDC_STB_BUFFER_OFFSET = 1120
  45.  
  46. local IDB_ISPF_SETTINGS       = 1001
  47.  
  48. local ph
  49. local dh
  50. local IDQ            # array containing control ids for Quick Settings dialog
  51. global emulations[]  # array containing all possible emulation modes
  52. local modified_types[] # array containing extensions for all modified types 
  53. local language_modified = 0
  54. local new_mdi_mode = 0
  55. local new_one_buff = 0
  56.        
  57. # this line causes init_constants to be called when globals are initialized
  58. local dummy = init_constants()
  59.  
  60. local function init_constants()
  61. {
  62. dummy++  # line to stop warning about variable declared and not used.
  63.  
  64. emulations["brief"] = "Brief"
  65. emulations["vi"] = "vi"
  66. emulations["cua"] = "CUA"
  67. emulations["emacs"] = "Emacs"
  68. emulations["ispf"] = "ISPF"
  69. emulations["native"] = "Native"
  70.  
  71. IDQ.QUICK_SETTINGS_DLG  = 1650
  72. IDQ.EMULATION           = 1651
  73. IDQ.CURSOR_HORZ         = 1652
  74. IDQ.CURSOR_VERT         = 1653
  75. IDQ.SBAR_PROMPTS        = 1654
  76. IDQ.SBAR_DYNASIZE       = 1655
  77. IDQ.SAVE_BACKUP         = 1656
  78. IDQ.SAVE_AUTOSAVE       = 1657
  79.  
  80. IDQ.WINDOW_SINGLE       = 1658
  81. IDQ.WINDOW_MULT         = 1659
  82. IDQ.WINDOW_DETACHED     = 1660
  83. IDQ.WINDOW_ONEBUFF      = 1661
  84. IDQ.WINDOW_LINENUMS     = 1662
  85. IDQ.WINDOW_VERT         = 1663
  86. IDQ.WINDOW_HORZ         = 1664
  87.  
  88. IDQ.TYPES_TYPE          = 1665
  89. IDQ.TYPES_EXTENSION     = 1666
  90. IDQ.TYPES_TEMPLATE      = 1667
  91.  
  92. IDQ.BUFF_COLOR          = 1668
  93. IDQ.BUFF_INDENT         = 1669
  94. IDQ.BUFF_EXPAND         = 1670
  95.  
  96. if(isWindows())
  97.    IDQ.HELP = "Quick Settings"
  98. else
  99.    IDQ.HELP = "quick_settings"
  100.  
  101. dh.EditSettings       = 0;
  102. dh.SaveSettings       = 0;
  103. dh.SearchSettings     = 0;
  104. dh.DirectorySettings  = 0;
  105. dh.CursorSettings     = 0;
  106. dh.StatusBarSettings1 = 0;
  107. dh.StatusBarSettings2 = 0;
  108. dh.VCSSettings        = 0;
  109.  
  110. ph.EditSettings       = 0;
  111. ph.SaveSettings       = 0;
  112. ph.SearchSettings     = 0;
  113. ph.DirectorySettings  = 0;
  114. ph.CursorSettings     = 0;
  115. ph.StatusBarSettings1 = 0;
  116. ph.StatusBarSettings2 = 0;
  117. ph.VCSSettings        = 0;
  118. ph.KeysSettings       = 0;
  119. }
  120.  
  121. global function editor_settings_notebook(dlgid)
  122. {
  123.    local dhHelpSettings = 0, phHelpSettings;
  124.  
  125.    STB_MASK1 = STB_DYNA_SIZE + STB_CLOCK + STB_TOTAL_INDS + STB_PROMPTS + STB_MESSAGES + STB_POSITION;
  126.    STB_MASK2 = STB_LEVELS + STB_PAUSEONERR;
  127.  
  128.    nb_initializing = TRUE;
  129.  
  130.    if (dlgid)
  131.    {
  132.       if(status_bar_flags )
  133.          message( "Creating Editor Settings pages..." );
  134.  
  135.       # Add the pages to the notebook
  136.       #
  137. #        dhHelpSettings = create_page(function_id( "nop_settings_callback"), 
  138. #                                  dlgid, IDD_EDITOR_HELP_PAGE, resource_dll );
  139.       phHelpSettings = append_notebook_page( dlgid, dhHelpSettings,
  140.                                            " ",
  141.                                            "Editor", NBTAB_MAJOR )
  142. #        nbPagePrefix[phHelpSettings].dialog_handle = dhHelpSettings;
  143.       nbPagePrefix[phHelpSettings].name = "edithelp";
  144.       #  create_edithelp_page(phHelpSettings, dlgid);
  145.  
  146.       ph.EditSettings = append_notebook_page(dlgid, dh.EditSettings,
  147.                                           " Emulation Mode",
  148.                                           "Emulation", NBTAB_MINOR )
  149.       nbPagePrefix[ph.EditSettings].name = "edit";
  150.  
  151.       ph.SaveSettings = append_notebook_page(dlgid, dh.SaveSettings,
  152.                                          " Save Options", "Save", NBTAB_MINOR )
  153.       nbPagePrefix[ph.SaveSettings].name = "save";
  154.  
  155.       ph.SearchSettings = append_notebook_page(dlgid, dh.SearchSettings,
  156.                                            " Search Options", "Search", NBTAB_MINOR )
  157.       nbPagePrefix[ph.SearchSettings].name = "search";
  158.  
  159.       ph.StatusBarSettings1 = append_notebook_page(dlgid, dh.StatusBarSettings1,
  160.                                                " Status Bar Options",
  161.                                                "Status Bar", NBTAB_MINOR )
  162.       nbPagePrefix[ph.StatusBarSettings1].name = "stb1";
  163.  
  164.       ph.StatusBarSettings2 = append_notebook_page(dlgid, dh.StatusBarSettings2,
  165.                                                " Message Level", 
  166.                                                "Msg. Level", NBTAB_MINOR)
  167.       nbPagePrefix[ph.StatusBarSettings2].name = "stb2";
  168.  
  169.       ph.DirectorySettings = append_notebook_page(dlgid, dh.DirectorySettings,
  170.                                               " Backup and Tags Paths",
  171.                                               "Directories", NBTAB_MINOR )
  172.       nbPagePrefix[ph.DirectorySettings].name = "dir";
  173.  
  174.       ph.CursorSettings = append_notebook_page(dlgid, dh.CursorSettings,
  175.                                               " Cursor Size",
  176.                                               "Cursor", NBTAB_MINOR )
  177.       nbPagePrefix[ph.CursorSettings].name = "cursor";
  178.  
  179.       if(function_id("create_vcs_page"))
  180.       {
  181.          ph.VCSSettings = append_notebook_page(dlgid, dh.VCSSettings,
  182.                                                   " Version Control System",
  183.                                                   "VCS", NBTAB_MINOR )
  184.          nbPagePrefix[ph.VCSSettings].name = "vcs";
  185.       }
  186.    }
  187.    else
  188.    {
  189.       warning("Illegal call to window_settings_notebook()");
  190.    }
  191.  
  192.    nb_initializing = FALSE;
  193. }
  194.                                      
  195. global function reset_editor_settings_notebook()
  196. {
  197.    dh.EditSettings       = 0
  198.    dh.SaveSettings       = 0
  199.    dh.SearchSettings     = 0
  200.    dh.DirectorySettings  = 0
  201.    dh.CursorSettings     = 0
  202.    dh.StatusBarSettings1 = 0
  203.    dh.StatusBarSettings2 = 0
  204.    dh.VCSSettings        = 0
  205.  
  206.    ph.EditSettings       = 0
  207.    ph.SaveSettings       = 0
  208.    ph.SearchSettings     = 0
  209.    ph.DirectorySettings  = 0
  210.    ph.CursorSettings     = 0
  211.    ph.StatusBarSettings1 = 0
  212.    ph.StatusBarSettings2 = 0
  213.    ph.VCSSettings        = 0
  214.    ph.KeysSettings       = 0
  215.  
  216.    key_bindings_set     = 0
  217.    local_cur_text       = "";
  218. }
  219.  
  220. ########################## EDITOR NOTEBOOK #################################
  221. global function create_edithelp_page(pageid, dlgid)
  222. {
  223.    local dhHelpSettings;
  224.  
  225.    dhHelpSettings = create_page(function_id( "nop_settings_callback"), 
  226.                                 dlgid, IDD_EDITOR_HELP_PAGE, resource_dll );
  227.    attach_help(editor_helpfile, dhHelpSettings);
  228.    if(isWindows())
  229.       nbPagePrefix[pageid].help = "Emulation Settings";
  230.    else
  231.       nbPagePrefix[pageid].help = "editpages";
  232.    set_notebook_page_dialog(dlgid, pageid, dhHelpSettings);
  233.    nbPagePrefix[pageid].dialog_handle = dhHelpSettings;
  234. }
  235.  
  236. global function create_edit_page(pageid, dlgid)
  237. {
  238.    dh.EditSettings = create_page(function_id( "edit_settings_callback" ), 
  239.                                 dlgid, IDD_EDIT_SETTINGS, resource_dll )
  240.    add_dialog_item( dh.EditSettings, IDB_UNDO, DCTRL_PUSH_BUTTON )
  241.    attach_help(editor_helpfile, dh.EditSettings);
  242.    if(isWindows())
  243.       nbPagePrefix[pageid].help = "Emulation Settings";
  244.    else
  245.       nbPagePrefix[pageid].help = "emulationpage";
  246.    initialize_edit_settings( dh.EditSettings )
  247.    set_notebook_page_dialog(dlgid, pageid, dh.EditSettings);
  248.    nbPagePrefix[pageid].dialog_handle = dh.EditSettings;
  249. }
  250.  
  251. global function create_save_page(pageid, dlgid)
  252. {
  253.    dh.SaveSettings = create_page(function_id( "save_settings_callback" ), 
  254.                                 dlgid, IDD_SAVE_SETTINGS, resource_dll);
  255.    add_dialog_item( dh.SaveSettings, IDB_UNDO, DCTRL_PUSH_BUTTON )
  256.    attach_help(editor_helpfile, dh.SaveSettings)
  257.    if(isWindows())
  258.       nbPagePrefix[pageid].help = "Save Settings";
  259.    else
  260.       nbPagePrefix[pageid].help = "savepage";
  261.    initialize_save_settings( dh.SaveSettings );
  262.    set_notebook_page_dialog(dlgid, pageid, dh.SaveSettings);
  263.    nbPagePrefix[pageid].dialog_handle = dh.SaveSettings;
  264. }
  265.  
  266. global function create_search_page(pageid, dlgid)
  267. {
  268.    dh.SearchSettings = create_page(function_id( "search_settings_callback" ), 
  269.                                   dlgid, IDD_SEARCH_SETTINGS, resource_dll);
  270.    add_dialog_item( dh.SearchSettings, IDB_UNDO, DCTRL_PUSH_BUTTON )
  271.    attach_help(editor_helpfile, dh.SearchSettings)
  272.    if(isWindows())
  273.       nbPagePrefix[pageid].help = "Search Settings";
  274.    else
  275.       nbPagePrefix[pageid].help = "searchpage";
  276.    initialize_search_settings( dh.SearchSettings ) ;
  277.    set_notebook_page_dialog(dlgid, pageid, dh.SearchSettings);
  278.    nbPagePrefix[pageid].dialog_handle = dh.SearchSettings;
  279. }
  280.  
  281. global function create_stb1_page(pageid, dlgid)
  282. {
  283.    dh.StatusBarSettings1 = create_page(function_id( "stb1_settings_callback" ), 
  284.                                       dlgid, IDD_STATUS_BAR_SETTINGS1, resource_dll);
  285.    add_dialog_item( dh.StatusBarSettings1, IDB_UNDO, DCTRL_PUSH_BUTTON );
  286.    attach_help(editor_helpfile, dh.StatusBarSettings1);
  287.    if(isWindows())
  288.       nbPagePrefix[pageid].help = "Status Bar Settings";
  289.    else
  290.       nbPagePrefix[pageid].help = "statusbarpage";
  291.    initialize_stb1_settings( dh.StatusBarSettings1 );
  292.    set_notebook_page_dialog(dlgid, pageid, dh.StatusBarSettings1);
  293.    nbPagePrefix[pageid].dialog_handle = dh.StatusBarSettings1;
  294. }
  295.  
  296. global function create_stb2_page(pageid, dlgid)
  297. {
  298.    dh.StatusBarSettings2 = create_page(function_id( "stb2_settings_callback" ), 
  299.                                       dlgid, IDD_STATUS_BAR_SETTINGS2, resource_dll)
  300.    add_dialog_item( dh.StatusBarSettings2, IDB_UNDO, DCTRL_PUSH_BUTTON);
  301.    attach_help(editor_helpfile, dh.StatusBarSettings2);
  302.    if(isWindows())
  303.       nbPagePrefix[pageid].help = "Message Level Settings";
  304.    else
  305.       nbPagePrefix[pageid].help = "msgpage";
  306.    initialize_stb2_settings( dh.StatusBarSettings2 );
  307.    set_notebook_page_dialog(dlgid, pageid, dh.StatusBarSettings2);
  308.    nbPagePrefix[pageid].dialog_handle = dh.StatusBarSettings2;
  309. }
  310.  
  311. global function create_dir_page(pageid, dlgid)
  312. {
  313.    dh.DirectorySettings = create_page(function_id( "directories_settings_callback" ), 
  314.                                      dlgid, IDD_DIRECTORIES_SETTINGS, resource_dll);
  315.    add_dialog_item( dh.DirectorySettings, IDB_UNDO, DCTRL_PUSH_BUTTON );
  316.    attach_help(editor_helpfile, dh.DirectorySettings);
  317.    if(isWindows())
  318.       nbPagePrefix[pageid].help = "Directory Settings";
  319.    else
  320.       nbPagePrefix[pageid].help = "dirspage";
  321.    initialize_dir_settings( dh.DirectorySettings );
  322.    set_notebook_page_dialog(dlgid, pageid, dh.DirectorySettings);
  323.    nbPagePrefix[pageid].dialog_handle = dh.DirectorySettings;
  324. }
  325.  
  326. global function create_cursor_page(pageid, dlgid)
  327. {
  328.    dh.CursorSettings = create_page(function_id( "cursor_settings_callback" ), 
  329.                                      dlgid, IDD_CURSOR_PAGE, resource_dll);
  330.    add_dialog_item( dh.CursorSettings, IDB_UNDO, DCTRL_PUSH_BUTTON );
  331.    attach_help(editor_helpfile, dh.CursorSettings);
  332.    if(isWindows())
  333.       nbPagePrefix[pageid].help = "Cursor Settings";
  334.    else
  335.       nbPagePrefix[pageid].help = "cursorpage";
  336.    save_cursor_settings();
  337.    initialize_cursor_settings( dh.CursorSettings );
  338.    set_notebook_page_dialog(dlgid, pageid, dh.CursorSettings);
  339.    nbPagePrefix[pageid].dialog_handle = dh.CursorSettings;
  340. }
  341.  
  342. ########################## EDITOR PAGE #################################
  343. #  local undo_emulation_mode;
  344.  
  345. local function initialize_edit_settings( handle )
  346. {
  347.    local i
  348.    nb_initializing = TRUE;
  349.  
  350.    add_dialog_item( handle, IDB_ISPF_SETTINGS, DCTRL_PUSH_BUTTON )
  351.  
  352.    if(!key_bindings_set )
  353.    {                          
  354.       key_bindings_set = 1
  355.       
  356.       for (i in emulations)
  357.       {
  358.          if (function_id( i ))
  359.             set_dialog_item(handle, IDL_KEY_BINDINGS, DAC_ADD_ITEM, emulations[i])
  360.       }
  361.       
  362.       if (function_id( "ispf" ))
  363.       {
  364.          set_dialog_item(handle, IDB_ISPF_SETTINGS, DAC_DISABLE );
  365.       }
  366.       else
  367.          set_dialog_item(handle, IDB_ISPF_SETTINGS, DAC_HIDE );
  368.          
  369. #      if (function_id( "brief" ))
  370. #         set_dialog_item(handle, IDL_KEY_BINDINGS, DAC_ADD_ITEM, "Brief")
  371. #
  372. #      if (function_id( "cua" ))
  373. #         set_dialog_item(handle, IDL_KEY_BINDINGS, DAC_ADD_ITEM, "CUA")
  374. #
  375. #      if (function_id( "emacs" ))
  376. #         set_dialog_item(handle, IDL_KEY_BINDINGS, DAC_ADD_ITEM, "Emacs")
  377. #
  378. #      if (function_id( "ispf" ))
  379. #      {
  380. #         set_dialog_item(handle, IDL_KEY_BINDINGS, DAC_ADD_ITEM, "ISPF")
  381. #         set_dialog_item(handle, IDB_ISPF_SETTINGS, DAC_DISABLE );
  382. #      }
  383. #      else
  384. #         set_dialog_item(handle, IDB_ISPF_SETTINGS, DAC_HIDE );
  385. #
  386. #
  387. #      if (function_id( "native" ))
  388. #         set_dialog_item(handle, IDL_KEY_BINDINGS, DAC_ADD_ITEM, "Native")
  389. #
  390. #      if (function_id( "vi" ))
  391. #         set_dialog_item(handle, IDL_KEY_BINDINGS, DAC_ADD_ITEM, "vi")
  392.    }
  393.  
  394.    
  395.    set_dialog_item(handle, IDL_KEY_BINDINGS, DAC_SELECT_ITEM, emulations[emulation_mode])
  396.    
  397. #   if(emulation_mode == "cua" )
  398. #      set_dialog_item(handle, IDL_KEY_BINDINGS, DAC_SELECT_ITEM, "CUA")
  399. #
  400. #   else if(emulation_mode == "brief" )
  401. #      set_dialog_item(handle, IDL_KEY_BINDINGS, DAC_SELECT_ITEM, "Brief")
  402. #   
  403. #   else if(emulation_mode == "emacs" )
  404. #      set_dialog_item(handle, IDL_KEY_BINDINGS, DAC_SELECT_ITEM, "Emacs")
  405. #   
  406. #   else if(emulation_mode == "native" )
  407. #      set_dialog_item(handle, IDL_KEY_BINDINGS, DAC_SELECT_ITEM, "Native")
  408. #   
  409. #   else if(emulation_mode == "vi" )
  410. #      set_dialog_item(handle, IDL_KEY_BINDINGS, DAC_SELECT_ITEM, "vi")
  411. #   
  412. #   else if(emulation_mode == "ispf" )
  413. #   {
  414. #      set_dialog_item(handle, IDB_ISPF_SETTINGS, DAC_ENABLE );
  415. #      set_dialog_item(handle, IDL_KEY_BINDINGS, DAC_SELECT_ITEM, "ISPF")
  416. #   }
  417.  
  418.    nb_initializing = FALSE;
  419. }
  420.  
  421. global function nop_settings_callback()
  422. {
  423.    if (callback_msg == DM_CANCEL )
  424.       return DRC_MSG_PROCESSED;
  425.    else if(callback_msg == DM_HELPREQUESTED)
  426.       display_help(nbPagePrefix[current_nb_page].help, callback_dialog_handle);
  427.  
  428.    return DRC_CONTINUE
  429. }
  430.  
  431. global function edit_settings_callback()
  432. {
  433.    local ret_val, return_msg = DRC_CONTINUE;
  434.    local handle = callback_dialog_handle
  435.  
  436. #   enable_undo( callback_dialog_handle, callback_index )
  437.  
  438.    if( callback_msg == DM_HELPREQUESTED)
  439.    {
  440.       display_help(nbPagePrefix[current_nb_page].help, callback_dialog_handle);
  441.       return_msg = DRC_MSG_PROCESSED
  442.    }
  443.  
  444.    else if(callback_msg == DM_CANCEL )
  445.    {
  446.       nbPagePrefix[current_nb_page].modified = FALSE;
  447.       return_msg = DRC_MSG_PROCESSED
  448.    }
  449.    else if((callback_msg == DM_CLICK) || (callback_msg == DM_DOUBLE_CLICK) )
  450.    {
  451.       if ( callback_index == IDB_ISPF_SETTINGS )
  452.       {
  453.          optional_function("create_ispf_page", handle )
  454.          nbPagePrefix[current_nb_page].modified = FALSE;
  455.          return_msg = DRC_MSG_PROCESSED
  456.       }
  457.       else
  458.       {
  459.          enable_undo(handle, callback_index);
  460.          return_msg = DRC_MSG_PROCESSED;
  461.  
  462.          if(callback_index == IDB_UNDO)
  463.          {
  464.             nbPagePrefix[current_nb_page].modified = FALSE;
  465.             initialize_edit_settings(handle)
  466.          }
  467.          else if(callback_index == IDB_DEFAULT  ) 
  468.          {
  469.             nbPagePrefix[current_nb_page].modified = TRUE;
  470.             default_edit_settings(handle)
  471.          }
  472.       }
  473.    }
  474.    else if(callback_msg == DM_SELECT )
  475.    {
  476.       enable_undo(handle, callback_index);
  477.       if ( query_dialog_item( handle, IDL_KEY_BINDINGS, DAC_SELECT_ITEM) == "ISPF" )
  478.          set_dialog_item(handle, IDB_ISPF_SETTINGS, DAC_ENABLE );
  479.       else
  480.          set_dialog_item(handle, IDB_ISPF_SETTINGS, DAC_DISABLE );
  481.  
  482.       nbPagePrefix[current_nb_page].modified = TRUE;
  483.       return_msg = DRC_MSG_PROCESSED
  484.    }
  485.  
  486.    return return_msg;
  487. }
  488.  
  489. ########################## SAVE PAGE #################################
  490. #local undo_save_state;
  491. #local undo_save_flags
  492. #local undo_autosave_time;
  493. #local undo_backup_files_enabled;
  494. #local undo_autosave;
  495. local function initialize_save_settings( handle )
  496. {
  497.    nb_initializing = TRUE;
  498.  
  499.    set_dialog_item( handle, IDE_AUTOSAVE_DELAY, DAC_SPIN_LIMITS, 1, 360 )
  500.    set_dialog_item( handle, IDE_AUTOSAVE_DELAY, DAC_SPIN_VALUE, autosave_time/60)
  501.    
  502.    if(autosave_active() )
  503.    {
  504.       set_dialog_item( handle, IDC_AUTOSAVE,       DAC_CHECK)
  505.       set_dialog_item( handle, IDE_AUTOSAVE_DELAY, DAC_ENABLE)
  506.    }
  507.    else
  508.    {
  509.       set_dialog_item( handle, IDC_AUTOSAVE,       DAC_UNCHECK)
  510.       set_dialog_item( handle, IDE_AUTOSAVE_DELAY, DAC_DISABLE)
  511.    }
  512.  
  513.    if(and( save_flags, SAVE_DIRECTORY) )
  514.       set_dialog_item( handle, IDC_SAVE_DIRECTORY, DAC_CHECK)
  515.    else
  516.       set_dialog_item( handle, IDC_SAVE_DIRECTORY, DAC_UNCHECK)
  517.  
  518.    if(save_state )
  519.    {
  520.       set_dialog_item( handle, IDC_SAVE_STATE,     DAC_CHECK)
  521.       set_dialog_item( handle, IDC_SAVE_DIRECTORY, DAC_ENABLE)
  522.    }
  523.    else
  524.    {
  525.       set_dialog_item( handle, IDC_SAVE_STATE,     DAC_UNCHECK)
  526.       set_dialog_item( handle, IDC_SAVE_DIRECTORY, DAC_DISABLE)
  527.    }
  528.  
  529.    if(and( save_flags, SAVE_SETTINGS ) )
  530.       set_dialog_item( handle, IDC_SAVE_SETTINGS, DAC_CHECK)
  531.    else
  532.       set_dialog_item( handle, IDC_SAVE_SETTINGS, DAC_UNCHECK)
  533.  
  534.    if(and( save_flags, SAVE_SEARCH) )
  535.       set_dialog_item( handle, IDC_SAVE_SEARCH, DAC_CHECK)
  536.    else
  537.       set_dialog_item( handle, IDC_SAVE_SEARCH, DAC_UNCHECK)
  538.  
  539.    if(and( save_flags, SAVE_COMMANDS) )
  540.       set_dialog_item( handle, IDC_SAVE_COMMANDS, DAC_CHECK)
  541.    else
  542.       set_dialog_item( handle, IDC_SAVE_COMMANDS, DAC_UNCHECK)
  543.  
  544.    if(backup_files_enabled )
  545.       set_dialog_item( handle, IDC_BACKUP_FILES, DAC_CHECK)
  546.    else
  547.       set_dialog_item( handle, IDC_BACKUP_FILES, DAC_UNCHECK)
  548.  
  549.    nb_initializing = FALSE
  550. }
  551.  
  552. global function save_settings_callback()
  553. {
  554.    local ret_val = DRC_CONTINUE
  555.    local is_checked = FALSE
  556.    local bit = 0
  557.  
  558.    enable_undo( callback_dialog_handle, callback_index )
  559.  
  560.    if(nb_initializing)
  561.       return DRC_MSG_PROCESSED
  562.  
  563.    if( callback_msg == DM_HELPREQUESTED)
  564.    {
  565.       display_help(nbPagePrefix[current_nb_page].help, callback_dialog_handle);
  566.       return DRC_MSG_PROCESSED
  567.    }
  568.  
  569.    if(callback_msg == DM_CANCEL )
  570.    {
  571.       nbPagePrefix[current_nb_page].modified = FALSE;
  572.       return DRC_MSG_PROCESSED
  573.    }
  574.    else if((callback_msg == DM_CLICK) || (callback_msg == DM_DOUBLE_CLICK) )
  575.    {
  576.       if(callback_index == IDB_UNDO  ) 
  577.       {
  578.          nbPagePrefix[current_nb_page].modified = FALSE;
  579.          initialize_save_settings(callback_dialog_handle)
  580.          return DRC_MSG_PROCESSED
  581.       }
  582.       else if(callback_index == IDB_DEFAULT )
  583.       {
  584.          nbPagePrefix[current_nb_page].modified = TRUE;
  585.          default_save_settings(callback_dialog_handle)
  586.          return DRC_MSG_PROCESSED
  587.       }
  588.       else if(callback_index == IDE_AUTOSAVE_DELAY )
  589.       {
  590.          nbPagePrefix[current_nb_page].modified = TRUE;
  591.          return DRC_MSG_PROCESSED
  592.       }
  593.  
  594.       is_checked = query_dialog_item( callback_dialog_handle, callback_index, DAC_CHECK )
  595.  
  596.       if(callback_index == IDC_AUTOSAVE )
  597.       {
  598.          if(is_checked )
  599.          {
  600.             set_dialog_item( callback_dialog_handle, IDE_AUTOSAVE_DELAY, DAC_ENABLE )
  601.          }
  602.          else
  603.          {
  604.             set_dialog_item( callback_dialog_handle, IDE_AUTOSAVE_DELAY, DAC_DISABLE )
  605.          }
  606.          nbPagePrefix[current_nb_page].modified = TRUE;
  607.          ret_val = DRC_MSG_PROCESSED
  608.       }
  609.       else if(callback_index == IDC_SAVE_STATE )
  610.       {
  611.          if(is_checked )
  612.             set_dialog_item( callback_dialog_handle, IDC_SAVE_DIRECTORY,
  613.                                                      DAC_ENABLE)
  614.          else
  615.             set_dialog_item( callback_dialog_handle, IDC_SAVE_DIRECTORY,
  616.                                                      DAC_DISABLE)
  617.          nbPagePrefix[current_nb_page].modified = TRUE;
  618.          ret_val = DRC_MSG_PROCESSED
  619.       }
  620.    }
  621.    else if ( callback_msg == DM_SPIN_CHANGE )
  622.    {
  623.       if ( callback_index == IDE_AUTOSAVE_DELAY )
  624.       {
  625.          # validate the value the user entered
  626.          query_dialog_item( callback_dialog_handle, IDE_AUTOSAVE_DELAY, DAC_SPIN_VALUE )
  627.          nbPagePrefix[current_nb_page].modified = TRUE;
  628.       }
  629.    }
  630.  
  631.    return ret_val
  632. }
  633.  
  634. ########################## SEARCH PAGE #################################
  635. #local undo_search_flags;
  636. #local undo_word_delimiter;
  637. local function initialize_search_settings( handle )
  638. {
  639.    nb_initializing = TRUE;
  640.  
  641.    if(and( search_flags, SEARCH_FORWARD) )
  642.       set_dialog_item( handle, IDC_SEARCH_FORWARD, DAC_CHECK)
  643.    else
  644.       set_dialog_item( handle, IDC_SEARCH_FORWARD, DAC_UNCHECK)
  645.    
  646.    if(and( search_flags, SEARCH_WHOLE_WORD) )
  647.       set_dialog_item( handle, IDC_SEARCH_WORD, DAC_CHECK)
  648.    else
  649.       set_dialog_item( handle, IDC_SEARCH_WORD, DAC_UNCHECK)
  650.    
  651.    if(and( search_flags, SEARCH_MAXIMAL_MATCH) )
  652.       set_dialog_item( handle, IDC_SEARCH_MAX_MATCH, DAC_CHECK)
  653.    else
  654.       set_dialog_item( handle, IDC_SEARCH_MAX_MATCH, DAC_UNCHECK)
  655.    
  656.    if(and( search_flags, SEARCH_REGEX) )
  657.       {
  658.       set_dialog_item( handle, IDC_SEARCH_REGEX, DAC_CHECK)
  659.       set_dialog_item( handle, IDC_SEARCH_MAX_MATCH, DAC_ENABLE)
  660.       }
  661.    else
  662.       {
  663.       set_dialog_item( handle, IDC_SEARCH_REGEX, DAC_UNCHECK)
  664.       set_dialog_item( handle, IDC_SEARCH_MAX_MATCH, DAC_DISABLE)
  665.       }
  666.    
  667.    if(and( search_flags, SEARCH_CASE) )
  668.       set_dialog_item( handle, IDC_SEARCH_CASE, DAC_CHECK)
  669.    else
  670.       set_dialog_item( handle, IDC_SEARCH_CASE, DAC_UNCHECK)
  671.    
  672.    if(and( search_flags, SEARCH_WRAPS) )
  673.       set_dialog_item( handle, IDC_SEARCH_WRAP, DAC_CHECK)
  674.    else
  675.       set_dialog_item( handle, IDC_SEARCH_WRAP, DAC_UNCHECK)
  676.    
  677.    if(and( search_flags, SEARCH_HIGHLIGHT) )
  678.       set_dialog_item( handle, IDC_SEARCH_HIGHLIGHT, DAC_CHECK)
  679.    else
  680.       set_dialog_item( handle, IDC_SEARCH_HIGHLIGHT, DAC_UNCHECK)
  681.    
  682.    if(and( search_flags, SEARCH_CENTER_CURSOR) )
  683.       set_dialog_item( handle, IDC_SEARCH_CENTER, DAC_CHECK)
  684.    else
  685.       set_dialog_item( handle, IDC_SEARCH_CENTER, DAC_UNCHECK)
  686.  
  687.    set_dialog_item( handle, IDE_WORD_DELIMITER, DAC_EDIT_TEXT,
  688.                      word_delimiter)
  689.  
  690.    set_dialog_item(handle, IDE_WORD_DELIMITER, DAC_SET_TEXT_LEN, 256);
  691.    
  692.    nb_initializing = FALSE
  693. }
  694.  
  695. global function search_settings_callback()
  696. {
  697.    local ret_val, check, new_val;
  698.  
  699.    enable_undo( callback_dialog_handle, callback_index )
  700.    if(callback_msg == DM_HELPREQUESTED)
  701.    {
  702.       display_help(nbPagePrefix[current_nb_page].help, callback_dialog_handle);
  703.       return DRC_MSG_PROCESSED
  704.    }
  705.  
  706.    if(callback_msg == DM_CANCEL )
  707.    {
  708.       nbPagePrefix[current_nb_page].modified = FALSE;
  709.       return DRC_MSG_PROCESSED
  710.    }
  711.  
  712.    else if((callback_msg == DM_CLICK) || (callback_msg == DM_DOUBLE_CLICK) )
  713.    {
  714.       if(callback_index == IDB_UNDO  ) 
  715.       {   
  716.          nbPagePrefix[current_nb_page].modified = FALSE;
  717.          initialize_search_settings(callback_dialog_handle)
  718.          return DRC_MSG_PROCESSED
  719.       }
  720.       else if(callback_index == IDB_DEFAULT  ) 
  721.       {   
  722.          nbPagePrefix[current_nb_page].modified = TRUE;
  723.          default_search_settings(callback_dialog_handle)
  724.          return DRC_MSG_PROCESSED
  725.       }
  726.       else if(callback_index == IDC_SEARCH_REGEX )
  727.       {
  728.          nbPagePrefix[current_nb_page].modified = TRUE;
  729.          ret_val = query_dialog_item( callback_dialog_handle, callback_index, DAC_CHECK) 
  730.          check = ret_val ? DAC_ENABLE : DAC_DISABLE
  731.          set_dialog_item(callback_dialog_handle, IDC_SEARCH_MAX_MATCH, check)
  732.       }
  733.       else
  734.       {
  735.          nbPagePrefix[current_nb_page].modified = TRUE;
  736.       }
  737.       return DRC_MSG_PROCESSED
  738.    }
  739.  
  740.    return DRC_CONTINUE
  741. }
  742.  
  743. ########################## STATUS BAR PAGE 1 #################################
  744. local function initialize_stb1_settings( handle )
  745. {
  746.    nb_initializing = TRUE
  747.  
  748.    if(and( status_bar_flags, STB_MESSAGES) )
  749.       set_dialog_item( handle, IDC_STB_MESSAGE, DAC_CHECK)
  750.    else
  751.       set_dialog_item( handle, IDC_STB_MESSAGE, DAC_UNCHECK)
  752.    
  753.    if(and( status_bar_flags, STB_PROMPTS) )
  754.       set_dialog_item( handle, IDC_STB_PROMPT, DAC_CHECK)
  755.    else                                         
  756.       set_dialog_item( handle, IDC_STB_PROMPT, DAC_UNCHECK)
  757.    
  758.    if(and( status_bar_flags, STB_LINE) )
  759.       set_dialog_item( handle, IDC_STB_LINE, DAC_CHECK)
  760.    else
  761.       set_dialog_item( handle, IDC_STB_LINE, DAC_UNCHECK)
  762.       
  763.    if(and( status_bar_flags, STB_COLUMN) )
  764.       set_dialog_item( handle, IDC_STB_COLUMN, DAC_CHECK)
  765.    else
  766.       set_dialog_item( handle, IDC_STB_COLUMN, DAC_UNCHECK)
  767.       
  768.    if(and( status_bar_flags, STB_LAST_LINE) )
  769.       set_dialog_item( handle, IDC_STB_LAST_LINE, DAC_CHECK)
  770.    else
  771.       set_dialog_item( handle, IDC_STB_LAST_LINE, DAC_UNCHECK)
  772.       
  773.    if(and( status_bar_flags, STB_OFFSET) )
  774.       set_dialog_item( handle, IDC_STB_BUFFER_OFFSET, DAC_CHECK)
  775.    else
  776.       set_dialog_item( handle, IDC_STB_BUFFER_OFFSET, DAC_UNCHECK)
  777.       
  778.    if(and( status_bar_flags, STB_DYNA_SIZE) )
  779.       set_dialog_item( handle, IDC_STB_DYNA_SIZE, DAC_CHECK)
  780.    else
  781.       set_dialog_item( handle, IDC_STB_DYNA_SIZE, DAC_UNCHECK)
  782.       
  783.    if(and( status_bar_flags, STB_EMULATION) )
  784.       set_dialog_item( handle, IDC_STB_EMULATION, DAC_CHECK)
  785.    else
  786.       set_dialog_item( handle, IDC_STB_EMULATION, DAC_UNCHECK)
  787.    
  788.    if(and( status_bar_flags, STB_INDICATORS) ) 
  789.       set_dialog_item( handle, IDC_STB_INDICATOR, DAC_CHECK)
  790.    else 
  791.       set_dialog_item( handle, IDC_STB_INDICATOR, DAC_UNCHECK)
  792.       
  793.    if(and( status_bar_flags, STB_DATE) )
  794.       set_dialog_item( handle, IDC_STB_DATE, DAC_CHECK)
  795.    else
  796.       set_dialog_item( handle, IDC_STB_DATE, DAC_UNCHECK)
  797.    
  798.    if(and( status_bar_flags, STB_DAYOFWEEK) )
  799.       set_dialog_item( handle, IDC_STB_DOW, DAC_CHECK)
  800.    else
  801.       set_dialog_item( handle, IDC_STB_DOW, DAC_UNCHECK)
  802.    
  803.    set_dialog_item( handle, IDR_STB_TIME24, DAC_UNCHECK)
  804.    set_dialog_item( handle, IDR_STB_TIME12, DAC_UNCHECK)
  805.    
  806.    if(and( status_bar_flags, STB_TIME12) ) 
  807.       set_dialog_item( handle, IDR_STB_TIME12, DAC_CHECK)
  808.    else if(and( status_bar_flags, STB_TIME24) ) 
  809.       set_dialog_item( handle, IDR_STB_TIME24, DAC_CHECK)
  810.    
  811.    if(and( status_bar_flags, STB_TIME ) )
  812.    {
  813.       set_dialog_item( handle, IDC_STB_TIME, DAC_CHECK)
  814.       set_dialog_item( handle, IDR_STB_TIME24, DAC_ENABLE)
  815.       set_dialog_item( handle, IDR_STB_TIME12, DAC_ENABLE)
  816.    }
  817.    else
  818.    {
  819.       set_dialog_item( handle, IDC_STB_TIME, DAC_UNCHECK)
  820.       set_dialog_item( handle, IDR_STB_TIME24, DAC_DISABLE)
  821.       set_dialog_item( handle, IDR_STB_TIME12, DAC_DISABLE)
  822.    }        
  823.  
  824.    nb_initializing = FALSE
  825. }
  826.  
  827. global function stb1_settings_callback()
  828. {
  829.    local ret_val;
  830.    
  831.    enable_undo( callback_dialog_handle, callback_index )
  832.    if(callback_msg == DM_HELPREQUESTED)
  833.    {
  834.       display_help(nbPagePrefix[current_nb_page].help, callback_dialog_handle);
  835.       return DRC_MSG_PROCESSED
  836.    }
  837.    if(callback_msg == DM_CANCEL )
  838.    {
  839.       nbPagePrefix[current_nb_page].modified = FALSE;
  840.       return DRC_MSG_PROCESSED
  841.    }
  842.  
  843.    else if((callback_msg == DM_CLICK) || (callback_msg == DM_DOUBLE_CLICK) )
  844.    {
  845.       if(callback_index == IDB_UNDO  ) 
  846.       {
  847.          nbPagePrefix[current_nb_page].modified = FALSE;
  848.          initialize_stb1_settings(callback_dialog_handle)
  849.          return DRC_MSG_PROCESSED
  850.       }
  851.       else if(callback_index == IDB_DEFAULT  ) 
  852.       {
  853.          nbPagePrefix[current_nb_page].modified = TRUE;
  854.          default_stb1_settings(callback_dialog_handle)
  855.          return DRC_MSG_PROCESSED
  856.       }
  857.  
  858.       else if(callback_index == IDC_STB_TIME )
  859.       {
  860.          nbPagePrefix[current_nb_page].modified = TRUE;
  861.          ret_val = query_dialog_item( callback_dialog_handle, callback_index, DAC_CHECK ) 
  862.          if(ret_val) 
  863.          {
  864.             set_dialog_item( callback_dialog_handle, IDR_STB_TIME24, DAC_ENABLE)
  865.             set_dialog_item( callback_dialog_handle, IDR_STB_TIME12, DAC_ENABLE)
  866.             set_dialog_item( callback_dialog_handle, IDR_STB_TIME12, DAC_CHECK);
  867.             #  set_dialog_item( callback_dialog_handle, IDC_STB_TIME, DAC_CHECK)
  868.          } 
  869.          else 
  870.          {
  871.             #  status_bar_flags = and(status_bar_flags, not(STB_TIME) )
  872.             set_dialog_item( callback_dialog_handle, IDR_STB_TIME24, DAC_DISABLE)
  873.             set_dialog_item( callback_dialog_handle, IDR_STB_TIME12, DAC_DISABLE)
  874.             #  set_dialog_item( callback_dialog_handle, IDR_STB_TIME24, DAC_UNCHECK)
  875.             #  set_dialog_item( callback_dialog_handle, IDC_STB_TIME, DAC_UNCHECK)
  876.          }
  877.       }
  878.       else
  879.       {
  880.          nbPagePrefix[current_nb_page].modified = TRUE;
  881.       }
  882. #      else if(callback_index == IDR_STB_TIME12 )
  883. #      {
  884. #         set_dialog_item( callback_dialog_handle, IDR_STB_TIME12, DAC_CHECK)
  885. #         set_dialog_item( callback_dialog_handle, IDR_STB_TIME24, DAC_UNCHECK)
  886. #      }
  887. #      else if(callback_index == IDR_STB_TIME24 )
  888. #      {
  889. #         set_dialog_item( callback_dialog_handle, IDR_STB_TIME24, DAC_CHECK)
  890. #         set_dialog_item( callback_dialog_handle, IDR_STB_TIME12, DAC_UNCHECK)
  891. #      }
  892.      return DRC_MSG_PROCESSED
  893.    }
  894.    return DRC_CONTINUE
  895. }
  896.  
  897. ########################## STATUS BAR PAGE 2 #################################
  898. #local undo_message_level;
  899.  
  900. local function initialize_stb2_settings( handle )
  901. {
  902.    nb_initializing = TRUE;
  903.  
  904.    if(and( status_bar_flags, STB_PAUSEONERR) )
  905.       set_dialog_item( handle, IDC_STB_POE, DAC_CHECK);
  906.    else
  907.       set_dialog_item( handle, IDC_STB_POE, DAC_UNCHECK);
  908.  
  909.    set_dialog_item( handle, IDR_STB_LEVEL0, DAC_UNCHECK)
  910.    set_dialog_item( handle, IDR_STB_LEVEL1, DAC_UNCHECK)
  911.    set_dialog_item( handle, IDR_STB_LEVEL2, DAC_UNCHECK)
  912.    set_dialog_item( handle, IDR_STB_LEVEL3, DAC_UNCHECK)
  913.    
  914.    if(message_level == 0 )
  915.       set_dialog_item( handle, IDR_STB_LEVEL0, DAC_CHECK);
  916.    else if(message_level == 1 )
  917.       set_dialog_item( handle, IDR_STB_LEVEL1, DAC_CHECK);
  918.    else if(message_level == 2 )
  919.       set_dialog_item( handle, IDR_STB_LEVEL2, DAC_CHECK);
  920.    else if(message_level == 3 )
  921.       set_dialog_item( handle, IDR_STB_LEVEL3, DAC_CHECK);
  922.  
  923.    nb_initializing = FALSE;
  924. }
  925.  
  926. global function stb2_settings_callback()
  927. {
  928.    local ret_val
  929.    
  930.    enable_undo( callback_dialog_handle, callback_index )
  931.    if(callback_msg == DM_HELPREQUESTED)
  932.    {   
  933.       display_help(nbPagePrefix[current_nb_page].help, callback_dialog_handle);
  934.       return DRC_MSG_PROCESSED
  935.    }
  936.    else if(callback_msg == DM_CANCEL )
  937.    {
  938.       nbPagePrefix[current_nb_page].modified = FALSE;
  939.       return DRC_MSG_PROCESSED
  940.    }
  941.  
  942.    else if((callback_msg == DM_CLICK) || (callback_msg == DM_DOUBLE_CLICK) )
  943.    {
  944.       #  ret_val = query_dialog_item( callback_dialog_handle, callback_index, DAC_CHECK ) 
  945.       if(callback_index == IDB_UNDO  ) 
  946.       {   
  947.          nbPagePrefix[current_nb_page].modified = FALSE;
  948.          initialize_stb2_settings(callback_dialog_handle)
  949.          return DRC_MSG_PROCESSED
  950.       }
  951.       else if(callback_index == IDB_DEFAULT  ) 
  952.       {   
  953.          nbPagePrefix[current_nb_page].modified = TRUE;
  954.          default_stb2_settings(callback_dialog_handle)
  955.          return DRC_MSG_PROCESSED
  956.       }
  957.       else if(callback_index == IDR_STB_LEVEL0 || callback_index == IDR_STB_LEVEL1 || \
  958.                callback_index == IDR_STB_LEVEL2 || callback_index == IDR_STB_LEVEL3 )
  959.       {
  960.          nbPagePrefix[current_nb_page].modified = TRUE;
  961.          nop();
  962.       }
  963.       else
  964.          nbPagePrefix[current_nb_page].modified = TRUE;
  965.          
  966.       return DRC_MSG_PROCESSED
  967.    }
  968.  
  969.    return DRC_CONTINUE
  970. }
  971.    
  972. ########################## DIRECTORIES PAGE #################################
  973. local function initialize_dir_settings( handle )
  974. {  
  975.    nb_initializing = TRUE
  976.  
  977.    set_dialog_item( handle, IDE_BACKUP_DIR, DAC_EDIT_TEXT,
  978.                      backup_directory "")
  979.    set_dialog_item( handle, IDE_BACKUP_DIR, DAC_SET_TEXT_LEN, 256);
  980.    set_dialog_item( handle, IDE_TAGS_PATH, DAC_SET_TEXT_LEN, 256 )
  981.    set_dialog_item( handle, IDE_TAGS_PATH, DAC_EDIT_TEXT, tags_path "")
  982.    nb_initializing = FALSE;
  983. }
  984.  
  985. global function directories_settings_callback()
  986. {  
  987.    local new_val
  988.  
  989.    enable_undo( callback_dialog_handle, callback_index )
  990.  
  991.    if(nb_initializing)
  992.       return DRC_MSG_PROCESSED;
  993.  
  994.    if(callback_msg == DM_HELPREQUESTED)
  995.    {
  996.       display_help(nbPagePrefix[current_nb_page].help, callback_dialog_handle);
  997.       return DRC_MSG_PROCESSED
  998.    }
  999.  
  1000.    if(callback_msg == DM_CANCEL )
  1001.    {
  1002.       nbPagePrefix[current_nb_page].modified = FALSE;
  1003.       return DRC_MSG_PROCESSED
  1004.    }
  1005.    else if(callback_msg == DM_CLICK )
  1006.    {
  1007.       if(callback_index == IDB_UNDO  ) 
  1008.       {
  1009.          nbPagePrefix[current_nb_page].modified = FALSE;
  1010.          initialize_dir_settings(callback_dialog_handle)
  1011.          return DRC_MSG_PROCESSED
  1012.       }
  1013.       else if  ( callback_index == IDB_DEFAULT )
  1014.       {
  1015.          nbPagePrefix[current_nb_page].modified = TRUE;
  1016.          default_dir_settings(callback_dialog_handle)
  1017.          return DRC_MSG_PROCESSED
  1018.       }
  1019. #      else
  1020. #      {
  1021. #         nbPagePrefix[current_nb_page].modified = TRUE;
  1022. #         return DRC_MSG_PROCESSED
  1023. #      }
  1024.    }
  1025.    else if(callback_msg == DM_KILL_FOCUS)
  1026.    {
  1027.       if((callback_index == IDE_BACKUP_DIR) || (callback_index == IDE_TAGS_PATH))
  1028.       {
  1029.          nbPagePrefix[current_nb_page].modified = TRUE;
  1030.          return DRC_MSG_PROCESSED
  1031.       }
  1032.    }
  1033.  
  1034.    return DRC_CONTINUE
  1035. }
  1036.  
  1037. ########################## CURSOR PAGE #################################
  1038. local function initialize_cursor_settings( handle )
  1039. {
  1040.    nb_initializing = TRUE;
  1041.  
  1042.    set_dialog_item(handle, IDL_TYPE,     DAC_SORT_ASCENDING);
  1043.    set_dialog_item(handle, IDL_TYPE, DAC_ADD_ITEM, NORMAL);
  1044.    set_dialog_item(handle, IDL_TYPE, DAC_ADD_ITEM, OVERTYPE);
  1045.    set_dialog_item(handle, IDL_TYPE, DAC_ADD_ITEM, VIRTUAL);
  1046.    set_dialog_item(handle, IDL_TYPE, DAC_ADD_ITEM, VOVERTYPE);
  1047.  
  1048.    add_dialog_item(handle, IDE_CURSOR_WIDTH,  DCTRL_SPINBUTTON);
  1049.    add_dialog_item(handle, IDE_CURSOR_HEIGHT, DCTRL_SPINBUTTON);
  1050.    set_dialog_item(handle, IDE_CURSOR_WIDTH,  DAC_SPIN_LIMITS, 0, 100);
  1051.    set_dialog_item(handle, IDE_CURSOR_HEIGHT, DAC_SPIN_LIMITS, 0, 100);
  1052.  
  1053.    set_dialog_item(handle, IDL_TYPE, DAC_SELECT_ITEM, NORMAL);
  1054.    set_dialog_item(handle, IDL_TYPE, DAC_TEXT, NORMAL);
  1055.    nb_initializing = FALSE;
  1056. }
  1057.  
  1058. global function cursor_settings_callback()
  1059. {
  1060.    local cur_num, width, height, value;
  1061.    local handle = callback_dialog_handle;
  1062.    local ret_msg = DRC_CONTINUE;
  1063.  
  1064.    enable_undo( callback_dialog_handle, callback_index )
  1065.    if(callback_msg == DM_HELPREQUESTED)
  1066.    {
  1067.       display_help(nbPagePrefix[current_nb_page].help, callback_dialog_handle);
  1068.       ret_msg = DRC_MSG_PROCESSED
  1069.    }
  1070.    else if(nb_initializing)
  1071.       ret_msg = DRC_MSG_PROCESSED;
  1072.    else if(callback_msg == DM_CANCEL )
  1073.    {
  1074.       nbPagePrefix[current_nb_page].modified = FALSE;
  1075.       ret_msg = DRC_MSG_PROCESSED
  1076.    }
  1077.    else if(callback_msg == DM_CLICK )
  1078.    {
  1079.       if(callback_index == IDB_UNDO  ) 
  1080.       {
  1081.          undo_cursor_settings(local_cur_text)
  1082.          set_dialog_item(handle, IDL_TYPE, DAC_DESELECT_ITEM, local_cur_text);
  1083.          set_dialog_item(handle, IDL_TYPE, DAC_SELECT_ITEM, local_cur_text);
  1084.          ret_msg = DRC_MSG_PROCESSED
  1085.       }
  1086.       else if (callback_index == IDB_DEFAULT )
  1087.       {
  1088.          nbPagePrefix[current_nb_page].modified = TRUE;
  1089.          default_cursor_settings(callback_dialog_handle, local_cur_text)
  1090.          ret_msg = DRC_MSG_PROCESSED
  1091.       }
  1092.       else if(callback_index == IDC_CURSOR_GRAY)
  1093.       {
  1094.          nbPagePrefix[current_nb_page].modified = TRUE;
  1095.          value = query_dialog_item(handle, IDC_CURSOR_GRAY, DAC_CHECK) ? 1 : 0;
  1096.          set_cursor(handle, 2, value);
  1097.          ret_msg = DRC_MSG_PROCESSED;
  1098.       }
  1099.       else if(callback_index == IDR_CURSOR_HORIZONTAL)
  1100.       {
  1101.          if((local_cur_text == NORMAL) || (local_cur_text == VIRTUAL))
  1102.          {
  1103.             set_dialog_item(handle, IDE_CURSOR_WIDTH,  DAC_SPIN_VALUE, 0);
  1104.             set_dialog_item(handle, IDE_CURSOR_HEIGHT, DAC_SPIN_VALUE, 3);
  1105.          }
  1106.          else
  1107.          {
  1108.             set_dialog_item(handle, IDE_CURSOR_WIDTH,  DAC_SPIN_VALUE, 0);
  1109.             set_dialog_item(handle, IDE_CURSOR_HEIGHT, DAC_SPIN_VALUE, 6);
  1110.          }
  1111.          set_dialog_item(handle, IDE_CURSOR_WIDTH,  DAC_DISABLE);
  1112.          set_dialog_item(handle, IDE_CURSOR_HEIGHT, DAC_DISABLE);
  1113.          ret_msg = DRC_MSG_PROCESSED;
  1114.       }
  1115.       else if(callback_index == IDR_CURSOR_VERTICAL)
  1116.       {
  1117.          if((local_cur_text == NORMAL) || (local_cur_text == VIRTUAL))
  1118.          {
  1119.             set_dialog_item(handle, IDE_CURSOR_WIDTH,  DAC_SPIN_VALUE, 2);
  1120.             set_dialog_item(handle, IDE_CURSOR_HEIGHT, DAC_SPIN_VALUE, 0);
  1121.          }
  1122.          else
  1123.          {
  1124.             set_dialog_item(handle, IDE_CURSOR_WIDTH,  DAC_SPIN_VALUE, 0);
  1125.             set_dialog_item(handle, IDE_CURSOR_HEIGHT, DAC_SPIN_VALUE, 0);
  1126.          }
  1127.          set_dialog_item(handle, IDE_CURSOR_WIDTH,  DAC_DISABLE);
  1128.          set_dialog_item(handle, IDE_CURSOR_HEIGHT, DAC_DISABLE);
  1129.  
  1130.          ret_msg = DRC_MSG_PROCESSED;
  1131.       }
  1132.       else if(callback_index == IDR_CURSOR_CUSTOM)
  1133.       {
  1134.          set_dialog_item(handle, IDE_CURSOR_WIDTH,  DAC_ENABLE);
  1135.          set_dialog_item(handle, IDE_CURSOR_HEIGHT, DAC_ENABLE);
  1136.          set_dialog_item(handle, IDC_CURSOR_GRAY,   DAC_ENABLE);
  1137.          ret_msg = DRC_MSG_PROCESSED;
  1138.       }
  1139.    }
  1140.    if(callback_msg == DM_SELECT)
  1141.    {
  1142.       if(callback_index == IDL_TYPE)
  1143.       {
  1144.          local_cur_text = query_dialog_item(handle, IDL_TYPE, DAC_SELECT_ITEM);
  1145.          if(local_cur_text == NORMAL)
  1146.             cur_num = cursor_normal;
  1147.          else if(local_cur_text == OVERTYPE)
  1148.             cur_num = cursor_overtype;
  1149.          else if(local_cur_text == VIRTUAL)
  1150.             cur_num = cursor_virtual;
  1151.          else if(local_cur_text == VOVERTYPE)
  1152.             cur_num = cursor_virtual_overtype;
  1153.  
  1154.          width  = shiftr(and(cur_num, 0xff00), 8);
  1155.          height = and(cur_num, 0xff);
  1156.          width  = (width  == 0xff) ? 0 : width;
  1157.          height = (height == 0xff) ? 0 : height; 
  1158.  
  1159.          set_dialog_item(handle, IDE_CURSOR_WIDTH,  DAC_SPIN_VALUE, width);
  1160.          set_dialog_item(handle, IDE_CURSOR_HEIGHT, DAC_SPIN_VALUE, height);
  1161.          if((width == 0) && (height == 3) && ((local_cur_text == NORMAL) || (local_cur_text == VIRTUAL)))
  1162.          {
  1163.             set_dialog_item(handle, IDR_CURSOR_HORIZONTAL, DAC_CHECK);
  1164.             set_dialog_item(handle, IDR_CURSOR_VERTICAL,   DAC_UNCHECK);
  1165.             set_dialog_item(handle, IDR_CURSOR_CUSTOM,     DAC_UNCHECK);
  1166.             set_dialog_item(handle, IDE_CURSOR_WIDTH,  DAC_DISABLE);
  1167.             set_dialog_item(handle, IDE_CURSOR_HEIGHT, DAC_DISABLE);
  1168.          }
  1169.          else if((width == 2) && (height == 0) && ((local_cur_text == NORMAL) || (local_cur_text == VIRTUAL)))
  1170.          {
  1171.             set_dialog_item(handle, IDR_CURSOR_HORIZONTAL, DAC_UNCHECK);
  1172.             set_dialog_item(handle, IDR_CURSOR_VERTICAL,   DAC_CHECK);
  1173.             set_dialog_item(handle, IDR_CURSOR_CUSTOM,     DAC_UNCHECK);
  1174.             set_dialog_item(handle, IDE_CURSOR_WIDTH,  DAC_DISABLE);
  1175.             set_dialog_item(handle, IDE_CURSOR_HEIGHT, DAC_DISABLE);
  1176.          }
  1177.          else if((width == 0) && (height == 6) && ((local_cur_text == OVERTYPE) || (local_cur_text == VOVERTYPE)))
  1178.          {
  1179.             set_dialog_item(handle, IDR_CURSOR_HORIZONTAL, DAC_CHECK);
  1180.             set_dialog_item(handle, IDR_CURSOR_VERTICAL,   DAC_UNCHECK);
  1181.             set_dialog_item(handle, IDR_CURSOR_CUSTOM,     DAC_UNCHECK);
  1182.             set_dialog_item(handle, IDE_CURSOR_WIDTH,  DAC_DISABLE);
  1183.             set_dialog_item(handle, IDE_CURSOR_HEIGHT, DAC_DISABLE);
  1184.          }
  1185.          else if((width == 0) && (height == 0) && ((local_cur_text == OVERTYPE) || (local_cur_text == VOVERTYPE)))
  1186.          {
  1187.             set_dialog_item(handle, IDR_CURSOR_HORIZONTAL, DAC_UNCHECK);
  1188.             set_dialog_item(handle, IDR_CURSOR_VERTICAL,   DAC_CHECK);
  1189.             set_dialog_item(handle, IDR_CURSOR_CUSTOM,     DAC_UNCHECK);
  1190.             set_dialog_item(handle, IDE_CURSOR_WIDTH,  DAC_DISABLE);
  1191.             set_dialog_item(handle, IDE_CURSOR_HEIGHT, DAC_DISABLE);
  1192.          }
  1193.          else
  1194.          {
  1195.             set_dialog_item(handle, IDR_CURSOR_HORIZONTAL, DAC_UNCHECK);
  1196.             set_dialog_item(handle, IDR_CURSOR_VERTICAL,   DAC_UNCHECK);
  1197.             set_dialog_item(handle, IDR_CURSOR_CUSTOM,     DAC_CHECK);
  1198.             set_dialog_item(handle, IDE_CURSOR_WIDTH,  DAC_ENABLE);
  1199.             set_dialog_item(handle, IDE_CURSOR_HEIGHT, DAC_ENABLE);
  1200.          }
  1201.          if(and(cur_num, 0x10000))
  1202.             set_dialog_item(handle, IDC_CURSOR_GRAY, DAC_CHECK);
  1203.          else
  1204.             set_dialog_item(handle, IDC_CURSOR_GRAY, DAC_UNCHECK);
  1205.  
  1206.          ret_msg = DRC_MSG_PROCESSED;
  1207.       }
  1208.    }
  1209.    else if ( callback_msg == DM_SPIN_CHANGE )
  1210.    {
  1211.       nbPagePrefix[current_nb_page].modified = TRUE;
  1212.       # validate the value the user entered
  1213.       value = query_dialog_item(handle, callback_index, DAC_SPIN_VALUE);
  1214.       if(callback_index == IDE_CURSOR_WIDTH)
  1215.          set_cursor(handle, 0, value);
  1216.       else if(callback_index == IDE_CURSOR_HEIGHT)
  1217.          set_cursor(handle, 1, value);
  1218.  
  1219.       ret_msg = DRC_MSG_PROCESSED;
  1220.    }
  1221.  
  1222.    return ret_msg;
  1223. }
  1224.  
  1225. local function set_cursor(handle, type, value)
  1226. {
  1227.    local mask, cur_num, save;
  1228.  
  1229.    if(local_cur_text == NORMAL)
  1230.       cur_num = cursor_normal;
  1231.    else if(local_cur_text == OVERTYPE)
  1232.       cur_num = cursor_overtype;
  1233.    else if(local_cur_text == VIRTUAL)
  1234.       cur_num = cursor_virtual;
  1235.    else if(local_cur_text == VOVERTYPE)
  1236.       cur_num = cursor_virtual_overtype;
  1237.  
  1238.    if(type == 0)
  1239.    {
  1240.       mask = 0xff00;
  1241.       value = (value == 0) ? 0xff : value;
  1242.       value = shiftl(value, 8);
  1243.    }
  1244.    else if(type == 1)
  1245.    {
  1246.       value = (value == 0) ? 0xff : value;
  1247.       mask = 0xff;
  1248.    }
  1249.    else if(type == 2)
  1250.    {
  1251.       mask = 0x10000;
  1252.       value = shiftl(value, 16);
  1253.    }
  1254.    cur_num = set_flag_bits(cur_num, mask, value);
  1255.  
  1256.    #  cvdebug(sprintf("setting %s to %x", local_cur_text, cur_num));
  1257.    #  Update cursor variable
  1258.    if(local_cur_text == NORMAL)
  1259.       cursor_normal = cur_num;
  1260.    else if(local_cur_text == OVERTYPE)
  1261.       cursor_overtype = cur_num;
  1262.    else if(local_cur_text == VIRTUAL)
  1263.       cursor_virtual = cur_num;
  1264.    else if(local_cur_text == VOVERTYPE)
  1265.       cursor_virtual_overtype = cur_num;
  1266. }
  1267.  
  1268. local function save_cursor_settings()
  1269. {
  1270.    save_normal           = cursor_normal;
  1271.    save_overtype         = cursor_overtype;
  1272.    save_virtual          = cursor_virtual;
  1273.    save_virtual_overtype = cursor_virtual_overtype;
  1274. }
  1275.  
  1276. global function undo_cursor_settings(cursor_name)
  1277. {
  1278.    local doit = FALSE, page;
  1279.  
  1280.    if(cursor_name == "all")
  1281.    {
  1282.       for(page in nbPagePrefix)
  1283.       {
  1284.          if((nbPagePrefix[page].name == "cursor") && (nbPagePrefix[page].dialog_handle))
  1285.          {
  1286.             doit = TRUE;
  1287.             break;
  1288.          }
  1289.       }
  1290.    }
  1291.  
  1292.    if((cursor_name == NORMAL) || doit)
  1293.       cursor_normal = save_normal; 
  1294.    if((cursor_name == OVERTYPE) || doit)
  1295.       cursor_overtype = save_overtype; 
  1296.    if((cursor_name == VIRTUAL) || doit)
  1297.       cursor_virtual = save_virtual;
  1298.    if((cursor_name == VOVERTYPE) || doit)
  1299.       cursor_virtual_overtype = save_virtual_overtype;
  1300. }
  1301.  
  1302. ########################## EDITOR SETTINGS NOTEBOOK #################################
  1303. global function assign_edithelp_changes(dlgid)
  1304. {
  1305.    nop();
  1306. }
  1307.  
  1308. global function assign_edit_changes(dlgid)
  1309. {
  1310.    local new_emulation;
  1311.    local i;
  1312.  
  1313.    new_emulation = query_dialog_item(dlgid, IDL_KEY_BINDINGS, DAC_SELECT_ITEM);
  1314.  
  1315.    for (i in emulations)
  1316.       if( (emulations[i] == new_emulation) && (emulation_mode != i) )
  1317.          optional_function(i)
  1318.    
  1319. #   if(new_emulation == "CUA" && (emulation_mode != "cua") )
  1320. #      optional_function("cua")
  1321. #      
  1322. #   else if((new_emulation == "Brief") && (emulation_mode != "brief") )
  1323. #      optional_function("brief")
  1324. #   
  1325. #   else if((new_emulation == "Emacs") && (emulation_mode != "emacs") )
  1326. #      optional_function("emacs")
  1327. #   
  1328. #   else if((new_emulation == "Native") && (emulation_mode != "native") )
  1329. #      optional_function("native")
  1330. #   
  1331. #   else if((new_emulation == "vi") && (emulation_mode != "vi") )
  1332. #      optional_function("vi")
  1333. #   
  1334. #   else if((new_emulation == "ISPF") && (emulation_mode != "ispf") )
  1335. #      optional_function("ispf")
  1336. }
  1337.  
  1338. global function assign_save_changes(dlgid)
  1339. {
  1340.    save_state           = query_dialog_item(dlgid, IDC_SAVE_STATE,     DAC_CHECK);
  1341.    backup_files_enabled = query_dialog_item(dlgid, IDC_BACKUP_FILES,   DAC_CHECK);
  1342.    autosave_time        = query_dialog_item(dlgid, IDE_AUTOSAVE_DELAY, DAC_SPIN_VALUE) * 60;
  1343.  
  1344.    if(query_dialog_item(dlgid, IDC_AUTOSAVE, DAC_CHECK))
  1345.       autosave(autosave_time);
  1346.    else
  1347.       autosave(0);
  1348.  
  1349.    if(query_dialog_item(dlgid, IDC_SAVE_SETTINGS, DAC_CHECK))
  1350.       save_flags = set_flag_bits(save_flags, SAVE_SETTINGS, SAVE_SETTINGS);
  1351.    else
  1352.       save_flags = set_flag_bits(save_flags, SAVE_SETTINGS, FALSE);
  1353.  
  1354.    if(query_dialog_item(dlgid, IDC_SAVE_SEARCH, DAC_CHECK))
  1355.       save_flags = set_flag_bits(save_flags, SAVE_SEARCH, SAVE_SEARCH);
  1356.    else
  1357.       save_flags = set_flag_bits(save_flags, SAVE_SEARCH, FALSE);
  1358.  
  1359.    if(query_dialog_item(dlgid, IDC_SAVE_COMMANDS, DAC_CHECK))
  1360.       save_flags = set_flag_bits(save_flags, SAVE_COMMANDS, SAVE_COMMANDS);
  1361.    else
  1362.       save_flags = set_flag_bits(save_flags, SAVE_COMMANDS, FALSE);
  1363.  
  1364.    if(query_dialog_item(dlgid, IDC_SAVE_DIRECTORY, DAC_CHECK))
  1365.       save_flags = set_flag_bits(save_flags, SAVE_DIRECTORY, SAVE_DIRECTORY);
  1366.    else
  1367.       save_flags = set_flag_bits(save_flags, SAVE_DIRECTORY, FALSE);
  1368. }
  1369.  
  1370. global function assign_search_changes(dlgid)
  1371. {
  1372.    toggle_search_flags(SEARCH_FORWARD,       query_dialog_item(dlgid, IDC_SEARCH_FORWARD,   DAC_CHECK));
  1373.    toggle_search_flags(SEARCH_WHOLE_WORD,    query_dialog_item(dlgid, IDC_SEARCH_WORD,      DAC_CHECK));
  1374.    toggle_search_flags(SEARCH_REGEX,         query_dialog_item(dlgid, IDC_SEARCH_REGEX,     DAC_CHECK));
  1375.    toggle_search_flags(SEARCH_MAXIMAL_MATCH, query_dialog_item(dlgid, IDC_SEARCH_MAX_MATCH, DAC_CHECK));
  1376.    toggle_search_flags(SEARCH_HIGHLIGHT,     query_dialog_item(dlgid, IDC_SEARCH_HIGHLIGHT, DAC_CHECK));
  1377.    toggle_search_flags(SEARCH_CENTER_CURSOR, query_dialog_item(dlgid, IDC_SEARCH_CENTER,    DAC_CHECK));
  1378.    toggle_search_flags(SEARCH_CASE,          query_dialog_item(dlgid, IDC_SEARCH_CASE,      DAC_CHECK));
  1379.    toggle_search_flags(SEARCH_WRAPS,         query_dialog_item(dlgid, IDC_SEARCH_WRAP,      DAC_CHECK));
  1380.  
  1381.    word_delimiter = query_dialog_item(dlgid, IDE_WORD_DELIMITER, DAC_EDIT_TEXT);
  1382. }
  1383.  
  1384. global function assign_stb1_changes(dlgid)
  1385. {
  1386.    local first = current_window, s_flags;
  1387.  
  1388.    local flags_on = 0
  1389.    
  1390.    if (query_dialog_item(dlgid, IDC_STB_MESSAGE, DAC_CHECK) )
  1391.       flags_on += STB_MESSAGES
  1392.    if (query_dialog_item(dlgid, IDC_STB_PROMPT, DAC_CHECK))
  1393.       flags_on += STB_PROMPTS
  1394.    if (query_dialog_item(dlgid, IDC_STB_LINE, DAC_CHECK))
  1395.       flags_on += STB_LINE
  1396.    if (query_dialog_item(dlgid, IDC_STB_COLUMN, DAC_CHECK))
  1397.       flags_on += STB_COLUMN
  1398.    if (query_dialog_item(dlgid, IDC_STB_LAST_LINE, DAC_CHECK))
  1399.       flags_on += STB_LAST_LINE
  1400.    if (query_dialog_item(dlgid, IDC_STB_BUFFER_OFFSET, DAC_CHECK))
  1401.       flags_on += STB_OFFSET
  1402.    if (query_dialog_item(dlgid, IDC_STB_DYNA_SIZE, DAC_CHECK))
  1403.       flags_on += STB_DYNA_SIZE
  1404.    if (query_dialog_item(dlgid, IDC_STB_INDICATOR, DAC_CHECK))
  1405.       flags_on += STB_INDICATORS
  1406.    if (query_dialog_item(dlgid, IDC_STB_EMULATION, DAC_CHECK))
  1407.       flags_on += STB_EMULATION
  1408.    if (query_dialog_item(dlgid, IDC_STB_DOW, DAC_CHECK))
  1409.       flags_on += STB_DAYOFWEEK
  1410.    if (query_dialog_item(dlgid, IDC_STB_DATE, DAC_CHECK))
  1411.       flags_on += STB_DATE
  1412.    
  1413.    if(query_dialog_item(dlgid, IDC_STB_TIME, DAC_CHECK))
  1414.       if(query_dialog_item(dlgid, IDR_STB_TIME24, DAC_CHECK))
  1415.          flags_on += STB_TIME24
  1416.       else
  1417.          flags_on += STB_TIME12
  1418.  
  1419.    status_bar_flags = set_flag_bits(status_bar_flags, STB_MASK1, flags_on)
  1420.     
  1421.    idle()
  1422.    
  1423.    if(mdi_mode == 2)
  1424.    {
  1425.       s_flags = status_bar_flags;
  1426.       if(first)
  1427.       {
  1428.          do
  1429.          {
  1430.             current_window = next_window("", 0, 1);
  1431.             if(!and(window_flags, WINDOW_ASCII_DUMP))
  1432.                status_bar_flags = s_flags;
  1433.          } while(current_window != first);
  1434.       }
  1435.    }
  1436. }
  1437.  
  1438. global function assign_stb2_changes(dlgid)
  1439. {
  1440.    local ret_val;
  1441.    
  1442.    ret_val = query_dialog_item(dlgid, IDC_STB_POE, DAC_CHECK);
  1443.    toggle_pause(ret_val);
  1444.  
  1445.    if(query_dialog_item(dlgid, IDR_STB_LEVEL0, DAC_CHECK))
  1446.       message_level = 0;
  1447.    else if(query_dialog_item(dlgid, IDR_STB_LEVEL1, DAC_CHECK))
  1448.       message_level = 1;
  1449.    else if(query_dialog_item(dlgid, IDR_STB_LEVEL2, DAC_CHECK))
  1450.       message_level = 2;
  1451.    else if(query_dialog_item(dlgid, IDR_STB_LEVEL3, DAC_CHECK))
  1452.       message_level = 3;
  1453. }
  1454.  
  1455. global function assign_dir_changes(dlgid)
  1456. {
  1457.    backup_directory = query_dialog_item(dlgid, IDE_BACKUP_DIR, DAC_EDIT_TEXT);
  1458.    tags_path        = query_dialog_item(dlgid, IDE_TAGS_PATH,  DAC_EDIT_TEXT);
  1459. }
  1460.  
  1461. global function assign_cursor_changes(dlgid)
  1462. {
  1463. }
  1464.  
  1465. global function default_edit_settings(handle)
  1466. {
  1467.    nb_initializing = TRUE;
  1468.  
  1469.    set_dialog_item(handle, IDL_KEY_BINDINGS, DAC_SELECT_ITEM, "CUA");
  1470.  
  1471.    nb_initializing = FALSE;
  1472. }
  1473.  
  1474.  
  1475. global function default_save_settings(handle)
  1476. {
  1477.    local def_sav_flags = SAVE_DEFAULT;
  1478.  
  1479.    nb_initializing = TRUE;
  1480.  
  1481.    set_dialog_item(handle, IDE_AUTOSAVE_DELAY, DAC_SPIN_VALUE, 1);
  1482.    set_dialog_item(handle, IDC_AUTOSAVE,       DAC_UNCHECK);
  1483.    set_dialog_item(handle, IDE_AUTOSAVE_DELAY, DAC_DISABLE);
  1484.    set_dialog_item(handle, IDC_SAVE_STATE,     DAC_CHECK);
  1485.    set_dialog_item(handle, IDC_SAVE_DIRECTORY, DAC_ENABLE);
  1486.    set_dialog_item(handle, IDC_BACKUP_FILES,   DAC_UNCHECK);
  1487.  
  1488.    if(and(def_sav_flags, SAVE_DIRECTORY))
  1489.       set_dialog_item( handle, IDC_SAVE_DIRECTORY, DAC_CHECK);
  1490.    else
  1491.       set_dialog_item( handle, IDC_SAVE_DIRECTORY, DAC_UNCHECK);
  1492.  
  1493.    if(and( def_sav_flags, SAVE_SETTINGS ) )
  1494.       set_dialog_item( handle, IDC_SAVE_SETTINGS, DAC_CHECK);
  1495.    else
  1496.       set_dialog_item( handle, IDC_SAVE_SETTINGS, DAC_UNCHECK);
  1497.  
  1498.    if(and( def_sav_flags, SAVE_SEARCH) )
  1499.       set_dialog_item( handle, IDC_SAVE_SEARCH, DAC_CHECK);
  1500.    else
  1501.       set_dialog_item( handle, IDC_SAVE_SEARCH, DAC_UNCHECK);
  1502.  
  1503.    if(and( def_sav_flags, SAVE_COMMANDS) )
  1504.       set_dialog_item( handle, IDC_SAVE_COMMANDS, DAC_CHECK);
  1505.    else
  1506.       set_dialog_item( handle, IDC_SAVE_COMMANDS, DAC_UNCHECK);
  1507.  
  1508.    nb_initializing = FALSE
  1509. }
  1510.  
  1511.  
  1512. global function default_search_settings(handle)
  1513. {
  1514.    local def_search_flags   = SEARCH_DEFAULT;
  1515.  
  1516.    nb_initializing = TRUE;
  1517.  
  1518.    set_dialog_item( handle, IDE_WORD_DELIMITER, DAC_EDIT_TEXT, default_word_delimiter)
  1519.  
  1520.    if(and(def_search_flags, SEARCH_FORWARD) )
  1521.       set_dialog_item( handle, IDC_SEARCH_FORWARD, DAC_CHECK)
  1522.    else
  1523.       set_dialog_item( handle, IDC_SEARCH_FORWARD, DAC_UNCHECK)
  1524.    
  1525.    if(and(def_search_flags, SEARCH_WHOLE_WORD) )
  1526.       set_dialog_item( handle, IDC_SEARCH_WORD, DAC_CHECK)
  1527.    else
  1528.       set_dialog_item( handle, IDC_SEARCH_WORD, DAC_UNCHECK)
  1529.    
  1530.    if(and(def_search_flags, SEARCH_MAXIMAL_MATCH) )
  1531.       set_dialog_item( handle, IDC_SEARCH_MAX_MATCH, DAC_CHECK)
  1532.    else
  1533.       set_dialog_item( handle, IDC_SEARCH_MAX_MATCH, DAC_UNCHECK)
  1534.    
  1535.    if(and(def_search_flags, SEARCH_REGEX) )
  1536.    {
  1537.       set_dialog_item( handle, IDC_SEARCH_REGEX, DAC_CHECK)
  1538.       set_dialog_item( handle, IDC_SEARCH_MAX_MATCH, DAC_ENABLE)
  1539.    }
  1540.    else
  1541.    {
  1542.       set_dialog_item( handle, IDC_SEARCH_REGEX, DAC_UNCHECK)
  1543.       set_dialog_item( handle, IDC_SEARCH_MAX_MATCH, DAC_DISABLE)
  1544.    }
  1545.    
  1546.    if(and(def_search_flags, SEARCH_CASE) )
  1547.       set_dialog_item( handle, IDC_SEARCH_CASE, DAC_CHECK)
  1548.    else
  1549.       set_dialog_item( handle, IDC_SEARCH_CASE, DAC_UNCHECK)
  1550.    
  1551.    if(and(def_search_flags, SEARCH_WRAPS) )
  1552.       set_dialog_item( handle, IDC_SEARCH_WRAP, DAC_CHECK)
  1553.    else
  1554.       set_dialog_item( handle, IDC_SEARCH_WRAP, DAC_UNCHECK)
  1555.  
  1556.    if(and(def_search_flags, SEARCH_HIGHLIGHT) )
  1557.       set_dialog_item( handle, IDC_SEARCH_HIGHLIGHT, DAC_CHECK)
  1558.    else
  1559.       set_dialog_item( handle, IDC_SEARCH_HIGHLIGHT, DAC_UNCHECK)
  1560.  
  1561.    if(and(def_search_flags, SEARCH_CENTER_CURSOR) )
  1562.       set_dialog_item( handle, IDC_SEARCH_CENTER, DAC_CHECK)
  1563.    else
  1564.       set_dialog_item( handle, IDC_SEARCH_CENTER, DAC_UNCHECK)
  1565.  
  1566.    nb_initializing = FALSE
  1567. }
  1568.  
  1569.  
  1570. global function default_dir_settings(handle)
  1571. {
  1572.    nb_initializing = TRUE
  1573.  
  1574.    set_dialog_item( handle, IDE_BACKUP_DIR, DAC_EDIT_TEXT, "" );
  1575.    set_dialog_item( handle, IDE_TAGS_PATH, DAC_EDIT_TEXT, "")
  1576.  
  1577.    nb_initializing = FALSE;
  1578. }
  1579.  
  1580. global function default_cursor_settings(handle, cursor_name)
  1581. {
  1582.    local width = 0, height, gray = 1;
  1583.  
  1584.    nb_initializing = TRUE
  1585.  
  1586.    if((cursor_name == NORMAL) || (cursor_name == VIRTUAL))
  1587.    {
  1588.       height = 3;
  1589.       if(cursor_name == NORMAL)
  1590.          gray = 0;
  1591.    }
  1592.    else if((cursor_name == OVERTYPE) || (cursor_name == VOVERTYPE))
  1593.    {
  1594.       height = 6;
  1595.       if(cursor_name == OVERTYPE)
  1596.          gray = 0;
  1597.    }
  1598.    set_dialog_item(handle, IDR_CURSOR_VERTICAL, DAC_UNCHECK);
  1599.    set_dialog_item(handle, IDR_CURSOR_HORIZONTAL, DAC_CHECK);
  1600.    set_dialog_item(handle, IDR_CURSOR_CUSTOM, DAC_UNCHECK);
  1601.  
  1602.    set_dialog_item(handle, IDE_CURSOR_WIDTH,  DAC_SPIN_VALUE, width);
  1603.    set_dialog_item(handle, IDE_CURSOR_HEIGHT, DAC_SPIN_VALUE, height);
  1604.    set_dialog_item(handle, IDE_CURSOR_WIDTH,  DAC_DISABLE);
  1605.    set_dialog_item(handle, IDE_CURSOR_HEIGHT, DAC_DISABLE);
  1606.  
  1607.    if(gray)
  1608.       set_dialog_item(handle, IDC_CURSOR_GRAY, DAC_CHECK);
  1609.    else
  1610.       set_dialog_item(handle, IDC_CURSOR_GRAY, DAC_UNCHECK);
  1611.  
  1612.    set_cursor(handle, 2, gray);
  1613.  
  1614.    nb_initializing = FALSE;
  1615. }
  1616.  
  1617. global function default_stb1_settings(handle)
  1618. {
  1619.    local def_stb_flags = STB_DEFAULT;
  1620.  
  1621.    nb_initializing = TRUE
  1622.    
  1623.    if(and(def_stb_flags, STB_MESSAGES) )
  1624.       set_dialog_item( handle, IDC_STB_MESSAGE, DAC_CHECK)
  1625.    else
  1626.       set_dialog_item( handle, IDC_STB_MESSAGE, DAC_UNCHECK)
  1627.    
  1628.    if(and(def_stb_flags, STB_PROMPTS) )
  1629.       set_dialog_item( handle, IDC_STB_PROMPT, DAC_CHECK)
  1630.    else                                         
  1631.       set_dialog_item( handle, IDC_STB_PROMPT, DAC_UNCHECK)
  1632.    
  1633.    if(and(def_stb_flags, STB_LINE) )
  1634.       set_dialog_item( handle, IDC_STB_LINE, DAC_CHECK)
  1635.    else
  1636.       set_dialog_item( handle, IDC_STB_LINE, DAC_UNCHECK)
  1637.  
  1638.    if(and(def_stb_flags, STB_COLUMN) )
  1639.       set_dialog_item( handle, IDC_STB_COLUMN, DAC_CHECK)
  1640.    else
  1641.       set_dialog_item( handle, IDC_STB_COLUMN, DAC_UNCHECK)
  1642.  
  1643.    if(and(def_stb_flags, STB_LAST_LINE) )
  1644.       set_dialog_item( handle, IDC_STB_LAST_LINE, DAC_CHECK)
  1645.    else
  1646.       set_dialog_item( handle, IDC_STB_LAST_LINE, DAC_UNCHECK)
  1647.  
  1648.    if(and(def_stb_flags, STB_OFFSET) )
  1649.       set_dialog_item( handle, IDC_STB_BUFFER_OFFSET, DAC_CHECK)
  1650.    else
  1651.       set_dialog_item( handle, IDC_STB_BUFFER_OFFSET, DAC_UNCHECK)
  1652.  
  1653.    if(and(def_stb_flags, STB_DYNA_SIZE) )
  1654.       set_dialog_item( handle, IDC_STB_DYNA_SIZE, DAC_CHECK)
  1655.    else
  1656.       set_dialog_item( handle, IDC_STB_DYNA_SIZE, DAC_UNCHECK)
  1657.       
  1658.    if(and(def_stb_flags, STB_EMULATION) )
  1659.       set_dialog_item( handle, IDC_STB_EMULATION, DAC_CHECK)
  1660.    else
  1661.       set_dialog_item( handle, IDC_STB_EMULATION, DAC_UNCHECK)
  1662.    
  1663.    if(and(def_stb_flags, STB_INDICATORS) ) 
  1664.       set_dialog_item( handle, IDC_STB_INDICATOR, DAC_CHECK)
  1665.    else 
  1666.       set_dialog_item( handle, IDC_STB_INDICATOR, DAC_UNCHECK)
  1667.       
  1668.    if(and(def_stb_flags, STB_DATE) )
  1669.       set_dialog_item( handle, IDC_STB_DATE, DAC_CHECK)
  1670.    else
  1671.       set_dialog_item( handle, IDC_STB_DATE, DAC_UNCHECK)
  1672.    
  1673.    if(and(def_stb_flags, STB_DAYOFWEEK) )
  1674.       set_dialog_item( handle, IDC_STB_DOW, DAC_CHECK)
  1675.    else
  1676.       set_dialog_item( handle, IDC_STB_DOW, DAC_UNCHECK)
  1677.    
  1678.    set_dialog_item( handle, IDR_STB_TIME24, DAC_UNCHECK)
  1679.    set_dialog_item( handle, IDR_STB_TIME12, DAC_UNCHECK)
  1680.    
  1681.    if(and(def_stb_flags, STB_TIME12) ) 
  1682.       set_dialog_item( handle, IDR_STB_TIME12, DAC_CHECK)
  1683.    else if(and(def_stb_flags, STB_TIME24) ) 
  1684.       set_dialog_item( handle, IDR_STB_TIME24, DAC_CHECK)
  1685.    
  1686.    if(and(def_stb_flags, STB_TIME ) ) {
  1687.       set_dialog_item( handle, IDC_STB_TIME, DAC_CHECK)
  1688.       set_dialog_item( handle, IDR_STB_TIME24, DAC_ENABLE)
  1689.       set_dialog_item( handle, IDR_STB_TIME12, DAC_ENABLE)
  1690.    }
  1691.    else {
  1692.       set_dialog_item( handle, IDC_STB_TIME, DAC_UNCHECK)
  1693.       set_dialog_item( handle, IDR_STB_TIME24, DAC_DISABLE)
  1694.       set_dialog_item( handle, IDR_STB_TIME12, DAC_DISABLE)
  1695.    }        
  1696.  
  1697.    nb_initializing = FALSE
  1698. }
  1699.  
  1700. global function default_stb2_settings(handle)
  1701. {
  1702.    local def_stb_flags = STB_DEFAULT;
  1703.  
  1704.    nb_initializing = TRUE;
  1705.  
  1706.    if(and(def_stb_flags, STB_PAUSEONERR) )
  1707.       set_dialog_item(handle, IDC_STB_POE, DAC_CHECK);
  1708.    else
  1709.       set_dialog_item(handle, IDC_STB_POE, DAC_UNCHECK);
  1710.  
  1711.    set_dialog_item(handle, IDR_STB_LEVEL0, DAC_UNCHECK)
  1712.    set_dialog_item(handle, IDR_STB_LEVEL1, DAC_UNCHECK)
  1713.    set_dialog_item(handle, IDR_STB_LEVEL2, DAC_UNCHECK)
  1714.    set_dialog_item(handle, IDR_STB_LEVEL3, DAC_UNCHECK)
  1715.  
  1716.    set_dialog_item(handle, IDR_STB_LEVEL0, DAC_CHECK);
  1717.  
  1718.    nb_initializing = FALSE;
  1719. }
  1720.  
  1721. local function quick_settings_save(handle)
  1722. {
  1723.    local i
  1724.    local start_buff = current_buffer
  1725.    local start_win = current_window
  1726.    local selected_emulation = query_dialog_item(handle, IDQ.EMULATION, DAC_SELECT_ITEM)
  1727.    local prompts, dyna, expand, expand_templates, linenums
  1728.    
  1729.    # set emulation
  1730.       for (i in emulations)
  1731.          if (emulations[i] == selected_emulation)
  1732.             {
  1733.             if (emulation_mode != i)
  1734.                optional_function(i)
  1735.             break
  1736.             }
  1737.    
  1738.    # cursor
  1739.       if ( query_dialog_item(handle, IDQ.CURSOR_VERT, DAC_CHECK) )
  1740.          cursor_normal = default_vert
  1741.       else if ( query_dialog_item(handle, IDQ.CURSOR_HORZ, DAC_CHECK) )
  1742.          cursor_normal = default_horz
  1743.  
  1744.    # status bar
  1745.       prompts = query_dialog_item(handle, IDQ.SBAR_PROMPTS, DAC_CHECK) * STB_PROMPTS 
  1746.       dyna = query_dialog_item(handle, IDQ.SBAR_DYNASIZE, DAC_CHECK) * STB_DYNA_SIZE
  1747.       
  1748.       start_win = current_window
  1749.       do
  1750.       {
  1751.          if ( and(status_bar_flags, STB_PROMPTS) != prompts)
  1752.             status_bar_flags = set_flag_bits(status_bar_flags, STB_PROMPTS, prompts)
  1753.          if ( and(status_bar_flags, STB_DYNA_SIZE) != dyna)
  1754.             status_bar_flags = set_flag_bits(status_bar_flags, STB_DYNA_SIZE, dyna)
  1755.       } while (mdi_mode == 2 && next_window("", 1, 1) != start_win)
  1756.          
  1757.                                                 
  1758.    # save options
  1759.       backup_files_enabled = query_dialog_item(handle, IDQ.SAVE_BACKUP, DAC_CHECK)
  1760.          
  1761.       if (!!autosave_active() != query_dialog_item(handle, IDQ.SAVE_AUTOSAVE, DAC_CHECK) )
  1762.          if (query_dialog_item(handle, IDQ.SAVE_AUTOSAVE, DAC_CHECK) )
  1763.             autosave(autosave_time)
  1764.          else
  1765.             autosave(0)
  1766.          
  1767.    # window misc
  1768.       linenums = query_dialog_item(handle, IDQ.WINDOW_LINENUMS, DAC_CHECK)
  1769.       if ( linenums )
  1770.          default_linenumber_format = nominal_linenumber_format
  1771.       else
  1772.          default_linenumber_format = ""
  1773.          
  1774.       default_window_flags = set_flag_bits(default_window_flags, WINDOW_HORIZ_SB,
  1775.          query_dialog_item(handle, IDQ.WINDOW_HORZ, DAC_CHECK) * WINDOW_HORIZ_SB) 
  1776.       default_window_flags = set_flag_bits(default_window_flags, WINDOW_VERT_SB,
  1777.          query_dialog_item(handle, IDQ.WINDOW_VERT, DAC_CHECK) * WINDOW_VERT_SB) 
  1778.                   
  1779.       start_win = current_window
  1780.       do
  1781.       {
  1782.       if ( !(linenumber_format == "") != linenums)
  1783.          toggle_linenumbers(linenums)
  1784.          
  1785.       if ( !!and(window_flags, WINDOW_HORIZ_SB) != query_dialog_item(handle, IDQ.WINDOW_HORZ, DAC_CHECK) )
  1786.          toggle_win_hscroll(query_dialog_item(handle, IDQ.WINDOW_HORZ, DAC_CHECK))
  1787.          
  1788.       if ( !!and(window_flags, WINDOW_VERT_SB) != query_dialog_item(handle, IDQ.WINDOW_VERT, DAC_CHECK) )
  1789.          toggle_win_vscroll(query_dialog_item(handle, IDQ.WINDOW_VERT, DAC_CHECK))
  1790.       } while (next_window("", 1, 1) != start_win)
  1791.          
  1792.    # types
  1793.       for (i in modified_types)
  1794.       {
  1795.          validate_ext_list(i, modified_types[i])
  1796.          language_modified++
  1797.       }
  1798.        
  1799.    # buffer flags
  1800.       default_syntax_highlight = query_dialog_item(handle, IDQ.BUFF_COLOR, DAC_CHECK)
  1801.       expand = query_dialog_item(handle, IDQ.BUFF_EXPAND, DAC_CHECK) * BUFFER_EXPAND_TABS
  1802.       default_buffer_flags = set_flag_bits(default_buffer_flags, BUFFER_EXPAND_TABS, expand)
  1803.    # template expansion
  1804.       expand_templates = query_dialog_item(handle, IDQ.TYPES_TEMPLATE, DAC_CHECK)
  1805.       default_auto_indent_mode = query_dialog_item(handle, IDQ.BUFF_INDENT, DAC_CHECK)
  1806.       toggle_electric(expand_templates)
  1807.       toggle_auto_indent(default_auto_indent_mode)
  1808.                                                   
  1809.       start_buff = current_buffer
  1810.       do
  1811.       {
  1812.          electric_mode = expand_templates
  1813.          syntax_highlight = default_syntax_highlight
  1814.          auto_indent_mode = default_auto_indent_mode
  1815.          buffer_flags = set_flag_bits(buffer_flags, BUFFER_EXPAND_TABS, expand)
  1816.       } while (next_buffer("", 1, 1) != start_buff)
  1817.       
  1818.       for (i in languages)
  1819.       {
  1820.          if (and(BufferFlags(i), BUFFER_EXPAND_TABS) != expand)
  1821.          {
  1822.             set_buffer_flags(i, set_flag_bits(BufferFlags(i), BUFFER_EXPAND_TABS, expand) )
  1823.             language_modified++
  1824.          }
  1825.          
  1826.          if ( AutoIndent(i) != default_auto_indent_mode)
  1827.          {
  1828.             set_auto_indent(i, default_auto_indent_mode)
  1829.             language_modified++
  1830.          }
  1831.          
  1832.          if ( get_expand_template(i) != expand_templates)
  1833.          {
  1834.             set_expand_template(i, expand_templates)
  1835.             language_modified++
  1836.          }
  1837.          
  1838.          if ( Syntax(i) != default_syntax_highlight)
  1839.          {
  1840.             set_syntax(i, default_syntax_highlight)
  1841.             language_modified++
  1842.          }
  1843.       }
  1844.       
  1845.    # window mode
  1846.       if (query_dialog_item(handle, IDQ.WINDOW_SINGLE, DAC_CHECK) )
  1847.          new_mdi_mode = 0
  1848.       else
  1849.       {
  1850.          if (query_dialog_item(handle, IDQ.WINDOW_MULT, DAC_CHECK) )
  1851.             new_mdi_mode = 1
  1852.          else
  1853.             new_mdi_mode = 2
  1854.          
  1855.          new_one_buff = query_dialog_item(handle, IDQ.WINDOW_ONEBUFF, DAC_CHECK)
  1856.       }                     
  1857. }        
  1858.  
  1859.  
  1860. local function quick_settings_init(handle)
  1861. {
  1862.    local i
  1863.    local width, height
  1864.    local cur_type
  1865.    
  1866.    # add emulations
  1867.       if ( !(emulation_mode in emulations) )
  1868.          if (emulation_mode)
  1869.             emulations[emulation_mode] = emulation_mode
  1870.             
  1871.       for (i in emulations)
  1872.          if (function_id( i ))
  1873.             set_dialog_item(handle, IDQ.EMULATION, DAC_ADD_ITEM, emulations[i])
  1874.             
  1875.       if ( emulation_mode in emulations )
  1876.          set_dialog_item(handle, IDQ.EMULATION, DAC_SELECT_ITEM, emulations[emulation_mode])
  1877.    
  1878.    # cursor
  1879.       if ( cursor_normal == default_vert )
  1880.          set_dialog_item(handle, IDQ.CURSOR_VERT, DAC_CHECK);
  1881.       else if (cursor_normal == default_horz)
  1882.          set_dialog_item(handle, IDQ.CURSOR_HORZ, DAC_CHECK);
  1883.       else
  1884.       {
  1885.          set_dialog_item(handle, IDQ.CURSOR_HORZ, DAC_DISABLE);
  1886.          set_dialog_item(handle, IDQ.CURSOR_VERT, DAC_DISABLE);
  1887.       }
  1888.  
  1889.    # status bar
  1890.       if (and(status_bar_flags, STB_PROMPTS))
  1891.          set_dialog_item(handle, IDQ.SBAR_PROMPTS, DAC_CHECK);
  1892.       if (and(status_bar_flags, STB_DYNA_SIZE))
  1893.          set_dialog_item(handle, IDQ.SBAR_DYNASIZE, DAC_CHECK);
  1894.    
  1895.    # save options
  1896.       if (backup_files_enabled)
  1897.          set_dialog_item(handle, IDQ.SAVE_BACKUP, DAC_CHECK);
  1898.       if (autosave_active())
  1899.          set_dialog_item(handle, IDQ.SAVE_AUTOSAVE, DAC_CHECK);
  1900.    
  1901.    # window mode
  1902.       if (mdi_mode == 0)
  1903.       {
  1904.          set_dialog_item(handle, IDQ.WINDOW_SINGLE, DAC_CHECK);
  1905.          set_dialog_item(handle, IDQ.WINDOW_ONEBUFF, DAC_DISABLE);
  1906.       }
  1907.       else if (mdi_mode == 1)
  1908.          set_dialog_item(handle, IDQ.WINDOW_MULT, DAC_CHECK);
  1909.       else
  1910.          set_dialog_item(handle, IDQ.WINDOW_DETACHED, DAC_CHECK);
  1911.          
  1912.       if (create_new_bufwin && (mdi_mode > 0) )
  1913.          set_dialog_item(handle, IDQ.WINDOW_ONEBUFF, DAC_CHECK);
  1914.    
  1915.    # window misc
  1916.       if (default_linenumber_format != "")
  1917.          set_dialog_item(handle, IDQ.WINDOW_LINENUMS, DAC_CHECK);
  1918.       if (and(window_flags, WINDOW_HORIZ_SB))
  1919.          set_dialog_item(handle, IDQ.WINDOW_HORZ, DAC_CHECK);
  1920.       if (and(window_flags, WINDOW_VERT_SB))
  1921.          set_dialog_item(handle, IDQ.WINDOW_VERT, DAC_CHECK);
  1922.    
  1923.    # types
  1924.       for (i in languages)
  1925.       {
  1926.          set_dialog_item(handle, IDQ.TYPES_TYPE, DAC_ADD_ITEM, i)
  1927.       }
  1928.          
  1929.       cur_type = Type(path_ext(buffer_filename))
  1930.       if (cur_type)
  1931.       {
  1932.          set_dialog_item(handle, IDQ.TYPES_TYPE, DAC_SELECT_ITEM, cur_type)
  1933.          set_dialog_item(handle, IDQ.TYPES_EXTENSION, DAC_EDIT_TEXT , get_ext_list(cur_type))
  1934.       }
  1935.    
  1936.    # template expansion
  1937.       if (electric_mode)
  1938.          set_dialog_item(handle, IDQ.TYPES_TEMPLATE, DAC_CHECK);
  1939.    
  1940.    # buffer flags
  1941.       if (Syntax(DEFAULT))
  1942.          set_dialog_item(handle, IDQ.BUFF_COLOR, DAC_CHECK);
  1943.       if (AutoIndent(DEFAULT))
  1944.          set_dialog_item(handle, IDQ.BUFF_INDENT, DAC_CHECK);
  1945.       if (and(default_buffer_flags, BUFFER_EXPAND_TABS))
  1946.          set_dialog_item(handle, IDQ.BUFF_EXPAND, DAC_CHECK);
  1947. }
  1948.  
  1949.  
  1950. global function quick_settings_callback()
  1951. {
  1952.    local ret = DRC_CONTINUE
  1953.    local ext_list
  1954.    local cur_type
  1955.    local handle = callback_dialog_handle
  1956.    local msg = callback_msg
  1957.    local item = callback_index
  1958.  
  1959.    #message("msg = %d, item = %d", msg, item)
  1960.    if ( msg == DM_INIT )
  1961.    {
  1962.       quick_settings_init(handle)
  1963.       set_dialog_item(handle, IDQ.EMULATION, DAC_SETFOCUS)
  1964.       set_dialog_item(handle, IDQ.TYPES_EXTENSION, DAC_SET_TEXT_LEN , 256)
  1965.    }      
  1966.    else if ( msg == DM_HELPREQUESTED)
  1967.    {
  1968.       display_help(IDQ.HELP, handle)
  1969.       ret = DRC_MSG_PROCESSED
  1970.    }
  1971.    else if (msg == DM_SELECT && item == IDQ.TYPES_TYPE)
  1972.    {
  1973.       cur_type = query_dialog_item(handle, IDQ.TYPES_TYPE, DAC_SELECT_ITEM)
  1974.       if (cur_type in modified_types)
  1975.          ext_list = modified_types[cur_type]
  1976.       else
  1977.          ext_list = get_ext_list(cur_type)
  1978.       set_dialog_item(handle, IDQ.TYPES_EXTENSION, DAC_EDIT_TEXT, ext_list)
  1979.    }
  1980.    else if((msg == DM_CLICK) || (msg == DM_DOUBLE_CLICK))
  1981.    {
  1982.       if (item == IDQ.WINDOW_SINGLE)
  1983.          set_dialog_item(handle, IDQ.WINDOW_ONEBUFF, DAC_DISABLE)
  1984.       else if (item == IDQ.WINDOW_MULT || item == IDQ.WINDOW_DETACHED)
  1985.          set_dialog_item(handle, IDQ.WINDOW_ONEBUFF, DAC_ENABLE)
  1986.    }    
  1987.    else if(callback_msg == DM_KILL_FOCUS)
  1988.    {
  1989.       if(callback_index == IDQ.TYPES_EXTENSION)
  1990.       {
  1991.          cur_type = query_dialog_item(handle, IDQ.TYPES_TYPE, DAC_SELECT_ITEM)
  1992.          ext_list = query_dialog_item(handle, IDQ.TYPES_EXTENSION, DAC_EDIT_TEXT)
  1993.          if (ext_list != get_ext_list(cur_type))
  1994.          {
  1995.             modified_types[cur_type] = ext_list
  1996.          }
  1997.          ret = DRC_MSG_PROCESSED;
  1998.       }
  1999.    }
  2000.    else if ( msg == DM_OK )
  2001.    {
  2002.       quick_settings_save(handle)
  2003.    }
  2004.    
  2005.    return ret
  2006. }
  2007.  
  2008.  
  2009. global function quick_settings()
  2010. {
  2011.    local i
  2012.    local dlgHand = create_dialog( function_id("quick_settings_callback"), 0, IDQ.QUICK_SETTINGS_DLG )
  2013.    
  2014.    delete modified_types
  2015.    language_modified = 0
  2016.    new_mdi_mode = mdi_mode
  2017.    new_one_buff = create_new_bufwin 
  2018.  
  2019.    attach_help(editor_helpfile, dlgHand)
  2020.  
  2021.    begin_dialog( dlgHand )
  2022.    
  2023.    delete_dialog(dlgHand)
  2024.    
  2025.    idle()
  2026.    
  2027.    if (language_modified)
  2028.    {
  2029.       message("Compiling Quick setting changes...")
  2030.       write_language_data()
  2031.       message("Compile complete")
  2032.    }
  2033.          
  2034.    # window mode
  2035.    if (mdi_mode != new_mdi_mode)
  2036.    {
  2037.       if (new_mdi_mode == 0)
  2038.          switch_to_sdi()
  2039.       else if (new_mdi_mode == 1)
  2040.          switch_to_mdi()
  2041.       else
  2042.          switch_to_detached()
  2043.    }
  2044.             
  2045.    if ( (mdi_mode != 0) && (create_new_bufwin != new_one_buff) )
  2046.       toggle_create_new_win(new_one_buff)
  2047.       
  2048.    delete modified_types
  2049. }
  2050.