home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / p2demo21.exe / PEL / WINDOSET.PEL < prev    next >
Text File  |  1995-03-14  |  36KB  |  961 lines

  1. # $Header:   P:\source\wmacros\windoset.pev   1.48   14 Mar 1995 08:28:46   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:   windoset.pel  $: Notebook settings
  21.  
  22. local dhWindowSettings0 = 0;
  23. local dhWindowSettings1 = 0;
  24. local dhWindowSettings2 = 0;
  25. local dhWindowSettings3 = 0;
  26.  
  27. local phWindowSettings0 = 0;
  28. local phWindowSettings1 = 0;
  29. local phWindowSettings2 = 0;
  30. local phWindowSettings3 = 0;
  31.  
  32. local IDC_OPEN_FILES_IN_WINDOW   = 1009
  33. local IDR_SDI_MODE               = 1010
  34. local IDR_MDI_MODE               = 1011
  35. local IDR_DETACHED_MODE          = 1012
  36.  
  37. global function window_settings_notebook(dlgid)
  38. {
  39.    local dhHelpSettings, phHelpSettings;
  40.  
  41.    nb_initializing = TRUE;
  42.  
  43.    if (dlgid)
  44.    {
  45.       if ( status_bar_flags )
  46.          message( "Creating Window Settings Pages..." );
  47.  
  48.       phHelpSettings = append_notebook_page( dlgid, dhHelpSettings,
  49.                                              " ",   "Window" );
  50.       nbPagePrefix[phHelpSettings].name = "windowhelp";
  51.  
  52.       phWindowSettings0 = append_notebook_page( dlgid, dhWindowSettings0,
  53.                                              " Window Mode",   
  54.                                              "Mode", NBTAB_MINOR )
  55.       nbPagePrefix[phWindowSettings0].name = "window0";
  56.  
  57.       phWindowSettings1 = append_notebook_page( dlgid, dhWindowSettings1,
  58.                                              " Window Specific Settings",   
  59.                                              "Misc", NBTAB_MINOR )
  60.       nbPagePrefix[phWindowSettings1].name = "window1";
  61.  
  62.       phWindowSettings2 = append_notebook_page( dlgid, dhWindowSettings2,
  63.                                              " Strings for Special Characters",   
  64.                                              "Visible strings", NBTAB_MINOR )
  65.       nbPagePrefix[phWindowSettings2].name = "window2";
  66.  
  67.       phWindowSettings3 = append_notebook_page( dlgid, dhWindowSettings3,
  68.                                              " Scrolling Optimization" ,  
  69.                                              "Scrolling", NBTAB_MINOR )
  70.       nbPagePrefix[phWindowSettings3].name = "window3";
  71.    }
  72.    else
  73.    {
  74.       warning("Illegal call to window_settings_notebook()");
  75.    }
  76.  
  77.    nb_initializing = FALSE;
  78. }
  79.  
  80. global function reset_window_settings_notebook()
  81. {
  82.    dhWindowSettings0 = 0
  83.    dhWindowSettings1 = 0
  84.    dhWindowSettings2 = 0
  85.    dhWindowSettings3 = 0
  86.    
  87.    phWindowSettings0 = 0
  88.    phWindowSettings1 = 0
  89.    phWindowSettings2 = 0
  90.    phWindowSettings3 = 0
  91. }
  92.  
  93. # function commented out since it's not used and generates a warning.
  94. # it is going to be kept around incase there is a use for it
  95. #local function destroy_settings_notebook()
  96. #{
  97. #   delete_notebook_page(nhWindowNotebook, phHelpSettings)
  98. #   delete_notebook_page(nhWindowNotebook, phWindowSettings1)
  99. #   delete_notebook_page(nhWindowNotebook, phWindowSettings2)
  100. #   delete_notebook_page(nhWindowNotebook, phWindowSettings3)
  101. #
  102. #   delete_notebook(nhWindowNotebook)
  103. #
  104. #   nhWindowNotebook = 0
  105. #}
  106.  
  107. ########################## WINDOW NOTEBOOK #################################
  108. #global function window_settings_notebook_callback()
  109. #{
  110. #   if ( callback_msg == DM_CANCEL )
  111. #       return DRC_MSG_PROCESSED
  112. #
  113. #   else if( ( callback_msg == DM_CLICK && callback_index == DI_HELP ) ||
  114. #      ( callback_msg == DM_HELPREQUESTED ) ) 
  115. #   {
  116. #      if(isWindows())
  117. #         display_help("Window Settings", callback_dialog_handle);
  118. #      else
  119. #         display_help("windowpages", callback_dialog_handle);
  120. #      return DRC_MSG_PROCESSED
  121. #   }
  122. #
  123. #   return DRC_CONTINUE
  124. #}
  125.  
  126. global function create_windowhelp_page(pageid, dlgid)
  127. {
  128.    local dhHelpSettings;
  129.  
  130.    dhHelpSettings = create_page(function_id( "nop_settings_callback"), 
  131.                                  dlgid, IDD_WINDOW_HELP_PAGE, resource_dll )
  132.    attach_help(editor_helpfile, dhHelpSettings);
  133.    if(isWindows())
  134.       nbPagePrefix[pageid].help = "Misc. window settings";
  135.    else
  136.       nbPagePrefix[pageid].help = "windowpages";
  137.    set_notebook_page_dialog(dlgid, pageid, dhHelpSettings);
  138.    nbPagePrefix[pageid].dialog_handle = dhHelpSettings;
  139. }
  140.  
  141. global function create_window0_page(pageid, dlgid)
  142. {
  143.    dhWindowSettings0 = create_page(function_id( "window0_settings_callback" ), 
  144.                                    dlgid, IDD_WINDOW_MODE, resource_dll);
  145.    attach_help(editor_helpfile, dhWindowSettings0);
  146.  
  147.    if(isWindows())
  148.       nbPagePrefix[pageid].help = "Window mode settings";
  149.    else
  150.       nbPagePrefix[pageid].help = "windowpage0";
  151.  
  152.    add_dialog_item( dhWindowSettings0, IDB_UNDO, DCTRL_PUSH_BUTTON )
  153.    initialize_window0_settings( dhWindowSettings0 );
  154.    set_notebook_page_dialog(dlgid, pageid, dhWindowSettings0);
  155.    nbPagePrefix[pageid].dialog_handle = dhWindowSettings0;
  156. }
  157.  
  158. global function create_window1_page(pageid, dlgid)
  159. {
  160.    dhWindowSettings1 = create_page(function_id( "window1_settings_callback" ), 
  161.                                    dlgid, IDD_WINDOW_SETTINGS1, resource_dll);
  162.    attach_help(editor_helpfile, dhWindowSettings1);
  163.    if(isWindows())
  164.       nbPagePrefix[pageid].help = "Misc. window settings";
  165.    else
  166.       nbPagePrefix[pageid].help = "windowpage1";
  167.    add_dialog_item( dhWindowSettings1, IDB_UNDO, DCTRL_PUSH_BUTTON )
  168.    initialize_window1_settings( dhWindowSettings1 );
  169.    set_notebook_page_dialog(dlgid, pageid, dhWindowSettings1);
  170.    nbPagePrefix[pageid].dialog_handle = dhWindowSettings1;
  171. }
  172.  
  173. global function create_window2_page(pageid, dlgid)
  174. {
  175.    dhWindowSettings2 = create_page(function_id( "window2_settings_callback" ), 
  176.                                    dlgid, IDD_WINDOW_SETTINGS2, resource_dll);
  177.    attach_help(editor_helpfile, dhWindowSettings2)
  178.    if(isWindows())
  179.       nbPagePrefix[pageid].help = "Visible strings";
  180.    else
  181.       nbPagePrefix[pageid].help = "windowpage2";
  182.    add_dialog_item( dhWindowSettings2, IDB_UNDO, DCTRL_PUSH_BUTTON )
  183.    set_dialog_item( dhWindowSettings2, IDE_WIN_VIS_EOB, DAC_SET_TEXT_LEN, 256 );
  184.    initialize_window2_settings( dhWindowSettings2 );
  185.    set_notebook_page_dialog(dlgid, pageid, dhWindowSettings2);
  186.    nbPagePrefix[pageid].dialog_handle = dhWindowSettings2;
  187. }
  188.  
  189. global function create_window3_page(pageid, dlgid)
  190. {
  191.    dhWindowSettings3 = create_page(function_id( "window3_settings_callback" ), 
  192.                                    dlgid, IDD_WINDOW_SETTINGS3, resource_dll);
  193.    attach_help(editor_helpfile, dhWindowSettings3)
  194.    if(isWindows())
  195.       nbPagePrefix[pageid].help = "Scroll variable Settings";
  196.    else
  197.       nbPagePrefix[pageid].help = "windowpage3";
  198.    add_dialog_item( dhWindowSettings3, IDB_UNDO, DCTRL_PUSH_BUTTON )
  199.    initialize_window3_settings( dhWindowSettings3 )
  200.    set_notebook_page_dialog(dlgid, pageid, dhWindowSettings3);
  201.    nbPagePrefix[pageid].dialog_handle = dhWindowSettings3;
  202. }
  203.  
  204. ########################## WINDOW PAGE 1 #################################
  205. local function initialize_window0_settings( handle )
  206. {
  207.    if(create_new_bufwin)
  208.       set_dialog_item( handle, IDC_OPEN_FILES_IN_WINDOW, DAC_CHECK)
  209.    else
  210.       set_dialog_item( handle, IDC_OPEN_FILES_IN_WINDOW, DAC_UNCHECK);
  211.  
  212.    if ( mdi_mode == 0 )
  213.    {
  214.       set_dialog_item( handle, IDR_SDI_MODE, DAC_CHECK)
  215.       set_dialog_item( handle, IDR_MDI_MODE, DAC_UNCHECK)
  216.       set_dialog_item( handle, IDR_DETACHED_MODE, DAC_UNCHECK)
  217.       set_dialog_item( handle, IDC_OPEN_FILES_IN_WINDOW, DAC_DISABLE);
  218.    }
  219.    else if ( mdi_mode == 1 )
  220.    {
  221.       set_dialog_item( handle, IDR_SDI_MODE, DAC_UNCHECK)
  222.       set_dialog_item( handle, IDR_MDI_MODE, DAC_CHECK)
  223.       set_dialog_item( handle, IDR_DETACHED_MODE, DAC_UNCHECK)
  224.    }
  225.    else if ( mdi_mode == 2 )
  226.    {
  227.       set_dialog_item( handle, IDR_SDI_MODE, DAC_UNCHECK)
  228.       set_dialog_item( handle, IDR_MDI_MODE, DAC_UNCHECK)
  229.       set_dialog_item( handle, IDR_DETACHED_MODE, DAC_CHECK)
  230.    }
  231. }
  232.  
  233. local function initialize_window1_settings( handle )
  234. {
  235.    nb_initializing = TRUE;
  236.  
  237.    add_dialog_item( handle, IDE_WIN_LINE_FORMAT, DCTRL_EDIT );
  238.  
  239.    if ( linenumber_format )
  240.    {
  241.       set_dialog_item(handle, IDC_LINENUMBERS_ON, DAC_CHECK)
  242.       set_dialog_item(handle, IDE_WIN_LINE_FORMAT, DAC_ENABLE )
  243.       set_dialog_item(handle, IDT_WIN_LINE_FORMAT, DAC_ENABLE )
  244.       set_dialog_item(handle, IDE_WIN_LINE_FORMAT, DAC_EDIT_TEXT, linenumber_format)
  245.    }
  246.    else 
  247.    {
  248.       set_dialog_item(handle, IDC_LINENUMBERS_ON, DAC_UNCHECK)
  249.       set_dialog_item(handle, IDE_WIN_LINE_FORMAT, DAC_DISABLE )
  250.       set_dialog_item(handle, IDT_WIN_LINE_FORMAT, DAC_DISABLE )
  251.       set_dialog_item(handle, IDE_WIN_LINE_FORMAT, DAC_EDIT_TEXT, nominal_linenumber_format)
  252.    }
  253.  
  254.    if ( and( window_flags, WINDOW_VERT_SB ) )
  255.       set_dialog_item( handle, IDC_WIN_VSCROLL, DAC_CHECK)
  256.    else
  257.       set_dialog_item( handle, IDC_WIN_VSCROLL, DAC_UNCHECK)
  258.    
  259.    if ( and( window_flags, WINDOW_HORIZ_SB ) )
  260.       set_dialog_item( handle, IDC_WIN_HSCROLL, DAC_CHECK)
  261.    else
  262.       set_dialog_item( handle, IDC_WIN_HSCROLL, DAC_UNCHECK)
  263.  
  264.    if ( and( window_flags, WINDOW_DISPLAY_FULL_FILENAME ) )
  265.       set_dialog_item( handle, IDC_PATHINFO, DAC_CHECK)
  266.    else
  267.       set_dialog_item( handle, IDC_PATHINFO, DAC_UNCHECK);
  268.  
  269.    deselect_checks(handle);
  270.  
  271.    nb_initializing = FALSE;
  272. }
  273.  
  274. global function window1_settings_config()
  275. {
  276.    local data[]
  277.    local i = 1
  278.  
  279.    data[ i++ ] = "# Settings specific to the first window settings notebook page\n" 
  280.    data[ i++ ] = sprintf( "default_window_flags=%d\n", default_window_flags )
  281.    data[ i++ ] = sprintf( "default_linenumber_format=\"%s\"\n",
  282.                           quote_string(default_linenumber_format))
  283.    data[ i++ ] = sprintf( "\n" )
  284.  
  285.    return data
  286. }
  287.  
  288. # Assumption:  Upon entrance to this function, we are in the window that
  289. #              whose certain values we want to apply to all other windows.
  290. #              The calling function, apply_to_all, makes sure that this
  291. #              assumption is valid
  292. global function window1_apply_to_all()
  293. {
  294.    local set_bits
  295.    #  local unset_bits
  296.  
  297.    local first_win               = current_window
  298.    local cur_win                 = 0
  299.  
  300.    local all_linenumber_format   = ""
  301.    local mask                   = 0
  302.  
  303.    all_linenumber_format = linenumber_format
  304.  
  305.    mask = WINDOW_VERT_SB + WINDOW_HORIZ_SB + WINDOW_DISPLAY_FULL_FILENAME
  306.  
  307.    # get the bits that are set in the current buffer
  308.    set_bits = and( window_flags, mask )
  309.  
  310.    # get the bits that are not set in the current buffer
  311.    #  unset_bits = and( flags, not(set_bits) )
  312.  
  313.    # Apply to all windows.   
  314.    # This gets a little complex.  We need to set the bits that
  315.    # are set, and unset all of the bits that are not set
  316.    #  Why is this complex?  We have a function called set_flag_bits
  317.    #   that does his very nicely;
  318.    while( (cur_win = next_window("", 0, 1)) != first_win )
  319.    {
  320.       window_flags = set_flag_bits(window_flags, mask, set_bits);
  321.       #  window_flags = or( window_flags, set_bits )
  322.       #  window_flags = and( window_flags, not(unset_bits) )
  323.  
  324.       linenumber_format = all_linenumber_format
  325.    }
  326.  
  327.    current_window = first_win
  328. }
  329.  
  330. global function window0_settings_callback()
  331. {
  332.    local ret_val
  333.  
  334.    enable_undo( callback_dialog_handle, callback_index )
  335.  
  336.    if ( callback_msg == DM_INIT )
  337.    {
  338.    }
  339.    else if(callback_msg == DM_CANCEL)
  340.       return DRC_MSG_PROCESSED
  341.    else if(callback_msg == DM_HELPREQUESTED)
  342.    {
  343.       display_help(nbPagePrefix[current_nb_page].help, callback_dialog_handle);
  344.       return DRC_MSG_PROCESSED
  345.    }
  346.    else if ( (callback_msg == DM_CLICK) || (callback_msg == DM_DOUBLE_CLICK) )
  347.    {
  348.       if ( callback_index == IDB_UNDO  ) 
  349.       {   
  350.          nbPagePrefix[current_nb_page].modified = TRUE;
  351.          initialize_window0_settings(callback_dialog_handle)
  352.          return DRC_MSG_PROCESSED
  353.       }
  354.       else if  ( callback_index == IDB_DEFAULT )
  355.       {
  356.          nbPagePrefix[current_nb_page].modified = TRUE;
  357.          default_window0_settings(callback_dialog_handle)
  358.          return DRC_MSG_PROCESSED
  359.       }
  360.       else if(callback_index == IDR_SDI_MODE)
  361.       {
  362.          nbPagePrefix[current_nb_page].modified = TRUE;
  363.          set_dialog_item( callback_dialog_handle, IDC_OPEN_FILES_IN_WINDOW, DAC_DISABLE);
  364.       }
  365.       else if((callback_index == IDR_MDI_MODE) || (callback_index == IDR_DETACHED_MODE))
  366.       {
  367.          nbPagePrefix[current_nb_page].modified = TRUE;
  368.          set_dialog_item( callback_dialog_handle, IDC_OPEN_FILES_IN_WINDOW, DAC_ENABLE);
  369.       }
  370.       else if(callback_index == IDC_OPEN_FILES_IN_WINDOW)
  371.       {
  372.          nbPagePrefix[current_nb_page].modified = TRUE;
  373.       }
  374.  
  375.       return DRC_MSG_PROCESSED
  376.    }
  377.    return DRC_CONTINUE
  378. }
  379.  
  380. global function window1_settings_callback()
  381. {
  382.    local ret_val
  383.  
  384.    enable_undo( callback_dialog_handle, callback_index )
  385.  
  386.    if ( callback_msg == DM_INIT )
  387.    {
  388. #        set_dialog_item( callback_dialog_handle, IDC_APPLY_TO_ALL, DAC_UNCHECK) 
  389.       apply_page_to_all( "window1", FALSE )
  390.    }     
  391.    else if(callback_msg == DM_CANCEL)
  392.       return DRC_MSG_PROCESSED
  393.    else if(callback_msg == DM_HELPREQUESTED)
  394.    {
  395.       display_help(nbPagePrefix[current_nb_page].help, callback_dialog_handle);
  396.       return DRC_MSG_PROCESSED
  397.    }
  398.    else if ( (callback_msg == DM_CLICK) || (callback_msg == DM_DOUBLE_CLICK) )
  399.    {
  400.       if ( callback_index == IDB_UNDO  ) 
  401.       {   
  402.          nbPagePrefix[current_nb_page].modified = TRUE;
  403.          initialize_window1_settings(callback_dialog_handle)
  404.          return DRC_MSG_PROCESSED
  405.       }
  406.       else if  ( callback_index == IDB_DEFAULT )
  407.       {
  408.          nbPagePrefix[current_nb_page].modified = TRUE;
  409.          default_window1_settings(callback_dialog_handle)
  410.          return DRC_MSG_PROCESSED
  411.       }
  412.       else if ( callback_index == IDE_WIN_LINE_FORMAT )
  413.       {
  414.          nbPagePrefix[current_nb_page].modified = TRUE;
  415.          return DRC_MSG_PROCESSED;
  416.       }
  417.       else if ( callback_index == IDC_LINENUMBERS_ON )
  418.       {
  419.          nbPagePrefix[current_nb_page].modified = TRUE;
  420.          ret_val = query_dialog_item( callback_dialog_handle, callback_index, DAC_CHECK) 
  421.          if (ret_val)
  422.          {
  423.             set_dialog_item( callback_dialog_handle, IDE_WIN_LINE_FORMAT, DAC_ENABLE )
  424.             set_dialog_item( callback_dialog_handle, IDT_WIN_LINE_FORMAT, DAC_ENABLE )
  425.          }
  426.          else
  427.          {
  428.             set_dialog_item( callback_dialog_handle, IDE_WIN_LINE_FORMAT, DAC_DISABLE )
  429.             set_dialog_item( callback_dialog_handle, IDT_WIN_LINE_FORMAT, DAC_DISABLE )
  430.          }
  431.          #  set_dialog_item( callback_dialog_handle, IDE_WIN_LINE_FORMAT, DAC_TEXT, linenumber_format)
  432.       }
  433.       return DRC_MSG_PROCESSED
  434.    }
  435.  
  436.    return DRC_CONTINUE
  437. }
  438.  
  439. ########################## WINDOW PAGE 2 #################################
  440. local function initialize_window2_settings( handle )
  441. {
  442.    add_dialog_item( handle, IDE_WIN_VIS_TABS, DCTRL_EDIT )
  443.    
  444.    nb_initializing = TRUE;
  445.    set_dialog_item( handle, IDE_WIN_VIS_TABS, DAC_EDIT_TEXT,
  446.                      visible_tabs "")
  447.    
  448.    set_dialog_item( handle, IDE_WIN_VIS_SPACES, DAC_EDIT_TEXT,
  449.                     visible_spaces "")
  450.  
  451.    set_dialog_item( handle, IDE_WIN_VIS_NEWLINES, DAC_EDIT_TEXT,
  452.                     visible_newlines "")
  453.  
  454.    set_dialog_item( handle, IDE_WIN_VIS_VIR_SPACES, DAC_EDIT_TEXT,
  455.                     visible_virtual_spaces "")
  456.  
  457.    set_dialog_item( handle, IDE_WIN_VIS_VIR_LINES, DAC_EDIT_TEXT,
  458.                     visible_virtual_lines "")
  459.  
  460.    set_dialog_item( handle, IDE_WIN_VIS_EOB, DAC_EDIT_TEXT,
  461.                     visible_end_buffer "")
  462.  
  463.    deselect_checks(handle);
  464.  
  465.    nb_initializing = FALSE;
  466. }
  467.  
  468. global function window2_apply_to_all()
  469. {
  470.    local first_win               = current_window
  471.    local cur_win                 = 0
  472.  
  473.    local all_win_vis_tabs        = ""
  474.    local all_win_vis_spaces      = ""
  475.    local all_win_vis_newlines    = ""
  476.    local all_win_vis_vir_spaces  = ""
  477.    local all_win_vis_vir_lines   = ""
  478.    local all_win_vis_eob         = ""
  479.  
  480.    all_win_vis_tabs        = visible_tabs          
  481.    all_win_vis_spaces      = visible_spaces           
  482.    all_win_vis_newlines    = visible_newlines         
  483.    all_win_vis_vir_spaces  = visible_virtual_spaces
  484.    all_win_vis_vir_lines   = visible_virtual_lines 
  485.    all_win_vis_eob         = visible_end_buffer    
  486.  
  487.    while( (cur_win = next_window("", 0, 1)) != first_win )
  488.       {
  489.       visible_tabs            = all_win_vis_tabs         
  490.       visible_spaces          = all_win_vis_spaces    
  491.       visible_newlines        = all_win_vis_newlines     
  492.       visible_virtual_spaces  = all_win_vis_vir_spaces
  493.       visible_virtual_lines   = all_win_vis_vir_lines 
  494.       visible_end_buffer      = all_win_vis_eob       
  495.       update_current_view()
  496.       }
  497.  
  498.    current_window = first_win
  499. }
  500.  
  501. global function window2_settings_config()
  502. {
  503.    local data[]
  504.    local i = 1
  505.  
  506.    data[ i++ ] = sprintf( "# Settings specific to the second window settings notebook page\n" )
  507.  
  508.    data[ i++ ] = sprintf(  "default_visible_tabs=\"%s\"\n",           
  509.                            quote_string(default_visible_tabs))
  510.  
  511.    data[ i++ ] = sprintf(  "default_visible_spaces=\"%s\"\n",         
  512.                            quote_string(default_visible_spaces))
  513.  
  514.    data[ i++ ] = sprintf(  "default_visible_virtual_spaces=\"%s\"\n",    
  515.                            quote_string(default_visible_virtual_spaces))
  516.  
  517.    data[ i++ ] = sprintf(  "default_visible_newlines=\"%s\"\n",          
  518.                            quote_string(default_visible_newlines))
  519.  
  520.    data[ i++ ] = sprintf(  "default_visible_virtual_lines=\"%s\"\n",  
  521.                            quote_string(default_visible_virtual_lines))
  522.  
  523.    data[ i++ ] = sprintf(  "default_visible_end_buffer=\"%s\"\n",     
  524.                            quote_string(default_visible_end_buffer))
  525.  
  526.    data[ i++ ] = sprintf( "\n" )
  527.  
  528.    return data
  529. }
  530.  
  531. global function window2_settings_callback()
  532. {
  533.    local ret_val
  534.    local str
  535.  
  536.    enable_undo( callback_dialog_handle, callback_index )
  537.  
  538.    if(callback_msg == DM_HELPREQUESTED)
  539.    {
  540.       display_help(nbPagePrefix[current_nb_page].help, callback_dialog_handle);
  541.       return DRC_MSG_PROCESSED
  542.    }
  543.  
  544.    if ( callback_msg == DM_INIT )
  545.    {
  546. #        set_dialog_item( callback_dialog_handle, IDC_APPLY_TO_ALL, DAC_UNCHECK) 
  547.       apply_page_to_all( "window2", FALSE )
  548.    }     
  549.    else if(callback_msg == DM_CANCEL)
  550.       return DRC_MSG_PROCESSED
  551.  
  552.    # highlight the text in these fields
  553.    else if ( callback_msg == DM_SET_FOCUS )
  554.    {
  555.       if (  (callback_index == IDE_WIN_VIS_TABS)         ||
  556.             (callback_index == IDE_WIN_VIS_SPACES)       ||
  557.             (callback_index == IDE_WIN_VIS_VIR_SPACES)   ||
  558.             (callback_index == IDE_WIN_VIS_NEWLINES)     ||
  559.             (callback_index == IDE_WIN_VIS_VIR_LINES)    ||
  560.             (callback_index == IDE_WIN_VIS_EOB)             )
  561.       {
  562.          nbPagePrefix[current_nb_page].modified = TRUE;
  563.          str = query_dialog_item( callback_dialog_handle, 
  564.                                   callback_index, 
  565.                                   DAC_EDIT_TEXT )
  566.  
  567.         if ( str )
  568.             set_dialog_item(  callback_dialog_handle, 
  569.                               callback_index, 
  570.                               DAC_EDIT_TEXT,
  571.                               str,
  572.                               TRUE  )
  573.                          
  574.       }
  575.    }   
  576.    else if ( (callback_msg == DM_CLICK) || (callback_msg == DM_DOUBLE_CLICK) )
  577.    {
  578.       if ( callback_index == IDB_UNDO  ) 
  579.       {   
  580.          nbPagePrefix[current_nb_page].modified = FALSE;
  581.          initialize_window2_settings(callback_dialog_handle)
  582.          return DRC_MSG_PROCESSED
  583.       }
  584.       else if ( callback_index == IDB_DEFAULT  ) 
  585.       {   
  586.          nbPagePrefix[current_nb_page].modified = TRUE;
  587.          default_window2_settings(callback_dialog_handle)
  588.          return DRC_MSG_PROCESSED
  589.       }
  590.    }
  591.    else if ( callback_msg == DM_KILL_FOCUS )
  592.    {
  593.       if ( callback_index == IDE_WIN_VIS_SPACES )
  594.       {
  595.          nbPagePrefix[current_nb_page].modified = TRUE;
  596.          ret_val = query_dialog_item( callback_dialog_handle, callback_index, DAC_EDIT_TEXT ) 
  597.          if ( length(ret_val) > 1 )
  598.          {
  599.             warning("Invalid entry, maximum field length is 1 character.")
  600.             ret_val = substr(ret_val, 1, 1)
  601.             set_dialog_item( dhWindowSettings2, callback_index, DAC_EDIT_TEXT, ret_val)
  602.          }
  603.       }
  604.       else if ( callback_index == IDE_WIN_VIS_VIR_SPACES )
  605.       {
  606.          nbPagePrefix[current_nb_page].modified = TRUE;
  607.          ret_val = query_dialog_item( callback_dialog_handle, callback_index, DAC_EDIT_TEXT ) 
  608.          if ( length(ret_val) > 1 )
  609.          {
  610.             warning("Invalid entry, maximum field length is 1 character.")
  611.             ret_val = substr(ret_val, 1, 1)
  612.             set_dialog_item( dhWindowSettings2, callback_index, DAC_EDIT_TEXT, ret_val)
  613.          }
  614.       }
  615.       return DRC_MSG_PROCESSED
  616.    }
  617.    return DRC_CONTINUE
  618. }
  619.  
  620. ########################## WINDOW PAGE 3 #################################
  621. local function initialize_window3_settings( handle )
  622. {
  623.    nb_initializing = TRUE;
  624.  
  625.    set_dialog_item( handle, IDE_WIN_SCRL_CON_TOP, DAC_SPIN_LIMITS, 0, 20 )
  626.    set_dialog_item( handle, IDE_WIN_SCRL_CON_TOP, DAC_SPIN_VALUE, scroll_context_top+0)
  627.  
  628.    set_dialog_item( handle, IDE_WIN_SCRL_CON_BOT, DAC_SPIN_LIMITS, 0, 20 )
  629.    set_dialog_item( handle, IDE_WIN_SCRL_CON_BOT, DAC_SPIN_VALUE, scroll_context_bottom+0)
  630.  
  631.    set_dialog_item( handle, IDE_WIN_SCRL_CON_RT, DAC_SPIN_LIMITS, 0, 20 )
  632.    set_dialog_item( handle, IDE_WIN_SCRL_CON_RT, DAC_SPIN_VALUE, scroll_context_right+0)
  633.  
  634.    set_dialog_item( handle, IDE_WIN_SCRL_CON_LT, DAC_SPIN_LIMITS, 0, 20 )
  635.    set_dialog_item( handle, IDE_WIN_SCRL_CON_LT, DAC_SPIN_VALUE, scroll_context_left+0)
  636.    
  637.    set_dialog_item( handle, IDE_WIN_SCRL_UNIT_HORZ, DAC_SPIN_LIMITS, 0, 20 )
  638.    set_dialog_item( handle, IDE_WIN_SCRL_UNIT_HORZ, DAC_SPIN_VALUE, scroll_unit_horizontal+0)
  639.    
  640.    set_dialog_item( handle, IDE_WIN_SCRL_UNIT_VERT, DAC_SPIN_LIMITS, 0, 20 )
  641.    set_dialog_item( handle, IDE_WIN_SCRL_UNIT_VERT, DAC_SPIN_VALUE, scroll_unit_vertical+0)
  642.    
  643.    if ( scroll_means_pan )
  644.    {
  645.       set_dialog_item(handle, IDC_WIN_SCRL_MEANS_PAN, DAC_CHECK)
  646.    }
  647.    else
  648.    {
  649.       set_dialog_item(handle, IDC_WIN_SCRL_MEANS_PAN, DAC_UNCHECK)
  650.    }
  651.  
  652.    deselect_checks(handle);
  653.  
  654.    nb_initializing = FALSE;
  655. }
  656.  
  657. global function window3_apply_to_all()
  658. {
  659.    local first_win               = current_window
  660.    local cur_win                 = 0
  661.  
  662.    local all_win_scrl_con_top    = ""
  663.    local all_win_scrl_con_bot    = ""
  664.    local all_win_scrl_con_rt     = ""
  665.    local all_win_scrl_con_lt     = ""
  666.    local all_win_scrl_unit_horz  = ""
  667.    local all_win_scrl_unit_vert  = ""
  668.    local all_scroll_means_pan    = 0
  669.  
  670. #   all_win_scrl_con_top   = query_dialog_item( dhWindowSettings3, IDE_WIN_SCRL_CON_TOP,     DAC_EDIT_TEXT  )
  671. #   all_win_scrl_con_bot   = query_dialog_item( dhWindowSettings3, IDE_WIN_SCRL_CON_BOT,     DAC_EDIT_TEXT  )
  672. #   all_win_scrl_con_rt       = query_dialog_item( dhWindowSettings3, IDE_WIN_SCRL_CON_RT,      DAC_EDIT_TEXT  )
  673. #   all_win_scrl_con_lt       = query_dialog_item( dhWindowSettings3, IDE_WIN_SCRL_CON_LT,      DAC_EDIT_TEXT  )
  674. #   all_win_scrl_unit_horz    = query_dialog_item( dhWindowSettings3, IDE_WIN_SCRL_UNIT_HORZ,   DAC_EDIT_TEXT  )
  675. #   all_win_scrl_unit_vert    = query_dialog_item( dhWindowSettings3, IDE_WIN_SCRL_UNIT_VERT,   DAC_EDIT_TEXT  )
  676. #   all_scroll_means_pan      = query_dialog_item( dhWindowSettings3, IDC_WIN_SCRL_MEANS_PAN,   DAC_CHECK      )
  677.  
  678.    all_win_scrl_con_top    = scroll_context_top    
  679.    all_win_scrl_con_bot    = scroll_context_bottom
  680.    all_win_scrl_con_rt     = scroll_context_right     
  681.    all_win_scrl_con_lt     = scroll_context_left      
  682.    all_win_scrl_unit_horz  = scroll_unit_horizontal   
  683.    all_win_scrl_unit_vert  = scroll_unit_vertical
  684.    all_scroll_means_pan    = scroll_means_pan      
  685.  
  686.    while( (cur_win = next_window("", 0, 1)) != first_win )
  687.       {
  688.       scroll_context_top      = all_win_scrl_con_top  
  689.       scroll_context_bottom   = all_win_scrl_con_bot  
  690.       scroll_context_right    = all_win_scrl_con_rt      
  691.       scroll_context_left     = all_win_scrl_con_lt      
  692.       scroll_unit_horizontal  = all_win_scrl_unit_horz   
  693.       scroll_unit_vertical    = all_win_scrl_unit_vert 
  694.       scroll_means_pan        = all_scroll_means_pan   
  695.       }
  696.  
  697.    current_window = first_win
  698. }
  699.  
  700. global function window3_settings_config()
  701. {
  702.    local data[]
  703.    local i = 1
  704.  
  705.    data[ i++ ] = sprintf(  "# Settings specific to the third window settings notebook page\n" )
  706.  
  707.    data[ i++ ] = sprintf(  "default_scroll_context_top=%d\n", default_scroll_context_top )
  708.  
  709.    data[ i++ ] = sprintf(  "default_scroll_context_bottom=%d\n", default_scroll_context_bottom )
  710.  
  711.    data[ i++ ] = sprintf(  "default_scroll_context_right=%d\n", default_scroll_context_right )
  712.  
  713.    data[ i++ ] = sprintf(  "default_scroll_context_left=%d\n", default_scroll_context_left )
  714.  
  715.    data[ i++ ] = sprintf(  "default_scroll_unit_horizontal=%d\n", default_scroll_unit_horizontal )
  716.  
  717.    data[ i++ ] = sprintf(  "default_scroll_unit_vertical=%d\n", default_scroll_unit_vertical )
  718.  
  719.    data[ i++ ] = sprintf(  "default_scroll_means_pan=%d\n", default_scroll_means_pan )
  720.    data[ i++ ] = sprintf( "\n" )
  721.  
  722.    return data
  723. }
  724.  
  725. global function window3_settings_callback()
  726. {
  727.    local ret_val
  728.  
  729.    enable_undo( callback_dialog_handle, callback_index )
  730.  
  731.    if(callback_msg == DM_HELPREQUESTED)
  732.    {
  733.       display_help(nbPagePrefix[current_nb_page].help, callback_dialog_handle);
  734.       return DRC_MSG_PROCESSED
  735.    }
  736.    else if ( callback_msg == DM_INIT ) 
  737.    {
  738. #        set_dialog_item( callback_dialog_handle, IDC_APPLY_TO_ALL, DAC_UNCHECK) 
  739.       apply_page_to_all( "window3", FALSE )
  740.    }     
  741.    else if(callback_msg == DM_CANCEL)
  742.       return DRC_MSG_PROCESSED
  743.    else if ( (callback_msg == DM_CLICK) || (callback_msg == DM_DOUBLE_CLICK) )
  744.    {
  745.       if ( callback_index == IDB_UNDO  ) 
  746.       {
  747.          nbPagePrefix[current_nb_page].modified = FALSE;
  748.          initialize_window3_settings(callback_dialog_handle)
  749.          return DRC_MSG_PROCESSED
  750.       }
  751.       else if ( callback_index == IDB_DEFAULT  ) 
  752.       {   
  753.          nbPagePrefix[current_nb_page].modified = TRUE;
  754.          default_window3_settings(callback_dialog_handle)
  755.          return DRC_MSG_PROCESSED
  756.       }
  757.    }
  758.    else if ( callback_msg == DM_SPIN_CHANGE )
  759.    {
  760.       nbPagePrefix[current_nb_page].modified = TRUE;
  761.       # validate the value the user entered
  762.       query_dialog_item( callback_dialog_handle, callback_index, DAC_SPIN_VALUE )
  763.    }
  764.    return DRC_CONTINUE
  765. }
  766.  
  767. ########################## UNDO and DEFAULT #################################
  768. global function assign_windowhelp_changes(dlgid)
  769. {
  770.    nop();
  771. }
  772.  
  773. global function assign_window0_changes(dlgid)
  774. {
  775.    if ( query_dialog_item( dlgid, IDR_SDI_MODE, DAC_CHECK ) && mdi_mode != 0 )
  776.       switch_to_sdi()
  777.    else if ( query_dialog_item( dlgid, IDR_MDI_MODE, DAC_CHECK ) && mdi_mode != 1 )
  778.       switch_to_mdi()
  779.    else if ( query_dialog_item( dlgid, IDR_DETACHED_MODE, DAC_CHECK ) && mdi_mode != 2)
  780.       switch_to_detached()
  781.  
  782.    if(!mdi_mode)
  783.       toggle_create_new_win(0);
  784.    else
  785.       toggle_create_new_win(query_dialog_item(dlgid, IDC_OPEN_FILES_IN_WINDOW, DAC_CHECK));
  786. }
  787.  
  788. global function assign_window1_changes(dlgid)
  789. {
  790.    linenumber_format = query_dialog_item(dlgid, IDE_WIN_LINE_FORMAT, DAC_EDIT_TEXT);
  791.  
  792.    toggle_win_vscroll( query_dialog_item(dlgid, IDC_WIN_VSCROLL,    DAC_CHECK));
  793.    toggle_win_hscroll( query_dialog_item(dlgid, IDC_WIN_HSCROLL,    DAC_CHECK));
  794.    toggle_win_pathinfo(query_dialog_item(dlgid, IDC_PATHINFO,       DAC_CHECK));
  795.    toggle_linenumbers( query_dialog_item(dlgid, IDC_LINENUMBERS_ON, DAC_CHECK));
  796.  
  797.    if(query_dialog_item(dlgid,IDC_APPLY_TO_ALL, DAC_CHECK))
  798.       apply_page_to_all( "window1", function_id("window1_apply_to_all"));
  799.  
  800.    if(query_dialog_item(dlgid,IDC_MAKE_DEFAULT, DAC_CHECK))
  801.       make_default_window1_settings();
  802. }
  803.  
  804. global function assign_window2_changes(dlgid)
  805. {
  806.    visible_tabs           = query_dialog_item(dlgid, IDE_WIN_VIS_TABS,       DAC_EDIT_TEXT);
  807.    visible_spaces         = query_dialog_item(dlgid, IDE_WIN_VIS_SPACES,     DAC_EDIT_TEXT);
  808.    visible_virtual_spaces = query_dialog_item(dlgid, IDE_WIN_VIS_VIR_SPACES, DAC_EDIT_TEXT);
  809.    visible_newlines       = query_dialog_item(dlgid, IDE_WIN_VIS_NEWLINES,   DAC_EDIT_TEXT);
  810.    visible_virtual_lines  = query_dialog_item(dlgid, IDE_WIN_VIS_VIR_LINES,  DAC_EDIT_TEXT);
  811.    visible_end_buffer     = query_dialog_item(dlgid, IDE_WIN_VIS_EOB,        DAC_EDIT_TEXT);
  812.  
  813.    if(query_dialog_item(dlgid,IDC_APPLY_TO_ALL, DAC_CHECK))
  814.       apply_page_to_all( "window2", function_id("window2_apply_to_all"));
  815.  
  816.    if(query_dialog_item(dlgid,IDC_MAKE_DEFAULT, DAC_CHECK))
  817.       make_default_window2_settings();
  818. }
  819.  
  820. global function assign_window3_changes(dlgid)
  821. {
  822.    scroll_context_top     = query_dialog_item(dlgid, IDE_WIN_SCRL_CON_TOP,   DAC_SPIN_VALUE);
  823.    scroll_context_bottom  = query_dialog_item(dlgid, IDE_WIN_SCRL_CON_BOT,   DAC_SPIN_VALUE);
  824.    scroll_context_left    = query_dialog_item(dlgid, IDE_WIN_SCRL_CON_LT,    DAC_SPIN_VALUE);
  825.    scroll_context_right   = query_dialog_item(dlgid, IDE_WIN_SCRL_CON_RT,    DAC_SPIN_VALUE);
  826.    scroll_unit_horizontal = query_dialog_item(dlgid, IDE_WIN_SCRL_UNIT_HORZ, DAC_SPIN_VALUE);
  827.    scroll_unit_vertical   = query_dialog_item(dlgid, IDE_WIN_SCRL_UNIT_VERT, DAC_SPIN_VALUE);
  828.    scroll_means_pan       = query_dialog_item(dlgid, IDC_WIN_SCRL_MEANS_PAN, DAC_CHECK);
  829.  
  830.    if(query_dialog_item(dlgid,IDC_APPLY_TO_ALL, DAC_CHECK))
  831.       apply_page_to_all( "window3", function_id("window3_apply_to_all"));
  832.  
  833.    if(query_dialog_item(dlgid,IDC_MAKE_DEFAULT, DAC_CHECK))
  834.       make_default_window3_settings();
  835. }
  836.  
  837. local function default_window0_settings( handle )
  838. {
  839.    nb_initializing = TRUE;
  840.  
  841.    set_dialog_item( handle, IDC_OPEN_FILES_IN_WINDOW, DAC_UNCHECK);
  842.  
  843.    set_dialog_item( handle, IDR_SDI_MODE, DAC_CHECK)
  844.    set_dialog_item( handle, IDR_MDI_MODE, DAC_UNCHECK)
  845.    set_dialog_item( handle, IDR_DETACHED_MODE, DAC_UNCHECK)
  846.  
  847.    nb_initializing = FALSE;
  848. }
  849.  
  850. local function default_window1_settings( handle )
  851. {
  852.    nb_initializing = TRUE;
  853.  
  854.    if(default_linenumber_format)
  855.    {
  856.       set_dialog_item(handle, IDC_LINENUMBERS_ON, DAC_CHECK)
  857.       set_dialog_item(handle, IDE_WIN_LINE_FORMAT, DAC_ENABLE )
  858.       set_dialog_item(handle, IDT_WIN_LINE_FORMAT, DAC_ENABLE )
  859.       set_dialog_item(handle, IDE_WIN_LINE_FORMAT, DAC_EDIT_TEXT, default_linenumber_format)
  860.    }
  861.    else
  862.    {
  863.       set_dialog_item(handle, IDC_LINENUMBERS_ON, DAC_UNCHECK)
  864.       set_dialog_item(handle, IDE_WIN_LINE_FORMAT, DAC_DISABLE )
  865.       set_dialog_item(handle, IDT_WIN_LINE_FORMAT, DAC_DISABLE )
  866.    }
  867.  
  868.    if ( and(default_window_flags, WINDOW_VERT_SB ) )
  869.       set_dialog_item( handle, IDC_WIN_VSCROLL, DAC_CHECK)
  870.    else
  871.       set_dialog_item( handle, IDC_WIN_VSCROLL, DAC_UNCHECK)
  872.    
  873.    if ( and(default_window_flags, WINDOW_HORIZ_SB ) )
  874.       set_dialog_item( handle, IDC_WIN_HSCROLL, DAC_CHECK)
  875.    else
  876.       set_dialog_item( handle, IDC_WIN_HSCROLL, DAC_UNCHECK)
  877.  
  878.    if ( and(default_window_flags, WINDOW_DISPLAY_FULL_FILENAME ) )
  879.       set_dialog_item( handle, IDC_PATHINFO, DAC_CHECK)
  880.    else
  881.       set_dialog_item( handle, IDC_PATHINFO, DAC_UNCHECK)
  882.  
  883.    deselect_checks(handle);
  884.  
  885.    nb_initializing = FALSE;
  886. }
  887.  
  888.  
  889. local function default_window2_settings( handle )
  890. {
  891.    nb_initializing = TRUE;
  892.  
  893.    set_dialog_item(handle, IDE_WIN_VIS_TABS,       DAC_EDIT_TEXT, default_visible_tabs "");
  894.    set_dialog_item(handle, IDE_WIN_VIS_SPACES,     DAC_EDIT_TEXT, default_visible_spaces "");
  895.    set_dialog_item(handle, IDE_WIN_VIS_NEWLINES,   DAC_EDIT_TEXT, default_visible_newlines "");
  896.    set_dialog_item(handle, IDE_WIN_VIS_VIR_SPACES, DAC_EDIT_TEXT, default_visible_virtual_spaces "");
  897.    set_dialog_item(handle, IDE_WIN_VIS_VIR_LINES,  DAC_EDIT_TEXT, default_visible_virtual_lines "");
  898.    set_dialog_item(handle, IDE_WIN_VIS_EOB,        DAC_EDIT_TEXT, default_visible_end_buffer "");
  899.  
  900.    deselect_checks(handle);
  901.  
  902.    nb_initializing = FALSE;
  903. }
  904.  
  905.  
  906. local function default_window3_settings( handle )
  907. {
  908.    nb_initializing = TRUE;
  909.  
  910.    set_dialog_item(handle, IDE_WIN_SCRL_CON_TOP,   DAC_SPIN_VALUE, default_scroll_context_top);
  911.    set_dialog_item(handle, IDE_WIN_SCRL_CON_BOT,   DAC_SPIN_VALUE, default_scroll_context_bottom);
  912.    set_dialog_item(handle, IDE_WIN_SCRL_CON_RT,    DAC_SPIN_VALUE, default_scroll_context_right);
  913.    set_dialog_item(handle, IDE_WIN_SCRL_CON_LT,    DAC_SPIN_VALUE, default_scroll_context_left);
  914.    set_dialog_item(handle, IDE_WIN_SCRL_UNIT_HORZ, DAC_SPIN_VALUE, default_scroll_unit_horizontal);
  915.    set_dialog_item(handle, IDE_WIN_SCRL_UNIT_VERT, DAC_SPIN_VALUE, default_scroll_unit_vertical);
  916.    
  917.    if(default_scroll_means_pan )
  918.       set_dialog_item(handle, IDC_WIN_SCRL_MEANS_PAN, DAC_CHECK);
  919.    else
  920.       set_dialog_item(handle, IDC_WIN_SCRL_MEANS_PAN, DAC_UNCHECK);
  921.  
  922.    deselect_checks(handle);
  923.  
  924.    nb_initializing = FALSE;
  925. }
  926.  
  927.  
  928. local function make_default_window1_settings(handle)
  929. {
  930.    # make these values the defaults;
  931.    default_window_flags       = window_flags;
  932.    default_linenumber_format  = linenumber_format;
  933. }
  934.       
  935.  
  936. local function make_default_window2_settings(handle)
  937. {
  938.    # make these values the defaults;
  939.    default_visible_tabs             =  visible_tabs;
  940.    default_visible_spaces           =  visible_spaces;
  941.    default_visible_newlines         =  visible_newlines;
  942.    default_visible_virtual_spaces   =  visible_virtual_spaces;
  943.    default_visible_virtual_lines    =  visible_virtual_lines;
  944.    default_visible_end_buffer       =  visible_end_buffer;
  945. }
  946.  
  947.  
  948. local function make_default_window3_settings(handle)
  949. {
  950.    # make these values the defaults;
  951.    default_scroll_context_top       =  scroll_context_top;
  952.    default_scroll_context_bottom    =  scroll_context_bottom;
  953.    default_scroll_context_right     =  scroll_context_right;
  954.    default_scroll_context_left      =  scroll_context_left;
  955.  
  956.    default_scroll_unit_horizontal   =  scroll_unit_horizontal;
  957.    default_scroll_unit_vertical     =  scroll_unit_vertical;
  958.  
  959.    default_scroll_means_pan         =  scroll_means_pan;
  960. }
  961.