home *** CD-ROM | disk | FTP | other *** search
/ The Developer Connection…ice Driver Kit for OS/2 3 / DEV3-D1.ISO / devtools / dataflex / dfconfig.src < prev    next >
Encoding:
C/C++ Source or Header  |  1993-05-19  |  296.3 KB  |  9,245 lines

  1. //*************************************************************************
  2. //*
  3. //*  Copyright 1987-1992 Data Access Corporation, Miami FL, USA
  4. //*  All Rights reserved
  5. //*  DataFlex is a registered trademark of Data Access Corporation.
  6. //*
  7. //*************************************************************************
  8. //*
  9. //*  Module Name:
  10. //*      dfconfig.src
  11. //*
  12. //*  Creator:
  13. //*      THEO  
  14. //*      Fri 14 Feb 1992
  15. //*
  16. //*************************************************************************
  17.  
  18. #IFDEF _UNIX_
  19.     #REPLACE HAS_EXIT_COLOR         |CI1
  20.     #REPLACE HAS_SPOOLER            |CI1
  21. #ELSE
  22.     #IFDEF _OS2_
  23.         #REPLACE HAS_EXIT_COLOR     |CI1 
  24.         #REPLACE HAS_MOUSE          |CI1
  25.         #REPLACE HAS_TRANSLATION    |CI1
  26.     #ELSE 
  27.         #REPLACE HAS_CRITICAL_ERROR |CI2
  28.         #REPLACE HAS_GRAPHICS       |CI1
  29.         #REPLACE HAS_MOUSE          |CI1
  30.         #REPLACE HAS_POWER_FAIL     |CI1
  31.         #REPLACE HAS_TRANSLATION    |CI1
  32.     #ENDIF 
  33. #ENDIF
  34.  
  35.  
  36. #REPLACE ACTION_BAR_MINIMUM 7   // Define the minimum number of windows in our
  37.                                 // action bar
  38. #REPLACE COLORS_MINIMUM     3   // minimum number of windows--colors pull down
  39. #REPLACE OPTIONS_MINIMUM    3   // minimum number of windows--options pull down
  40. #REPLACE MISC_MINIMUM       5   // minimum number of windows--misc pull down
  41.  
  42.  
  43.  
  44. use ui
  45. use menu
  46. use help_chn
  47. use error
  48.  
  49.  
  50. // Name the items on the main_status object to simplify the use of conditional
  51. // compilation
  52. name_object main_object global
  53.  
  54. name_object main_status child main_object item 1 foreground check_select;
  55.         check_deselect background
  56.  
  57. #IFDEF HAS_EXIT_COLOR
  58.   name_item main_status exit
  59. #ENDIF
  60.  
  61. name_item main_status radio_select radio_deselect pallette scroll_up
  62. name_item main_status increments scroll_bar offset
  63.  
  64. #IFDEF HAS_MOUSE
  65.   name_item main_status double_click
  66. #ENDIF  // HAS_MOUSE
  67.  
  68. name_item main_status scroll_down
  69. name_item main_status date_form currency number_form empty_window
  70.  
  71. #IFDEF HAS_POWER_FAIL
  72.   name_item main_status power_fail
  73. #ENDIF  // HAS_POWER_FAIL
  74.  
  75. #IFDEF HAS_GRAPHICS
  76.   name_item main_status graph_driver graph_mode
  77. #ENDIF
  78.  
  79. name_item main_status auto_return
  80.  
  81. #IFDEF HAS_GRAPHICS
  82.   name_item main_status print_driver
  83. #ENDIF
  84.  
  85. #IFDEF HAS_SPOOLER
  86.   name_item main_status dfprinter_string nodfprinter_string
  87. #ENDIF
  88.  
  89. name_item main_status pageend_opt pagefeed_opt eject_prompt
  90.  
  91.  
  92. integer cimage_number
  93. /working
  94. ╔══════════════════════╗
  95. ║                      ║
  96. ║ ____________________ ║
  97. ║    please wait...    ║
  98. ║                      ║
  99. ╚══════════════════════╝
  100. /*
  101.  
  102. object working is a message
  103.     set location to 10 28 absolute
  104.     set center_state item 0 to true
  105.     set shadow_state item 0 to true
  106. end_object
  107.  
  108. procedure working string working_on
  109.     set value of working item 0 to working_on
  110.     send page_object to working true
  111. end_procedure
  112.  
  113. send working "Initializing,"
  114.  
  115. procedure done
  116.     send page_object to working false
  117. end_procedure
  118.  
  119. set application_name to "System"
  120.  
  121. /about
  122. ╔═════════════════════════════════════════════════════╗
  123. ║_____________________________________________________║
  124. ║                                                     ║
  125. ║                                                     ║
  126. ║                      Dfconfig                       ║
  127. ║                                                     ║
  128. ║                    Version 1.10b                    ║
  129. ║                                                     ║
  130. ║        ____________________________________         ║
  131. ║ SN: _____. ________________________________________ ║
  132. ║                                                     ║
  133. ║     Copyright 1987-1992 Data Access Corporation     ║
  134. ║         Miami FL, USA - All rights reserved         ║
  135. ║                                                     ║
  136. ║               Memory: __________ Bytes              ║
  137. ║                                                     ║
  138. ║                    <__>  <____>                     ║
  139. ╚═════════════════════════════════════════════════════╝
  140. /*
  141.  
  142. sub_page about_title from about 1 2 3 4 5
  143. sub_page about_ok from about 6 7
  144.  
  145. /main_title
  146. ________________________________________________________________________________
  147. /*
  148.  
  149.  
  150. // Set up to compile in the correct main_action_bar image.  The compile
  151. // time variable G is set through the following code to the correct number of
  152. // windows that we will require for the action bar.  !g is then tested to
  153. // control the actual image to be included into the application.
  154.  
  155. #SET G$ ACTION_BAR_MINIMUM      // Set up minimum number of action bar choices
  156.  
  157. #IFDEF HAS_GRAPHICS                 // If this OS has graphics, increment G
  158.     #SET G$ ( !g + HAS_GRAPHICS )   // by the replacement value of HAS_GRAPHICS
  159. #ENDIF
  160.  
  161. #IF ( !g = 7 )      // If we require 7 windows
  162.  
  163. /main_action_bar
  164.   ____  ________  ______  __________  _______  _____________  ____              
  165. /*
  166.  
  167. #ENDIF              // !g = 7
  168.  
  169.  
  170. #IF ( !g = 8 )      // If we require 8 windows
  171.  
  172. /main_action_bar
  173.   ____  ________  ______  ________  __________  _______  _____________  ____    
  174. /*
  175.  
  176. #ENDIF              // !g = 8
  177.  
  178.  
  179. #IFDEF HAS_SPOOLER
  180.  
  181. /main_object
  182. ________________________________________________________________________________
  183.   Default (desktop) colors:                            Selected  Not selected   
  184.    Foreground: ___                           Checkboxes: ____        ____       
  185.    Background: ___    Exit Color: ___     Radio Buttons: ____        ____       
  186.       Palette: __________________________                                       
  187.                                                          _                      
  188.    Horizontal Scrolling: ___                Scroll Bars: _   Offset: ___        
  189.                                                          _                      
  190.             Date Format: ________       Currency String: ____________________   
  191.           Number Format: _________        Empty Windows: _                      
  192.        Automatic Return: ___                                                     
  193.                                                                                 
  194.    Spooler Control Strings:                                                     
  195.          With DFPRINTER: __________________________________________________     
  196.       Without DFPRINTER: __________________________________________________     
  197.  
  198.    Printable Lines/Page: ___                                                    
  199.    Page Ejection Method: ________________________                               
  200.    Page Ejection Prompt: ________________________________________               
  201.                                                                                 
  202.        <_______>  <________>  <______________>  <___________>  <_______>        
  203. /*
  204.  
  205. sub_page main_status from main_object horizontal 1 24
  206. sub_page main_button from main_object horizontal 25 5
  207.  
  208. #ELSE       // Without HAS_SPOOLER
  209.  
  210. #IFDEF HAS_EXIT_COLOR
  211.  
  212. /main_object
  213. ________________________________________________________________________________
  214.   Default (desktop) colors:                            Selected  Not selected   
  215.    Foreground: ___                           Checkboxes: ____        ____       
  216.    Background: ___    Exit Color: ___     Radio Buttons: ____        ____       
  217.       Palette: __________________________                                       
  218.  
  219.                                                          _                      
  220.   Horizontal Scrolling: ___                 Scroll Bars: _   Offset: ___        
  221.     Double-click Speed: _                                _                      
  222.                                                                                 
  223.            Date Format: ________        Currency String: ____________________   
  224.          Number Format: _________         Empty Windows: _                      
  225.                                                                                 
  226.                                                                                 
  227.       Automatic Return: ___                                                     
  228.                                                                                 
  229.   Printable Lines/Page: ___                                                     
  230.   Page Ejection Method: ________________________                                  
  231.   Page Ejection Prompt: ________________________________________                
  232.                                                                                 
  233.        <_______>  <________>  <______________>  <___________>  <_______>        
  234. /*
  235.  
  236. sub_page main_status from main_object horizontal 1 23
  237. sub_page main_button from main_object horizontal 24 5
  238.  
  239. #ELSE       // Without HAS_SPOOLER or HAS_EXIT_COLOR
  240.  
  241. /main_object
  242. ________________________________________________________________________________
  243.   Default (desktop) colors:                            Selected  Not selected   
  244.    Foreground: ___                           Checkboxes: ____        ____       
  245.    Background: ___                        Radio Buttons: ____        ____       
  246.       Palette: __________________________                                       
  247.                                                          _                      
  248.   Horizontal Scrolling: ___                 Scroll Bars: _   Offset: ___        
  249.     Double-click Speed: _                                _                      
  250.                                                                                 
  251.            Date Format: ________        Currency String: ____________________   
  252.          Number Format: _________         Empty Windows: _                      
  253.                                                                                 
  254.     Power Fail Protect: ___             Graphics Screen: ____________ Mode: __  
  255.       Automatic Return: ___            Graphics Printer: ____________           
  256.                                                                                 
  257.   Printable Lines/Page: ___                                                     
  258.   Page Ejection Method: ________________________                                  
  259.   Page Ejection Prompt: ________________________________________                
  260.                                                                                 
  261.        <_______>  <________>  <______________>  <___________>  <_______>        
  262.                                                                                 
  263. /*
  264.  
  265. sub_page main_status from main_object horizontal 1 26
  266. sub_page main_button from main_object horizontal 27 5
  267.  
  268. #ENDIF      // Without HAS_EXIT_COLOR
  269.  
  270. #ENDIF      // Without HAS_SPOOLER
  271.  
  272.  
  273.  
  274. /main_footer
  275. ______________________│File ____________________________________│Memory _______.
  276. /file_pull_down
  277. ┌───────────────────┐
  278. │ _________________ │
  279. │ _________________ │
  280. │ _________________ │
  281. │ _________________ │
  282. │ _________________ │
  283. ├───────────────────┤
  284. │ _________________ │
  285. └───────────────────┘
  286. /keyboard_pull_down
  287. ┌─────────────────────┐
  288. │ ___________________ │
  289. └─────────────────────┘
  290. /*
  291.  
  292.  
  293. #SET G$ COLORS_MINIMUM      // Set up the minimum number of windows
  294.  
  295. #IFDEF HAS_EXIT_COLOR
  296.     #SET G$ ( !g + HAS_EXIT_COLOR )
  297. #ENDIF
  298.  
  299. #IF ( !g = 3 )
  300.  
  301. /screen_pull_down
  302. ┌───────────────────┐
  303. │ _________________ │
  304. │ _________________ │
  305. │ _________________ │
  306. └───────────────────┘
  307. /*
  308.  
  309. #ENDIF
  310.  
  311. #IF ( !g = 4 )
  312.  
  313. /screen_pull_down
  314. ┌───────────────────┐
  315. │ _________________ │
  316. │ _________________ │
  317. │ _________________ │
  318. │ _________________ │
  319. └───────────────────┘
  320. /*
  321.  
  322. #ENDIF
  323.  
  324.  
  325. #IFDEF HAS_GRAPHICS
  326.  
  327. /graphics_pull_down
  328. ┌───────────────────┐
  329. │ _________________ │
  330. │ _________________ │
  331. └───────────────────┘
  332. /*
  333.  
  334. #ENDIF
  335.  
  336.  
  337. /appearance_pull_down
  338. ┌─────────────────────────┐
  339. │ _______________________ │
  340. │ _______________________ │
  341. │ _______________________ │
  342. │ _______________________ │
  343. │ _______________________ │
  344. │ _______________________ │
  345. └─────────────────────────┘
  346. /*
  347.  
  348.  
  349. // Set up to compile in the correct options_pull_down image.  The compile
  350. // time variable G is set through the following code to the correct number of
  351. // windows that we will require for the pull down.  !g is then tested to
  352. // control the actual image to be included into the application.
  353.  
  354. #SET G$ OPTIONS_MINIMUM     // Set-up minimum number of options windows
  355.  
  356. #IFDEF HAS_POWER_FAIL                   // If HAS_POWER_FAIL is defined, 
  357.     #SET G$ ( !g + HAS_POWER_FAIL )     // Increment G by the correct number of
  358. #ENDIF                                  // windows
  359.  
  360. #IF ( !g = 3 )  // If we require 3 windows, include this image
  361.  
  362. /options_pull_down
  363. ┌─────────────────────┐
  364. │ ___________________ │
  365. │ ___________________ │
  366. │ ___________________ │
  367. └─────────────────────┘
  368. /*
  369.  
  370. #ENDIF          // !g = 3
  371.  
  372. #IF ( !g = 4 )  // If we require 4 windows, include this image
  373.  
  374. /options_pull_down
  375. ┌──────────────────────────┐
  376. │ ________________________ │
  377. │ ________________________ │
  378. │ ________________________ │
  379. │ ________________________ │
  380. └──────────────────────────┘
  381. /*
  382.  
  383. #ENDIF          // !g = 4
  384.  
  385.  
  386. // Set up to compile in the correct miscellaneous_pull_down image.  The compile
  387. // time variable G is set through the following code to the correct number of
  388. // windows that we will require for the pull down.  !g is then tested to
  389. // control the actual image to be included into the application.
  390.  
  391. #SET G$ MISC_MINIMUM
  392.  
  393. #IFDEF HAS_CRITICAL_ERROR
  394.     #SET G$ ( !g + HAS_CRITICAL_ERROR )
  395. #ENDIF
  396.  
  397. #IFDEF HAS_MOUSE
  398.     #SET G$ ( !g + HAS_MOUSE )
  399. #ENDIF
  400.  
  401. #IFDEF HAS_SPOOLER
  402.     #SET G$ ( !g + HAS_SPOOLER )
  403. #ENDIF
  404.  
  405.  
  406. #IF ( !g = 6 )  // If we need 6 windows, use this image
  407.  
  408. /miscellaneous_pull_down
  409. ┌───────────────────────────────────┐
  410. │ _________________________________ │
  411. │ _________________________________ │
  412. │ _________________________________ │
  413. │ _________________________________ │
  414. │ _________________________________ │
  415. │ _________________________________ │
  416. └───────────────────────────────────┘
  417. /*
  418.  
  419. #ENDIF          // !g = 6
  420.  
  421. #IF ( !g = 7 )  // If we need 7 windows, use this image
  422.  
  423. /miscellaneous_pull_down
  424. ┌───────────────────────────────────┐
  425. │ _________________________________ │
  426. │ _________________________________ │
  427. │ _________________________________ │
  428. │ _________________________________ │
  429. │ _________________________________ │
  430. │ _________________________________ │
  431. │ _________________________________ │
  432. └───────────────────────────────────┘
  433. /*
  434.  
  435. #ENDIF          // !g = 7
  436.  
  437. #IF ( !g = 8 )  // If we need 8 windows, use this image
  438.  
  439. /miscellaneous_pull_down
  440. ┌────────────────────────────────────┐
  441. │ __________________________________ │
  442. │ __________________________________ │
  443. │ __________________________________ │
  444. │ __________________________________ │
  445. │ __________________________________ │
  446. │ __________________________________ │
  447. │ __________________________________ │
  448. │ __________________________________ │
  449. └────────────────────────────────────┘
  450. /*
  451.  
  452. #ENDIF          // !g = 8
  453.  
  454.  
  455. /load_as
  456. ╔══════════════════════════════════════════════════════════════════╗
  457. ║__________________________________________________________________║
  458. ║                                                                  ║
  459. ║ Load configuration:                                              ║
  460. ║ ________________________________________________________________ ║
  461. ║                                                                  ║
  462. ║   Reset after load: ___                                          ║
  463. ║                                                                  ║
  464. ║                 <_____>  <__________>  <_______>                 ║
  465. ╚══════════════════════════════════════════════════════════════════╝
  466. /*
  467.  
  468. sub_page load_as_title from load_as 1
  469. sub_page load_as_form from load_as 2
  470. sub_page load_as_reset from load_as 3
  471. sub_page load_as_button from load_as horizontal 4 3
  472.  
  473. /save_as
  474. ╔══════════════════════════════════════════════════════════════════╗
  475. ║__________________________________________________________________║
  476. ║                                                                  ║
  477. ║ Save configuration as:                                           ║
  478. ║ ________________________________________________________________ ║
  479. ║                                                                  ║
  480. ║                 <_____>  <__________>  <_______>                 ║
  481. ╚══════════════════════════════════════════════════════════════════╝
  482. /*
  483.  
  484. sub_page save_as_title from save_as 1
  485. sub_page save_as_form from save_as 2
  486. sub_page save_as_button from save_as horizontal 3 3
  487.  
  488. /print_as
  489. ╔══════════════════════════════════════════════════════════════════╗
  490. ║__________________________________________________________________║
  491. ║                                                                  ║
  492. ║                Output to ___________                             ║
  493. ║                          ___________                             ║
  494. ║ Filename:                                                        ║
  495. ║ ________________________________________________________________ ║
  496. ║                                                                  ║
  497. ║                 <_____>  <__________>  <_______>                 ║
  498. ╚══════════════════════════════════════════════════════════════════╝
  499. /*
  500.  
  501. sub_page print_as_title from print_as 1
  502. sub_page print_as_radio from print_as vertical 2 2
  503. sub_page print_as_form from print_as 4
  504. sub_page print_as_button from print_as horizontal 5 3
  505.  
  506. /not_done
  507. ╔══════════════════════════════════════════╗
  508. ║                                          ║
  509. ║ ________________________________________ ║
  510. ║ ________________________________________ ║
  511. ║                                          ║
  512. ║                   <__>                   ║
  513. ║                                          ║
  514. ╚══════════════════════════════════════════╝
  515. /*
  516.  
  517. sub_page not_done_button from not_done 3
  518.  
  519. /keyboard_stuff
  520. ╔════════════════════════════════════════════════════════════════════════════╗
  521. ║____________________________________________________________________________║
  522. ║                                                                            ║
  523. ║                                                                            ║
  524. ║                      ┌─────────────────────────────┐                       ║
  525. ║                      │ ___________________________ │                       ║
  526. ║                      │ ___________________________ │                       ║
  527. ║                      │ ___________________________ │                       ║
  528. ║                      │ ___________________________ │                       ║
  529. ║                      │ ___________________________ │                       ║
  530. ║                      │ ___________________________ │                       ║
  531. ║                      │ ___________________________ │                       ║
  532. ║                      │ ___________________________ │                       ║
  533. ║                      │ ___________________________ │                       ║
  534. ║                      │ ___________________________ │                       ║
  535. ║                      │ ___________________________ │                       ║
  536. ║                      └─────────────────────────────┘                       ║
  537. ║                                                                            ║
  538. ║                                                                            ║
  539. ║                           <_________>  <_______>                           ║
  540. ╚════════════════════════════════════════════════════════════════════════════╝
  541. /*
  542.  
  543. sub_page keyboard_stuff_title from keyboard_stuff 1
  544. sub_page keyboard_list from keyboard_stuff vertical 2 11
  545. sub_page keyboard_button from keyboard_stuff horizontal 13 2
  546.  
  547. /accelerator_key
  548. ╔════════════════════════════════════════════════════════════════╗
  549. ║________________________________________________________________║
  550. ║                                                                ║
  551. ║     Key Combination: ____________________________________      ║
  552. ║                                                                ║
  553. ║ Press new key combination, or press [Enter] to leave unchanged.║
  554. ║                                                                ║
  555. ║                <__>  <_____>  <______>  <____>                 ║
  556. ╚════════════════════════════════════════════════════════════════╝
  557. /*
  558.  
  559. sub_page accelerator_key_title from accelerator_key 1
  560. sub_page accelerator_key_form from accelerator_key 2
  561. sub_page accelerator_key_button from accelerator_key horizontal 3 4
  562.  
  563. /reassign_key
  564. ╔═════════════════════════════════════════╗
  565. ║              -- Warning --              ║
  566. ║                                         ║
  567. ║ This combination is already assigned to ║
  568. ║ _______________________________________ ║
  569. ║                                         ║
  570. ║ If you reassign it, then you must enter ║
  571. ║   a new key combination for the above   ║
  572. ║       function, or it will become       ║
  573. ║      unavailable from the keyboard.     ║
  574. ║                                         ║
  575. ║          Reassign? <___>  <__>          ║
  576. ║                                         ║
  577. ╚═════════════════════════════════════════╝
  578. /*
  579.  
  580. sub_page reassign from reassign_key horizontal 2 2
  581.  
  582. /invalid_key
  583. ╔══════════════════════════════════════╗
  584. ║            -- Warning --             ║
  585. ║                                      ║
  586. ║ This key combination cannot be used. ║
  587. ║                                      ║
  588. ║                 <__>                 ║
  589. ╚══════════════════════════════════════╝
  590. /*
  591.  
  592. sub_page invalid_key_button from invalid_key 1
  593.  
  594. /invalid_char
  595. ╔══════════════════════════════════════╗
  596. ║            -- Warning --             ║
  597. ║                                      ║
  598. ║    This character cannot be used.    ║
  599. ║                                      ║
  600. ║                 <__>                 ║
  601. ╚══════════════════════════════════════╝
  602. /*
  603.  
  604. sub_page invalid_char_button from invalid_char 1
  605.  
  606. /default_color
  607. ╔═══════════════════════════════════════════════════════════╗
  608. ║___________________________________________________________║
  609. ║                                    ┌────────────┐         ║
  610. ║             Window color: __.      │____________│         ║
  611. ║              Image color: __.      │____________│         ║
  612. ║                                    └────────────┘         ║
  613. ║ Selection cursor palette: _____________________________   ║
  614. ║                                                           ║
  615. ║ <_____>  <_________>  <________>  <__________>  <_______> ║
  616. ╚═══════════════════════════════════════════════════════════╝
  617. /*
  618.  
  619. sub_page default_color_title from default_color 1
  620. sub_page default_color_form from default_color vertical 2 3
  621. sub_page default_color_sample from default_color vertical 3 2
  622. sub_page default_color_button from default_color horizontal 7 5
  623.  
  624. /palette_color_stuff
  625. ╔════════════════════════════════════════════════════════════════════════════╗
  626. ║____________________________________________________________________________║
  627. ║                                                                            ║
  628. ║                                                                            ║
  629. ║                     ┌───────────────────────────────┐                      ║
  630. ║                     │ _____________________________ │                      ║
  631. ║                     │ _____________________________ │                      ║
  632. ║                     │ _____________________________ │                      ║
  633. ║                     │ _____________________________ │                      ║
  634. ║                     │ _____________________________ │                      ║
  635. ║                     │ _____________________________ │                      ║
  636. ║                     │ _____________________________ │                      ║
  637. ║                     │ _____________________________ │                      ║
  638. ║                     │ _____________________________ │                      ║
  639. ║                     │ _____________________________ │                      ║
  640. ║                     │ _____________________________ │                      ║
  641. ║                     └───────────────────────────────┘                      ║
  642. ║                                                                            ║
  643. ║                                                                            ║
  644. ║                           <_________>  <_______>                           ║
  645. ╚════════════════════════════════════════════════════════════════════════════╝
  646. /*
  647.  
  648. sub_page palette_color_stuff_title from palette_color_stuff 1
  649. sub_page palette_color_stuff_list from palette_color_stuff vertical 2 11
  650. sub_page palette_colors_button from palette_color_stuff horizontal 13 2
  651.  
  652. /palette_color_popup
  653. ╔═══════════════════════════════════════════════════════════╗
  654. ║___________________________________________________________║
  655. ║                                                           ║
  656. ║              Uncursored: __.                              ║
  657. ║                Shadowed: __.       ┌────────────┐         ║
  658. ║              Pointed at: __.       │____________│         ║
  659. ║ Shadowed and pointed at: __.       │____________│         ║
  660. ║                Selected: __.       └────────────┘         ║
  661. ║ Selected and pointed at: __.                              ║
  662. ║                                                           ║
  663. ║ <_____>  <_________>  <________>  <__________>  <_______> ║
  664. ╚═══════════════════════════════════════════════════════════╝
  665. /*
  666.  
  667. sub_page palette_color_popup_title from palette_color_popup 1
  668. sub_page palette_color_popup_form from palette_color_popup vertical 2 6
  669. sub_page palette_color_popup_sample from palette_color_popup vertical 5 2
  670. sub_page palette_color_popup_button from palette_color_popup horizontal 10 5
  671.  
  672. /class_color_stuff
  673. ╔════════════════════════════════════════════════════════════════════════════╗
  674. ║____________________________________________________________________________║
  675. ║                                                                            ║
  676. ║                                                                            ║
  677. ║                          ┌──────────────────────┐                          ║
  678. ║                          │ ____________________ │                          ║
  679. ║                          │ ____________________ │                          ║
  680. ║                          │ ____________________ │                          ║
  681. ║                          │ ____________________ │                          ║
  682. ║                          │ ____________________ │                          ║
  683. ║                          │ ____________________ │                          ║
  684. ║                          │ ____________________ │                          ║
  685. ║                          │ ____________________ │                          ║
  686. ║                          │ ____________________ │                          ║
  687. ║                          │ ____________________ │                          ║
  688. ║                          │ ____________________ │                          ║
  689. ║                          └──────────────────────┘                          ║
  690. ║                                                                            ║
  691. ║                                                                            ║
  692. ║                           <_________>  <_______>                           ║
  693. ╚════════════════════════════════════════════════════════════════════════════╝
  694. /*
  695.  
  696. sub_page class_color_stuff_title from class_color_stuff 1
  697. sub_page class_list from class_color_stuff vertical 2 11
  698. sub_page class_colors_button from class_color_stuff horizontal 13 2
  699.  
  700. /class_color_popup
  701. ╔═══════════════════════════════════════════════════════════╗
  702. ║___________________________________________________________║
  703. ║                                    ┌────────────┐         ║
  704. ║             Window color: __.      │____________│         ║
  705. ║              Image color: __.      │____________│         ║
  706. ║                                    └────────────┘         ║
  707. ║ Selection cursor palette: _____________________________   ║
  708. ║                                                           ║
  709. ║ <_____>  <_________>  <________>  <__________>  <_______> ║
  710. ╚═══════════════════════════════════════════════════════════╝
  711. /*
  712.  
  713. sub_page class_color_popup_title from class_color_popup 1
  714. sub_page class_color_popup_form from class_color_popup vertical 2 3
  715. sub_page class_color_popup_sample from class_color_popup vertical 3 2
  716. sub_page class_color_popup_button from class_color_popup horizontal 7 5
  717.  
  718. /prompt_color_client
  719. ╔═════════════════════════════════════════╗
  720. ║_________________________________________║
  721. ║                                         ║
  722. ║ ┌─ Background color: ┐   ┌────────────┐ ║
  723. ║ │                    │   │____________│ ║
  724. ║ │ __________________ │   │____________│ ║
  725. ║ └────────────────────┘   └────────────┘ ║
  726. ║                                         ║
  727. ║ ┌─ Foreground color: ┐   <_____>        ║
  728. ║ │                    │   <________>     ║
  729. ║ │ __________________ │   <__________>   ║
  730. ║ └────────────────────┘   <_______>      ║
  731. ╚═════════════════════════════════════════╝
  732. /*
  733.  
  734. sub_page prompt_color_title from prompt_color_client 1
  735. sub_page prompt_color_sample from prompt_color_client vertical 2 2
  736. sub_page prompt_color_background from prompt_color_client 3
  737. sub_page prompt_color_foreground from prompt_color_client 7
  738. sub_page prompt_color_button from prompt_color_client vertical 5 4
  739.  
  740. /prompt_palette_list
  741. ┌─ Palettes: ───────────────┐
  742. │__________________________ │
  743. │__________________________ │
  744. │__________________________ │
  745. │__________________________ │
  746. │__________________________ │
  747. └───────────────────────────┘
  748. /*
  749.  
  750.  
  751. #IFDEF HAS_EXIT_COLOR
  752.  
  753. /exit_color
  754. ╔═══════════════════════════════════════════════════════════╗
  755. ║___________________________________________________________║
  756. ║                                                           ║
  757. ║  Please specify the color in which ┌────────────┐         ║
  758. ║  to clear the screen on exit from  │____________│         ║
  759. ║              DataFlex              │____________│         ║
  760. ║                                    └────────────┘         ║
  761. ║          Screen Color: __.                                ║
  762. ║                                                           ║
  763. ║ <_____>  <_________>  <________>  <__________>  <_______> ║
  764. ╚═══════════════════════════════════════════════════════════╝
  765. /*
  766.  
  767. sub_page exit_color_title  from exit_color 1
  768. sub_page exit_color_form   from exit_color 4
  769. sub_page exit_color_sample from exit_color vertical 2 2
  770. sub_page exit_color_button from exit_color horizontal 5 5
  771.  
  772. #ENDIF      // HAS_EXIT_COLOR
  773.  
  774.  
  775. /date_format
  776. ╔════════════════════════════════════════════╗
  777. ║____________________________________________║
  778. ║                                            ║
  779. ║ DataFlex can display dates in one of three ║
  780. ║ different formats.                         ║
  781. ║                                            ║
  782. ║ How would you like DataFlex to display eg. ║
  783. ║ November 25, 1980?                         ║
  784. ║                                            ║
  785. ║               ______________               ║
  786. ║               ______________               ║
  787. ║               ______________               ║
  788. ║                                            ║
  789. ║ Which character should DataFlex use as a   ║
  790. ║ separator?    _                            ║
  791. ║                                            ║
  792. ║      <_____>  <_________>  <________>      ║
  793. ║          <__________>  <_______>           ║
  794. ╚════════════════════════════════════════════╝
  795. /*
  796.  
  797. sub_page date_format_title from date_format 1
  798. sub_page date_format_radio from date_format vertical 2 3
  799. sub_page date_format_form from date_format 5
  800. sub_page date_format_button from date_format horizontal 6 5
  801.  
  802. /numeric_format
  803. ╔════════════════════════════════════════════╗
  804. ║____________________________________________║
  805. ║                                            ║
  806. ║ DataFlex offers two ways of punctuating    ║
  807. ║ output through numeric windows using the   ║
  808. ║ print command.                             ║
  809. ║                                            ║
  810. ║ How would you like DataFlex to output eg.  ║
  811. ║ the number ten thousand?                   ║
  812. ║                                            ║
  813. ║               _____________                ║
  814. ║               _____________                ║
  815. ║                                            ║
  816. ║ <_____> <________> <__________> <_______>  ║
  817. ╚════════════════════════════════════════════╝
  818. /*
  819.  
  820. sub_page numeric_format_title from numeric_format 1
  821. sub_page numeric_format_radio from numeric_format vertical 2 2
  822. sub_page numeric_format_button from numeric_format horizontal 4 4
  823.  
  824. /check_strings
  825. ╔════════════════════════════════════════════╗
  826. ║____________________________________________║
  827. ║                                            ║
  828. ║  Which characters do you want DataFlex to  ║
  829. ║  use to mark selected and unselected       ║
  830. ║  checkbox items?                           ║
  831. ║                                            ║
  832. ║  ___ selected items  ___ unselected items  ║
  833. ║                                            ║
  834. ║ <_____> <________> <__________> <_______>  ║
  835. ╚════════════════════════════════════════════╝
  836. /*
  837.  
  838. sub_page check_strings_title from check_strings 1
  839. sub_page check_strings_form from check_strings horizontal 2 2
  840. sub_page check_strings_button from check_strings horizontal 4 4
  841.  
  842. /radio_strings
  843. ╔════════════════════════════════════════════╗
  844. ║____________________________________________║
  845. ║                                            ║
  846. ║  Which characters do you want DataFlex to  ║
  847. ║  use to mark selected and unselected       ║
  848. ║  radio button items?                       ║
  849. ║                                            ║
  850. ║  ___ selected items  ___ unselected items  ║
  851. ║                                            ║
  852. ║ <_____> <________> <__________> <_______>  ║
  853. ╚════════════════════════════════════════════╝
  854. /*
  855.  
  856. sub_page radio_strings_title from radio_strings 1
  857. sub_page radio_strings_form from radio_strings horizontal 2 2
  858. sub_page radio_strings_button from radio_strings horizontal 4 4
  859.  
  860. /currency
  861. ╔════════════════════════════════════════════╗
  862. ║____________________________________________║
  863. ║                                            ║
  864. ║ As an option, DataFlex can put text next   ║
  865. ║ to a number to indicate currency.          ║
  866. ║                                            ║
  867. ║ Which text would you like DataFlex to use  ║
  868. ║ to indicate currency? ____________________ ║
  869. ║                                            ║
  870. ║ <_____> <________> <__________> <_______>  ║
  871. ╚════════════════════════════════════════════╝
  872. /*
  873.  
  874. sub_page currency_title from currency 1
  875. sub_page currency_form from currency 2
  876. sub_page currency_button from currency horizontal 3 4
  877.  
  878. /window_fill
  879. ╔════════════════════════════════════════════╗
  880. ║____________________________________________║
  881. ║                                            ║
  882. ║ By default, DataFlex uses ________         ║
  883. ║ characters to display empty windows.       ║
  884. ║                                            ║
  885. ║ Which character would you like DataFlex to ║
  886. ║ use to display empty windows? _            ║
  887. ║                                            ║
  888. ║      <_____>  <_________>  <________>      ║
  889. ║          <__________>  <_______>           ║
  890. ╚════════════════════════════════════════════╝
  891. /*
  892.  
  893. sub_page window_fill_title from window_fill 1
  894. sub_page window_fill_sample from window_fill 2
  895. sub_page window_fill_form from window_fill 3
  896. sub_page window_fill_button from window_fill horizontal 4 5
  897.  
  898. /scrollbar_strings
  899. ╔════════════════════════════════════════════╗
  900. ║____________________________________________║
  901. ║                                            ║
  902. ║  Which characters would you like DataFlex  ║
  903. ║  to use to display scroll bars?            ║
  904. ║                                            ║
  905. ║                scroll up: _                ║
  906. ║               scroll bar: _                ║
  907. ║              scroll down: _                ║
  908. ║                                            ║
  909. ║      <_____>  <_________>  <________>      ║
  910. ║          <__________>  <_______>           ║
  911. ╚════════════════════════════════════════════╝
  912. /*
  913.  
  914. sub_page scrollbar_strings_title from scrollbar_strings 1
  915. sub_page scrollbar_strings_form from scrollbar_strings vertical 2 3
  916. sub_page scrollbar_strings_button from scrollbar_strings horizontal 5 5
  917.  
  918. /press_any_key
  919. ╔════════════════════════════════════════════╗
  920. ║____________________________________________║
  921. ║                                            ║
  922. ║  When outputting to the screen, DataFlex   ║
  923. ║  may prompt the user for a keystroke when  ║
  924. ║  the screen is full.                       ║
  925. ║                                            ║
  926. ║  Which message would you like DataFlex to  ║
  927. ║  use to prompt the user for a keystroke?   ║
  928. ║  ________________________________________  ║
  929. ║                                            ║
  930. ║ <_____> <________> <__________> <_______>  ║
  931. ╚════════════════════════════════════════════╝
  932. /*
  933.  
  934. sub_page press_any_key_title from press_any_key 1
  935. sub_page press_any_key_form from press_any_key 2
  936. sub_page press_any_key_button from press_any_key horizontal 3 4
  937.  
  938. /auto_return
  939. ╔════════════════════════════════════════════╗
  940. ║____________________________________________║
  941. ║                                            ║
  942. ║ When a window is completely filled during  ║
  943. ║ data-entry, should DataFlex automatically  ║
  944. ║ advance to the next window without waiting ║
  945. ║ for the Enter key?                         ║
  946. ║                                            ║
  947. ║             _______   _______              ║
  948. ║                                            ║
  949. ║ <_____> <________> <__________> <_______>  ║
  950. ╚════════════════════════════════════════════╝
  951. /*
  952.  
  953. sub_page auto_return_title from auto_return 1
  954. sub_page auto_return_radio from auto_return horizontal 2 2
  955. sub_page auto_return_button from auto_return horizontal 4 4
  956.  
  957. /scroll_increments
  958. ╔═══════════════════════════════════════════╗
  959. ║___________________________________________║
  960. ║                                           ║
  961. ║  When scrolling horizontally in an edit   ║
  962. ║  object, DataFlex uses one character      ║
  963. ║  increments by default.                   ║
  964. ║                                           ║
  965. ║  In how many character increments do you  ║
  966. ║  want DataFlex to scroll horizontally in  ║
  967. ║  edit objects?      _.                    ║
  968. ║                                           ║
  969. ║ <_____> <________> <__________> <_______> ║
  970. ╚═══════════════════════════════════════════╝
  971. /*
  972.  
  973. sub_page scroll_increments_title from scroll_increments 1
  974. sub_page scroll_increments_form from scroll_increments 2
  975. sub_page scroll_increments_button from scroll_increments horizontal 3 4
  976.  
  977. /scrollbar_offset
  978. ╔════════════════════════════════════════════╗
  979. ║____________________________________________║
  980. ║                                            ║
  981. ║ How many positions should be left between  ║
  982. ║ the rightmost window in a list and the     ║
  983. ║ scroll bar?                                ║
  984. ║                _. position(s)              ║
  985. ║                                            ║
  986. ║ <_____> <________> <__________> <_______>  ║
  987. ╚════════════════════════════════════════════╝
  988. /*
  989.  
  990. sub_page scrollbar_offset_title from scrollbar_offset 1
  991. sub_page scrollbar_offset_form from scrollbar_offset 2
  992. sub_page scrollbar_offset_button from scrollbar_offset horizontal 3 4
  993.  
  994.  
  995. #IFDEF HAS_MOUSE        // Only include this image for OSs with mouse support
  996.  
  997. /double_click
  998. ╔════════════════════════════════════════════════════════════╗
  999. ║____________________________________________________________║
  1000. ║                                                            ║
  1001. ║ Certain mouse selections require you to double-click; to   ║
  1002. ║ press the mouse button twice within a short time interval. ║
  1003. ║                                                            ║
  1004. ║      Set your double-click speed on the scale below.       ║
  1005. ║                         1-3-5-7-9                          ║
  1006. ║                 slower ___________ faster                  ║
  1007. ║                                                            ║
  1008. ║ Test the current (saved) speed by double-clicking on this  ║
  1009. ║                       <___________>                        ║
  1010. ║                                                            ║
  1011. ║                    _____  ____________                     ║
  1012. ║                                                            ║
  1013. ║            Note: To test a new setting you must            ║
  1014. ║             save and reset the configuration.              ║
  1015. ║                                                            ║
  1016. ║        <_____>  <________>  <__________>  <_______>        ║
  1017. ╚════════════════════════════════════════════════════════════╝
  1018. /*
  1019.  
  1020. sub_page double_click_title from double_click 1
  1021. sub_page double_click_meter from double_click 2
  1022. sub_page double_click_test from double_click 3
  1023. sub_page double_click_result from double_click horizontal 4 2
  1024. sub_page double_click_button from double_click horizontal 6 4
  1025.  
  1026. #ENDIF      // HAS_MOUSE
  1027.  
  1028.  
  1029. /page_control
  1030. ╔═══════════════════════════════════════════════════════════╗
  1031. ║___________________________________________________________║
  1032. ║                                                           ║
  1033. ║ How would you like DataFlex to eject a page?              ║
  1034. ║                                                           ║
  1035. ║ _________________________________________________________ ║
  1036. ║ _________________________________________________________ ║
  1037. ║ _________________________________________________________ ║
  1038. ║                                                           ║
  1039. ║ What is the height of your physical page in lines: __.    ║
  1040. ║      Of this amount, how many may DataFlex use:    __.    ║
  1041. ║                                                           ║
  1042. ║       <_____>  <________>  <__________>  <_______>        ║
  1043. ╚═══════════════════════════════════════════════════════════╝
  1044. /*
  1045.  
  1046. sub_page page_control_title from page_control 1
  1047. sub_page page_control_radio from page_control vertical 2 3
  1048. sub_page page_control_form from page_control vertical 5 2
  1049. sub_page page_control_button from page_control horizontal 7 4
  1050.  
  1051.  
  1052. #IFDEF HAS_POWER_FAIL       // Only include this image of OSs with Power fail
  1053.                             //  protection
  1054.  
  1055. /power_fail
  1056. ╔════════════════════════════════════════════════════════════════════════════╗
  1057. ║____________________________________________________________________________║
  1058. ║                                                                            ║
  1059. ║ Data may be lost in a power failure. If you use an uninterruptible power   ║
  1060. ║ supply (UPS) you need not worry about this.  If you do not use a UPS, then ║
  1061. ║ DataFlex can minimize the risk of data loss by automatically flushing its  ║
  1062. ║ file buffers when appropriate, at the cost of slightly slowing down save,  ║
  1063. ║ update and delete operations.  If you do not use a UPS, nor DataFlex's     ║
  1064. ║ power fail protection, then you must make backups very often and restore   ║
  1065. ║ your database from backup after a power failure.                           ║
  1066. ║                                                                            ║
  1067. ║            Do you wish to use DataFlex's power fail protection?            ║
  1068. ║                                                                            ║
  1069. ║                             _______    _______                             ║
  1070. ║                                                                            ║
  1071. ║ Note: Using DataFlex's power fail protection does not mean that you should ║
  1072. ║       not make periodic backups.                                           ║
  1073. ║                                                                            ║
  1074. ║                <_____>  <________>  <__________>  <_______>                ║
  1075. ╚════════════════════════════════════════════════════════════════════════════╝
  1076. /*
  1077.  
  1078. sub_page power_fail_title from power_fail 1
  1079. sub_page power_fail_radio from power_fail horizontal 2 2
  1080. sub_page power_fail_button from power_fail horizontal 4 4
  1081.  
  1082. #ENDIF      // HAS_POWER_FAIL
  1083.  
  1084.  
  1085. #IFDEF HAS_GRAPHICS     // Only include for OSs that support graphics
  1086.  
  1087. /adapters
  1088. ╔════════════════════════════════════════════════════════════════════════════╗
  1089. ║____________________________________________________________________________║
  1090. ║                                                                            ║
  1091. ║ Enter the directory in which the graphics drivers are located and select   ║
  1092. ║ the right driver and default mode for your adapter.                        ║
  1093. ║                                                                            ║
  1094. ║ Directory is: ____________________________________________________________ ║
  1095. ║  Driver name: ____________                                                 ║
  1096. ║ Default mode: _.                                                           ║
  1097. ║                    Files                Directories                        ║
  1098. ║                    ┌─────────────┐      ┌─────────────┐                    ║
  1099. ║                    │____________ │      │____________ │                    ║
  1100. ║                    │____________ │      │____________ │                    ║
  1101. ║                    │____________ │      │____________ │                    ║
  1102. ║                    │____________ │      │____________ │                    ║
  1103. ║                    │____________ │      │____________ │                    ║
  1104. ║                    └─────────────┘      └─────────────┘                    ║
  1105. ║                                                                            ║
  1106. ║                <_____>  <________>  <__________>  <_______>                ║
  1107. ╚════════════════════════════════════════════════════════════════════════════╝
  1108. /*
  1109.  
  1110. format adapters.4 {range=0,99,autoclear}
  1111.  
  1112. sub_page adapters_title from adapters 1
  1113. sub_page adapters_form from adapters vertical 2 3
  1114. sub_page adapters_file_list from adapters vertical 5 5
  1115. sub_page adapters_dir_list from adapters vertical 6 5
  1116. sub_page adapters_button from adapters horizontal 15 4
  1117.  
  1118. /printers
  1119. ╔════════════════════════════════════════════════════════════════════════════╗
  1120. ║____________________________________________________________________________║
  1121. ║                                                                            ║
  1122. ║ Enter the directory in which the graphics drivers are located and select   ║
  1123. ║ the right driver for your printer.                                         ║
  1124. ║                                                                            ║
  1125. ║ Directory is: ____________________________________________________________ ║
  1126. ║  Driver name: ____________                                                 ║
  1127. ║                                                                            ║
  1128. ║                    Files                Directories                        ║
  1129. ║                    ┌─────────────┐      ┌─────────────┐                    ║
  1130. ║                    │____________ │      │____________ │                    ║
  1131. ║                    │____________ │      │____________ │                    ║
  1132. ║                    │____________ │      │____________ │                    ║
  1133. ║                    │____________ │      │____________ │                    ║
  1134. ║                    │____________ │      │____________ │                    ║
  1135. ║                    └─────────────┘      └─────────────┘                    ║
  1136. ║                                                                            ║
  1137. ║                <_____>  <________>  <__________>  <_______>                ║
  1138. ╚════════════════════════════════════════════════════════════════════════════╝
  1139. /*
  1140.  
  1141. sub_page printers_title from printers 1
  1142. sub_page printers_form from printers vertical 2 2
  1143. sub_page printers_file_list from printers vertical 4 5
  1144. sub_page printers_dir_list from printers vertical 5 5
  1145. sub_page printers_button from printers horizontal 14 4
  1146.  
  1147. #ENDIF
  1148.  
  1149. #IFDEF HAS_TRANSLATION      // Only include for OSs that require translation
  1150.  
  1151. /translate
  1152. ╔════════════════════════════════════════════════════════════════════════════╗
  1153. ║____________________________________________________________________________║
  1154. ║───────────────────────────────────┬────────────────────────────────────────║
  1155. ║   0 1 2 3 4 5 6 7 8 9 A B C D E F │  Current Char: __        Maps To: ____ ║
  1156. ║00                                 │  Key Sequence: _______________________ ║
  1157. ║10                                 │ Lowercases To: __  Uppercases To: __   ║
  1158. ║20                                 │                                        ║
  1159. ║30                                 │ ──────── Character Attributes ──────── ║
  1160. ║40                                 │    Alphabetic: ___     Printable: ___  ║
  1161. ║50                                 │     Lowercase: ___   Punctuation: ___  ║
  1162. ║60                                 │     Uppercase: ___   White Space: ___  ║
  1163. ║70                                 │                                        ║
  1164. ║80                                 │       Allowed in a variable name: ___  ║
  1165. ║90                                 │     Allowed in a file/field name: ___  ║
  1166. ║A0                                 │   Allowed as the first character: ___  ║
  1167. ║B0                                 │                                        ║
  1168. ║C0                                 │     <____________>  <____________>     ║
  1169. ║D0                                 │<_________________>  <_________________>║
  1170. ║E0                                 │                                        ║
  1171. ║F0                                 │ <_____><________><__________><_______> ║
  1172. ╚════════════════════════════════════════════════════════════════════════════╝
  1173. /*
  1174.  
  1175. sub_page translate_title from translate 1
  1176. sub_page translate_select from translate 2
  1177. sub_page translate_remap from translate horizontal 3 2
  1178. sub_page translate_chars from translate horizontal 5 2
  1179. sub_page translate_alpha_check from translate vertical 7 3
  1180. sub_page translate_print_check from translate vertical 8 3
  1181. sub_page translate_symbol_check from translate vertical 13 3
  1182. sub_page translate_button from translate horizontal 16 8
  1183.  
  1184. #ELSE       // HAS_TRANSLATION
  1185.  
  1186. /translate
  1187. ╔════════════════════════════════════════════════════════════════════════════╗
  1188. ║____________________________________________________________________________║
  1189. ║───────────────────────────────────┬────────────────────────────────────────║
  1190. ║   0 1 2 3 4 5 6 7 8 9 A B C D E F │  Current Char: __                      ║
  1191. ║00                                 │  Key Sequence: _______________________ ║
  1192. ║10                                 │ Lowercases To: __  Uppercases To: __   ║
  1193. ║20                                 │                                        ║
  1194. ║30                                 │ ──────── Character Attributes ──────── ║
  1195. ║40                                 │    Alphabetic: ___     Printable: ___  ║
  1196. ║50                                 │     Lowercase: ___   Punctuation: ___  ║
  1197. ║60                                 │     Uppercase: ___   White Space: ___  ║
  1198. ║70                                 │                                        ║
  1199. ║80                                 │       Allowed in a variable name: ___  ║
  1200. ║90                                 │     Allowed in a file/field name: ___  ║
  1201. ║A0                                 │   Allowed as the first character: ___  ║
  1202. ║B0                                 │                                        ║
  1203. ║C0                                 │     <____________>  <____________>     ║
  1204. ║D0                                 │<_________________>  <_________________>║
  1205. ║E0                                 │                                        ║
  1206. ║F0                                 │ <_____><________><__________><_______> ║
  1207. ╚════════════════════════════════════════════════════════════════════════════╝
  1208. /*
  1209.  
  1210. sub_page translate_title from translate 1
  1211. sub_page translate_select from translate 2
  1212. sub_page translate_remap from translate horizontal 3 1
  1213. sub_page translate_chars from translate horizontal 4 2
  1214. sub_page translate_alpha_check from translate vertical 6 3
  1215. sub_page translate_print_check from translate vertical 7 3
  1216. sub_page translate_symbol_check from translate vertical 12 3
  1217. sub_page translate_button from translate horizontal 15 8
  1218.  
  1219. #ENDIF      // HAS_TRANSLATION
  1220.  
  1221.  
  1222. #IFDEF HAS_CRITICAL_ERROR       // Only include of OSs that require a
  1223.                                 //  critical error handler
  1224.  
  1225. /crit_error
  1226. ╔═══════════════════════════════════════════════════════════════════════════╗
  1227. ║___________________________________________________________________________║
  1228. ║                                                                           ║
  1229. ║  Allow user response: ___  Options allowed: ___ Abort ___ Retry ___ Fail  ║
  1230. ║                                                                           ║
  1231. ║        Automatic response after _. seconds: ___ Abort ___ Retry ___ Fail  ║
  1232. ║                                                                           ║
  1233. ║       Automatically retry _. times (0=forever), then: ___ Abort ___ Fail  ║
  1234. ║                                                                           ║
  1235. ║               <_____>  <________>  <__________>  <_______>                ║
  1236. ╚═══════════════════════════════════════════════════════════════════════════╝
  1237. /*
  1238.  
  1239. sub_page crit_error_title        from crit_error 1
  1240. sub_page crit_error_user_allowed from crit_error 2
  1241. sub_page crit_error_options      from crit_error horizontal 3 3
  1242. sub_page crit_error_timeout      from crit_error 6
  1243. sub_page crit_error_default1     from crit_error horizontal 7 3
  1244. sub_page crit_error_retries      from crit_error 10
  1245. sub_page crit_error_default2     from crit_error horizontal 11 2
  1246. sub_page crit_error_button       from crit_error horizontal 13 4
  1247.  
  1248. /crit_text
  1249. ╔════════════════════════════════════════════════════════════════════════════╗
  1250. ║____________________________________________________________________________║
  1251. ║                                                                            ║
  1252. ║ The default critical error message format is as follows:                   ║
  1253. ║ Error on drive @|device:  Diagnostic  A=Abort R=Retry F=Fail:              ║
  1254. ║                                                                            ║
  1255. ║ With translations/replacements:                                            ║
  1256. ║ __________________________________________________________________________ ║
  1257. ║                                                                            ║
  1258. ║            Provide translations/replacements for the following:            ║
  1259. ║                                                                            ║
  1260. ║            Phrase   Shows as:            Option Shows as:  Keys            ║
  1261. ║            ──────── ──────────           ────── ────────── ────            ║
  1262. ║            Error on __________           Abort  __________  __             ║
  1263. ║            drive    __________           Retry  __________  __             ║
  1264. ║            device   __________           Fail   __________  __             ║
  1265. ║                                                                            ║
  1266. ║                       <____________________________>                       ║
  1267. ║                <_____>  <________>  <__________>  <_______>                ║
  1268. ╚════════════════════════════════════════════════════════════════════════════╝
  1269. /*
  1270.  
  1271. sub_page crit_text_title from crit_text 1
  1272. sub_page crit_text_format from crit_text 2
  1273. sub_page crit_text_phrases from crit_text vertical 3 3
  1274. sub_page crit_text_options from crit_text rectangular 4 2 3
  1275. sub_page crit_text_special from crit_text 12
  1276. sub_page crit_text_button from crit_text horizontal 13 4
  1277.  
  1278. #ENDIF      // HAS_CRITICAL_ERROR
  1279.  
  1280.  
  1281. /default_text
  1282. ╔════════════════════════════════════════════════════════════════════════════╗
  1283. ║____________________________________________________________________________║
  1284. ║                                                                            ║
  1285. ║ When DataFlex attempts to display an error, but there is a problem trying  ║
  1286. ║ to find the correct error text in the DataFlex error file, one of the      ║
  1287. ║ following errors will appear.  Provide translations/replacements for the   ║
  1288. ║ following:                                                                 ║
  1289. ║                                                                            ║
  1290. ║ Phrase                       Shows as:                                     ║
  1291. ║ ─────────────────────────    ────────────────────────────────────────      ║
  1292. ║ No error text: Can't open    ____________________________                  ║
  1293. ║ No error text available      ________________________________________      ║
  1294. ║ Error number out of range    ________________________________________      ║
  1295. ║                                                                            ║
  1296. ║                <_____>  <________>  <__________>  <_______>                ║
  1297. ╚════════════════════════════════════════════════════════════════════════════╝
  1298. /*
  1299.  
  1300. sub_page default_text_title from default_text 1
  1301. sub_page default_text_phrases from default_text 2 3 4
  1302. sub_page default_text_button from default_text 5 6 7 8 
  1303.  
  1304.  
  1305. #IFDEF HAS_CRITICAL_ERROR
  1306.  
  1307. /crit_diags
  1308. ╔════════════════════════════════════════════════════════════════════╗
  1309. ║____________________________________________________________________║
  1310. ║                                                                    ║
  1311. ║     Original Diagnostic             Translation/replacement        ║
  1312. ║     ──────────────────────────────  ────────────────────────────── ║
  1313. ║ _.  ______________________________  ______________________________ ║
  1314. ║ _.  ______________________________  ______________________________ ║
  1315. ║ _.  ______________________________  ______________________________ ║
  1316. ║ _.  ______________________________  ______________________________ ║
  1317. ║ _.  ______________________________  ______________________________ ║
  1318. ║ _.  ______________________________  ______________________________ ║
  1319. ║ _.  ______________________________  ______________________________ ║
  1320. ║ _.  ______________________________  ______________________________ ║
  1321. ║ _.  ______________________________  ______________________________ ║
  1322. ║ _.  ______________________________  ______________________________ ║
  1323. ║                                                                    ║
  1324. ║            <_____>  <________>  <__________>  <_______>            ║
  1325. ╚════════════════════════════════════════════════════════════════════╝
  1326. /*
  1327.  
  1328. sub_page crit_diags_title from crit_diags 1
  1329. sub_page crit_diags_list from crit_diags rectangular 2 3 10
  1330. sub_page crit_diags_button from crit_diags horizontal 32 4
  1331.  
  1332. #ENDIF      // HAS_CRITICAL_ERROR
  1333.  
  1334.  
  1335. #IFDEF HAS_SPOOLER
  1336.  
  1337. /spooler_control
  1338. ╔═════════════════════════════════════════════════════════════════╗
  1339. ║_________________________________________________________________║
  1340. ║                                                                 ║
  1341. ║  You may specify any valid system spooler command and options.  ║
  1342. ║  Use "%s" to signify the name of the spooler device that will   ║
  1343. ║  be provided by DFPRINTER.                                      ║
  1344. ║                                                                 ║
  1345. ║                                                                 ║
  1346. ║  Please specify the spooler configuration string to use if the  ║
  1347. ║  DFPRINTER environment variable is set:                         ║
  1348. ║       __________________________________________________        ║
  1349. ║                                                                 ║
  1350. ║  Please specify the spooler configuration string to use if the  ║
  1351. ║  DFPRINTER environment variable is not set:                     ║
  1352. ║       __________________________________________________        ║
  1353. ║                                                                 ║
  1354. ║          <_____>  <________>  <__________>  <_______>           ║
  1355. ╚═════════════════════════════════════════════════════════════════╝
  1356. /*
  1357.  
  1358. sub_page spooler_control_title from spooler_control 1
  1359. sub_page spooler_control_form from spooler_control 2 3
  1360. sub_page spooler_control_button from spooler_control horizontal 4 4
  1361.  
  1362. #ENDIF      // HAS_SPOOLER
  1363.  
  1364.  
  1365. /not_saved
  1366. ╔══════════════════════════════════════════╗
  1367. ║                                          ║
  1368. ║   You have made changes.  Do you want    ║
  1369. ║ to save your changes before ____________ ║
  1370. ║                                          ║
  1371. ║          <___>  <__>  <______>           ║
  1372. ║                                          ║
  1373. ╚══════════════════════════════════════════╝
  1374. /*
  1375.  
  1376. sub_page not_saved_button from not_saved horizontal 2 3
  1377.  
  1378. /ascii_map
  1379. ╔════════════════════════════════════════════╗
  1380. ║                                            ║
  1381. ║                                            ║
  1382. ║ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _  ║
  1383. ║ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _  ║
  1384. ║ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _  ║
  1385. ║ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _  ║
  1386. ║                                            ║
  1387. ║                                            ║
  1388. ╚════════════════════════════════════════════╝
  1389. /ascii_title
  1390. ____________________________________________
  1391. /ascii_button
  1392. <_____> <________> <__________> <_______>
  1393. /profile_header
  1394. Current settings:
  1395.  
  1396. /profile_keys_header
  1397. Accelerator keys                       setting
  1398.  
  1399. /profile_colors_header
  1400. Class colors               window      image       palette
  1401.  
  1402. /profile_colors
  1403.   ________________________ ___________ ___________ ___________________________
  1404. /profile_palette_colors_header
  1405. Palette colors
  1406. /profile_palette_colors_subheader
  1407.  
  1408.   __________________________________   color
  1409.  
  1410. /profile_palette_colors
  1411.     Uncursored                         ___________
  1412.     Shadowed                           ___________
  1413.     Pointed at                         ___________
  1414.     Shadowed + pointed at              ___________
  1415.     Selected                           ___________
  1416.     Selected + pointed at              ___________
  1417. /profile_ui_header
  1418. User interface                         value
  1419.  
  1420. /profile_critical
  1421. Critical error settings
  1422.  
  1423. "Error on"            : ____________________
  1424. "Abort" translation   : ____________________
  1425. "Retry" translation   : ____________________
  1426. "Fail" translation    : ____________________
  1427. "Drive" translation   : ____________________
  1428. "Device" translation  : ____________________
  1429. Response allowed?     : _
  1430. Options allowed       : ________________
  1431. Timeout time          : __ seconds
  1432. Timeout default       : _____
  1433. Critical retries      : __
  1434. Retry failure default : _____
  1435. Abort Character(s)    : __
  1436. Retry Character(s)    : __
  1437. Fail Character(s)     : __
  1438. /*
  1439. /profile_ui_body
  1440.   Selected checkbox item               ________________________________________
  1441.   Unselected checkbox item             ________________________________________
  1442.   Selected radio button                ________________________________________
  1443.   Unselected radio button              ________________________________________
  1444.   Scroll bar offset                    ________________________________________
  1445.   Scroll bar up                        ________________________________________
  1446.   Scroll bar track                     ________________________________________
  1447.   Scroll bar down                      ________________________________________
  1448.   Horizontal scroll increments         ________________________________________
  1449.   Mouse double-click speed             ________________________________________
  1450. /profile_misc_header
  1451. Miscellaneous                          value
  1452.  
  1453. /profile_misc_body
  1454.   Exit color                           ________________________________________
  1455.   Automatic return option              ________________________________________
  1456.   Date format options                  ________________________________________
  1457.   Numeric format option                ________________________________________
  1458.   Power fail protection                ________________________________________
  1459.   Currency string                      ________________________________________
  1460.   Window fill character                ________________________________________
  1461.   Graphics adapter driver              ________________________________________
  1462.   Graphics adapter mode                ________________________________________
  1463.   Graphics printer driver              ________________________________________
  1464.  
  1465.   "Press Any Key" prompt               ________________________________________
  1466.  
  1467.   Spooler w/DFPRINTER Configuration    ________________________________________
  1468.   Spooler w/o DFPRINTER Configuration  ________________________________________
  1469. /profile_body
  1470.   ____________________________________ ________________________________________
  1471. /profile_mapping_header
  1472. Keyboard Translation
  1473.  
  1474.        Upper Lower  Maps                                            File/ First
  1475.   Key  case  case    To  Upper Lower Alpha Print Punct Space  Var   Field Char
  1476.  
  1477. /profile_mapping_body
  1478.   __    __    __    ____   _     _     _     _     _     _     _     _     _ 
  1479. /profile_footer
  1480.  
  1481. /classnames
  1482. Default                   
  1483. Message                   
  1484. Menu                      
  1485. Edit                      
  1486. Scroll Bar                
  1487. List                      
  1488. Button                    
  1489. Checkbox                  
  1490. Checklist                 
  1491. Form                      
  1492. Form List                 
  1493. Client                    
  1494. Title                     
  1495. Action Bar                
  1496. Warning Message           
  1497. Critical Message          
  1498. Error Message             
  1499. Help                      
  1500. Trace                     
  1501. Entry                     
  1502. Entry List                
  1503. Radio Button              
  1504. Radio Button List         
  1505. Virtual Console           
  1506. Clipboard                 
  1507. /palettenames
  1508. Inherit                   
  1509. Default                   
  1510. Non-modal Client          
  1511. Action Bar                
  1512. Modal Client              
  1513. Alternate Default         
  1514. Alternate Non-modal Client
  1515. Alternate Action Bar      
  1516. Alternate Modal Client    
  1517. /key_descriptions
  1518. Enter
  1519. Print Screen
  1520. Escape
  1521. Left Arrow
  1522. Right Arrow
  1523. Previous Item
  1524. Find
  1525. Superfind
  1526. Save Record
  1527. Delete Record
  1528. Calculate
  1529. User Defined 1
  1530. Clear Panel
  1531. Find Previous
  1532. Find Next
  1533. Up Arrow
  1534. Down Arrow
  1535. Help
  1536. User Defined 2
  1537. Insert
  1538. Delete Character
  1539. Backspace
  1540. Clear and Return
  1541. Clear and Backspace
  1542. Exit Function
  1543. Exit Application
  1544. Prompt
  1545. Refresh Screen
  1546. Switch To Next Panel
  1547. Switch To Previous Panel
  1548. Superfind Previous
  1549. Superfind Next
  1550. Switch To Action Bar
  1551. Scroll Page Up
  1552. Scroll Page Down
  1553. Scroll Page Left
  1554. Scroll Page Right
  1555. Begin Of Line
  1556. End Of Line
  1557. Next Item
  1558. Erase To End Of Line
  1559. Begin Of Panel
  1560. End Of Panel
  1561. Begin Of Data
  1562. End Of Data
  1563. Skip Word Left
  1564. Skip Word Right
  1565. Add Mode
  1566. Paste
  1567. Copy
  1568. Cut
  1569. Clear All Panels
  1570. Mark
  1571. Zoom
  1572. Close Panel
  1573. /keycaps
  1574. Enter
  1575. Tab
  1576. Backspace
  1577. Esc
  1578. Up Arrow
  1579. Down Arrow
  1580. Left Arrow
  1581. Right Arrow
  1582. Home
  1583. End
  1584. PgUp
  1585. PgDn
  1586. Ins
  1587. Del
  1588. F1
  1589. F2
  1590. F3
  1591. F4
  1592. F5
  1593. F6
  1594. F7
  1595. F8
  1596. F9
  1597. F10
  1598. F11
  1599. F12
  1600. /misc_defaults
  1601. ahd*.dsp
  1602. ahd*.prt
  1603. DataFlex Configuration Utility
  1604. dfini.cfg
  1605. =
  1606. ...
  1607. F1=Help
  1608. F2=OK
  1609. F4=Prompt
  1610. F5=Reset
  1611. Esc=Cancel
  1612. Esc=Close
  1613. Yes
  1614. No
  1615. OK
  1616. Cancel
  1617. Help
  1618. /read_this 
  1619. ╔═════════════════════════════════════════════════════════════════════════╗
  1620. ║                                                                         ║
  1621. ║                            --- WARNING ---                              ║
  1622. ║                                                                         ║
  1623. ║ Find below the default ini settings.  DO NOT MODIFY!                    ║
  1624. ║ This image is used for initialization and for verification when saving. ║
  1625. ║ Changing this image IN ANY WAY may very well render this program        ║
  1626. ║ useless, as well as any ini files created or modified with it.          ║
  1627. ║                                                                         ║
  1628. ╚═════════════════════════════════════════════════════════════════════════╝
  1629. /default_ini
  1630. 258=5139
  1631. 259=4100
  1632. 260=4103
  1633. 261=4104
  1634. 262=5122
  1635. 263=4120
  1636. 264=5144
  1637. 265=4113
  1638. 266=5137
  1639. 267=4628
  1640. 268=4624
  1641. 269=4116
  1642. 270=4118
  1643. 271=4119
  1644. 272=4101
  1645. 273=4102
  1646. 274=4112
  1647. 275=4625
  1648. 276=4109
  1649. 277=4110
  1650. 278=4099
  1651. 279=6145
  1652. 280=4611
  1653. 281=4114
  1654. 282=4627
  1655. 283=4115
  1656. 284=5140
  1657. 285=4117
  1658. 286=5141
  1659. 287=5142
  1660. 288=5143
  1661. 289=4121
  1662. 290=4107
  1663. 291=4108
  1664. 292=6155
  1665. 293=6156
  1666. 294=4105
  1667. 295=4106
  1668. 296=4098
  1669. 297=6147
  1670. 298=6149
  1671. 299=6150
  1672. 300=6153
  1673. 301=6154
  1674. 302=6151
  1675. 303=6152
  1676. 304=5145
  1677. 305=555
  1678. 306=2093
  1679. 307=557
  1680. 308=6164
  1681. 310=2140
  1682. 311=4632
  1683. 312=6163
  1684. 2049=1 2 1
  1685. 2050=0 0 0
  1686. 2051=0 0 0
  1687. 2052=112 2 0
  1688. 2053=0 0 0
  1689. 2054=0 0 0
  1690. 2055=0 0 0
  1691. 2056=0 0 0
  1692. 2057=0 0 0
  1693. 2058=0 0 0
  1694. 2059=0 0 0
  1695. 2060=0 0 2
  1696. 2061=0 0 0
  1697. 2062=1 112 3
  1698. 2063=0 0 0
  1699. 2064=0 0 0
  1700. 2065=0 0 0
  1701. 2066=0 0 0
  1702. 2068=112 2 0
  1703. 2069=0 0 0
  1704. 2070=0 0 0
  1705. 2072=0 0 0
  1706. 2073=0 0 0
  1707. 2074=0 0 0
  1708. 2075=112 2 0
  1709. 2304=0 1
  1710. 2305=0 2
  1711. 2306=0 112
  1712. 2307=0 240
  1713. 2308=0 9
  1714. 2309=0 1
  1715. 2310=0 120
  1716. 2311=0 1
  1717. 2304=1 1
  1718. 2305=1 2
  1719. 2306=1 112
  1720. 2307=1 240
  1721. 2308=1 9
  1722. 2309=1 1
  1723. 2310=1 120
  1724. 2311=1 1
  1725. 2304=2 112
  1726. 2305=2 127
  1727. 2306=2 30
  1728. 2307=2 31
  1729. 2308=2 30
  1730. 2309=2 1
  1731. 2310=2 9
  1732. 2311=2 1
  1733. 2304=3 1
  1734. 2305=3 2
  1735. 2306=3 112
  1736. 2307=3 240
  1737. 2308=3 9
  1738. 2309=3 1
  1739. 2310=3 120
  1740. 2311=3 1
  1741. 2304=4 1
  1742. 2305=4 2
  1743. 2306=4 112
  1744. 2307=4 240
  1745. 2308=4 9
  1746. 2309=4 1
  1747. 2310=4 120
  1748. 2311=4 1
  1749. 2304=5 1
  1750. 2305=5 2
  1751. 2306=5 112
  1752. 2307=5 240
  1753. 2308=5 9
  1754. 2309=5 1
  1755. 2310=5 120
  1756. 2311=5 1
  1757. 2304=6 112
  1758. 2305=6 127
  1759. 2306=6 30
  1760. 2307=6 31
  1761. 2308=6 30
  1762. 2309=6 1
  1763. 2310=6 9
  1764. 2311=6 1
  1765. 2304=7 1
  1766. 2305=7 2
  1767. 2306=7 112
  1768. 2307=7 240
  1769. 2308=7 9
  1770. 2309=7 1
  1771. 2310=7 120
  1772. 2311=7 1
  1773. 2320=[ ] 
  1774. 2321=[X] 
  1775. 2322=(■) 
  1776. 2323=( ) 
  1777. 2336=0
  1778. 2337=30
  1779. 2338=31
  1780. 2339=177
  1781. 2340=1
  1782. 2341=4
  1783. 2560=1 2
  1784. 2561=0
  1785. 2562=0
  1786. 2563=0
  1787. 2564=0
  1788. 2566=$
  1789. 2567=95
  1790. 2568=.\dev\ahdherc.dsp
  1791. 2569=0
  1792. 2570=.\dev\ahdbw8.prt
  1793. 2571=7
  1794. 2816=0
  1795. 2816=65537
  1796. 2816=131074
  1797. 2816=196611
  1798. 2816=262148
  1799. 2816=327685
  1800. 2816=393222
  1801. 2816=458759
  1802. 2816=524296
  1803. 2816=589833
  1804. 2816=655370
  1805. 2816=720907
  1806. 2816=786444
  1807. 2816=851981
  1808. 2816=917518
  1809. 2816=983055
  1810. 2816=1048592
  1811. 2816=1114129
  1812. 2816=1179666
  1813. 2816=1245203
  1814. 2816=1310740
  1815. 2816=1376277
  1816. 2816=1441814
  1817. 2816=1507351
  1818. 2816=1572888
  1819. 2816=1638425
  1820. 2816=1703962
  1821. 2816=1769499
  1822. 2816=1835036
  1823. 2816=1900573
  1824. 2816=1966110
  1825. 2816=2031647
  1826. 2816=2097184
  1827. 2816=2162721
  1828. 2816=2228258
  1829. 2816=2293795
  1830. 2816=2359332
  1831. 2816=2424869
  1832. 2816=2490406
  1833. 2816=2555943
  1834. 2816=2621480
  1835. 2816=2687017
  1836. 2816=2752554
  1837. 2816=2818091
  1838. 2816=2883628
  1839. 2816=2949165
  1840. 2816=3014702
  1841. 2816=3080239
  1842. 2816=3145776
  1843. 2816=3211313
  1844. 2816=3276850
  1845. 2816=3342387
  1846. 2816=3407924
  1847. 2816=3473461
  1848. 2816=3538998
  1849. /default_ini_reset
  1850. 258=5139
  1851. 259=4100
  1852. 260=4103
  1853. 261=4104
  1854. 262=5122
  1855. 263=4120
  1856. 264=5144
  1857. 265=4113
  1858. 266=5137
  1859. 267=4628
  1860. 268=4624
  1861. 269=4116
  1862. 270=4118
  1863. 271=4119
  1864. 272=4101
  1865. 273=4102
  1866. 274=4112
  1867. 275=4625
  1868. 276=4109
  1869. 277=4110
  1870. 278=4099
  1871. 279=6145
  1872. 280=4611
  1873. 281=4114
  1874. 282=4627
  1875. 283=4115
  1876. 284=5140
  1877. 285=4117
  1878. 286=5141
  1879. 287=5142
  1880. 288=5143
  1881. 289=4121
  1882. 290=4107
  1883. 291=4108
  1884. 292=6155
  1885. 293=6156
  1886. 294=4105
  1887. 295=4106
  1888. 296=4098
  1889. 297=6147
  1890. 298=6149
  1891. 299=6150
  1892. 300=6153
  1893. 301=6154
  1894. 302=6151
  1895. 303=6152
  1896. 304=5145
  1897. 305=555
  1898. 306=2093
  1899. 307=557
  1900. 308=6164
  1901. 310=2140
  1902. 311=4632
  1903. 2320=[ ] 
  1904. 2321=[X] 
  1905. 2322=(■) 
  1906. 2323=( ) 
  1907. 2336=0
  1908. 2337=30
  1909. 2338=31
  1910. 2339=177
  1911. 2340=1
  1912. 2341=4
  1913. 2566=$
  1914. 2567=95
  1915. 2568=.\dev\adhherc.dsp
  1916. 2569=0
  1917. 2570=.\dev\adhbw8.prt
  1918. 2571=7
  1919. 2816=0
  1920. 2816=65537
  1921. 2816=131074
  1922. 2816=196611
  1923. 2816=262148
  1924. 2816=327685
  1925. 2816=393222
  1926. 2816=458759
  1927. 2816=524296
  1928. 2816=589833
  1929. 2816=655370
  1930. 2816=720907
  1931. 2816=786444
  1932. 2816=851981
  1933. 2816=917518
  1934. 2816=983055
  1935. 2816=1048592
  1936. 2816=1114129
  1937. 2816=1179666
  1938. 2816=1245203
  1939. 2816=1310740
  1940. 2816=1376277
  1941. 2816=1441814
  1942. 2816=1507351
  1943. 2816=1572888
  1944. 2816=1638425
  1945. 2816=1703962
  1946. 2816=1769499
  1947. 2816=1835036
  1948. 2816=1900573
  1949. 2816=1966110
  1950. 2816=2031647
  1951. 2816=2097184
  1952. 2816=2162721
  1953. 2816=2228258
  1954. 2816=2293795
  1955. 2816=2359332
  1956. 2816=2424869
  1957. 2816=2490406
  1958. 2816=2555943
  1959. 2816=2621480
  1960. 2816=2687017
  1961. 2816=2752554
  1962. 2816=2818091
  1963. 2816=2883628
  1964. 2816=2949165
  1965. 2816=3014702
  1966. 2816=3080239
  1967. 2816=3145776
  1968. 2816=3211313
  1969. 2816=3276850
  1970. 2816=3342387
  1971. 2816=3407924
  1972. 2816=3473461
  1973. 2816=3538998
  1974. /default_ini2
  1975. 2816=3604535
  1976. 2816=3670072
  1977. 2816=3735609
  1978. 2816=3801146
  1979. 2816=3866683
  1980. 2816=3932220
  1981. 2816=3997757
  1982. 2816=4063294
  1983. 2816=4128831
  1984. 2816=4194368
  1985. 2816=4259905
  1986. 2816=4325442
  1987. 2816=4390979
  1988. 2816=4456516
  1989. 2816=4522053
  1990. 2816=4587590
  1991. 2816=4653127
  1992. 2816=4718664
  1993. 2816=4784201
  1994. 2816=4849738
  1995. 2816=4915275
  1996. 2816=4980812
  1997. 2816=5046349
  1998. 2816=5111886
  1999. 2816=5177423
  2000. 2816=5242960
  2001. 2816=5308497
  2002. 2816=5374034
  2003. 2816=5439571
  2004. 2816=5505108
  2005. 2816=5570645
  2006. 2816=5636182
  2007. 2816=5701719
  2008. 2816=5767256
  2009. 2816=5832793
  2010. 2816=5898330
  2011. 2816=5963867
  2012. 2816=6029404
  2013. 2816=6094941
  2014. 2816=6160478
  2015. 2816=6226015
  2016. 2816=6291552
  2017. 2816=6357057
  2018. 2816=6422594
  2019. 2816=6488131
  2020. 2816=6553668
  2021. 2816=6619205
  2022. 2816=6684742
  2023. 2816=6750279
  2024. 2816=6815816
  2025. 2816=6881353
  2026. 2816=6946890
  2027. 2816=7012427
  2028. 2816=7077964
  2029. 2816=7143501
  2030. 2816=7209038
  2031. 2816=7274575
  2032. 2816=7340112
  2033. 2816=7405649
  2034. 2816=7471186
  2035. 2816=7536723
  2036. 2816=7602260
  2037. 2816=7667797
  2038. 2816=7733334
  2039. 2816=7798871
  2040. 2816=7864408
  2041. 2816=7929945
  2042. 2816=7995482
  2043. 2816=8061051
  2044. 2816=8126588
  2045. 2816=8192125
  2046. 2816=8257662
  2047. 2816=8323199
  2048. 2816=8388736
  2049. 2816=8454298
  2050. 2816=8519824
  2051. 2816=8585398
  2052. 2816=8650894
  2053. 2816=8716471
  2054. 2816=8781967
  2055. 2816=8847488
  2056. 2816=8913106
  2057. 2816=8978643
  2058. 2816=9044180
  2059. 2816=9109720
  2060. 2816=9175255
  2061. 2816=9240798
  2062. 2816=9306254
  2063. 2816=9371791
  2064. 2816=9437328
  2065. 2816=9502866
  2066. 2816=9568402
  2067. 2816=9634018
  2068. 2816=9699481
  2069. 2816=9765091
  2070. 2816=9830634
  2071. 2816=9896171
  2072. 2816=9961624
  2073. 2816=10027161
  2074. 2816=10092698
  2075. 2816=10158237
  2076. 2816=10223772
  2077. 2816=10289309
  2078. 2816=10354846
  2079. 2816=10420383
  2080. 2816=10485941
  2081. 2816=10551510
  2082. 2816=10617056
  2083. 2816=10682601
  2084. 2816=10748069
  2085. 2816=10813605
  2086. 2816=10879142
  2087. 2816=10944679
  2088. 2816=11010216
  2089. 2816=11075753
  2090. 2816=11141290
  2091. 2816=11206827
  2092. 2816=11272364
  2093. 2816=11337901
  2094. 2816=11403438
  2095. 2816=11468975
  2096. 2816=11534512
  2097. 2816=11600049
  2098. 2816=11665586
  2099. 2816=11731123
  2100. 2816=11796660
  2101. 2816=11862197
  2102. 2816=11927734
  2103. 2816=11993271
  2104. 2816=12058808
  2105. 2816=12124345
  2106. 2816=12189882
  2107. 2816=12255419
  2108. 2816=12320956
  2109. 2816=12386493
  2110. 2816=12452030
  2111. 2816=12517567
  2112. 2816=12583104
  2113. 2816=12648641
  2114. 2816=12714178
  2115. 2816=12779715
  2116. 2816=12845252
  2117. 2816=12910789
  2118. 2816=12976327
  2119. 2816=13041863
  2120. 2816=13107400
  2121. 2816=13172937
  2122. 2816=13238474
  2123. 2816=13304011
  2124. 2816=13369548
  2125. 2816=13435085
  2126. 2816=13500622
  2127. 2816=13566159
  2128. 2816=13631697
  2129. 2816=13697233
  2130. 2816=13762770
  2131. 2816=13828307
  2132. 2816=13893844
  2133. 2816=13959381
  2134. 2816=14024918
  2135. 2816=14090455
  2136. 2816=14155992
  2137. 2816=14221529
  2138. 2816=14287066
  2139. 2816=14352603
  2140. 2816=14418140
  2141. 2816=14483677
  2142. 2816=14549214
  2143. 2816=14614751
  2144. 2816=14680288
  2145. 2816=14745825
  2146. 2816=14811362
  2147. 2816=14876899
  2148. 2816=14942437
  2149. 2816=15007973
  2150. 2816=15073510
  2151. 2816=15139048
  2152. 2816=15204584
  2153. 2816=15270121
  2154. 2816=15335658
  2155. 2816=15401195
  2156. 2816=15466733
  2157. 2816=15532269
  2158. 2816=15597806
  2159. 2816=15663343
  2160. 2816=15728880
  2161. 2816=15794417
  2162. 2816=15859954
  2163. 2816=15925491
  2164. 2816=15991028
  2165. 2816=16056565
  2166. 2816=16122102
  2167. 2816=16187639
  2168. 2816=16253176
  2169. 2816=16318713
  2170. 2816=16384250
  2171. 2816=16449787
  2172. 2816=16515324
  2173. 2816=16580861
  2174. 2816=16646398
  2175. /default_ini3
  2176. 2816=16711935
  2177. 2817=0
  2178. 2817=65537
  2179. 2817=131074
  2180. 2817=196611
  2181. 2817=262148
  2182. 2817=327685
  2183. 2817=393222
  2184. 2817=458759
  2185. 2817=524296
  2186. 2817=589833
  2187. 2817=655370
  2188. 2817=720907
  2189. 2817=786444
  2190. 2817=851981
  2191. 2817=917518
  2192. 2817=983055
  2193. 2817=1048592
  2194. 2817=1114129
  2195. 2817=1179666
  2196. 2817=1245203
  2197. 2817=1310740
  2198. 2817=1376277
  2199. 2817=1441814
  2200. 2817=1507351
  2201. 2817=1572888
  2202. 2817=1638425
  2203. 2817=1703962
  2204. 2817=1769499
  2205. 2817=1835036
  2206. 2817=1900573
  2207. 2817=1966110
  2208. 2817=2031647
  2209. 2817=2097184
  2210. 2817=2162721
  2211. 2817=2228258
  2212. 2817=2293795
  2213. 2817=2359332
  2214. 2817=2424869
  2215. 2817=2490406
  2216. 2817=2555943
  2217. 2817=2621480
  2218. 2817=2687017
  2219. 2817=2752554
  2220. 2817=2818091
  2221. 2817=2883628
  2222. 2817=2949165
  2223. 2817=3014702
  2224. 2817=3080239
  2225. 2817=3145776
  2226. 2817=3211313
  2227. 2817=3276850
  2228. 2817=3342387
  2229. 2817=3407924
  2230. 2817=3473461
  2231. 2817=3538998
  2232. 2817=3604535
  2233. 2817=3670072
  2234. 2817=3735609
  2235. 2817=3801146
  2236. 2817=3866683
  2237. 2817=3932220
  2238. 2817=3997757
  2239. 2817=4063294
  2240. 2817=4128831
  2241. 2817=4194368
  2242. 2817=4259937
  2243. 2817=4325474
  2244. 2817=4391011
  2245. 2817=4456548
  2246. 2817=4522085
  2247. 2817=4587622
  2248. 2817=4653159
  2249. 2817=4718696
  2250. 2817=4784233
  2251. 2817=4849770
  2252. 2817=4915307
  2253. 2817=4980844
  2254. 2817=5046381
  2255. 2817=5111918
  2256. 2817=5177455
  2257. 2817=5242992
  2258. 2817=5308529
  2259. 2817=5374066
  2260. 2817=5439603
  2261. 2817=5505140
  2262. 2817=5570677
  2263. 2817=5636214
  2264. 2817=5701751
  2265. 2817=5767288
  2266. 2817=5832825
  2267. 2817=5898362
  2268. 2817=5963867
  2269. 2817=6029404
  2270. 2817=6094941
  2271. 2817=6160478
  2272. 2817=6226015
  2273. 2817=6291552
  2274. 2817=6357089
  2275. 2817=6422626
  2276. 2817=6488163
  2277. 2817=6553700
  2278. 2817=6619237
  2279. 2817=6684774
  2280. 2817=6750311
  2281. 2817=6815848
  2282. 2817=6881385
  2283. 2817=6946922
  2284. 2817=7012459
  2285. 2817=7077996
  2286. 2817=7143533
  2287. 2817=7209070
  2288. 2817=7274607
  2289. 2817=7340144
  2290. 2817=7405681
  2291. 2817=7471218
  2292. 2817=7536755
  2293. 2817=7602292
  2294. 2817=7667829
  2295. 2817=7733366
  2296. 2817=7798903
  2297. 2817=7864440
  2298. 2817=7929977
  2299. 2817=7995514
  2300. 2817=8061051
  2301. 2817=8126588
  2302. 2817=8192125
  2303. 2817=8257662
  2304. 2817=8323199
  2305. 2817=8388743
  2306. 2817=8454273
  2307. 2817=8519810
  2308. 2817=8585347
  2309. 2817=8650884
  2310. 2817=8716421
  2311. 2817=8781958
  2312. 2817=8847495
  2313. 2817=8913032
  2314. 2817=8978569
  2315. 2817=9044106
  2316. 2817=9109643
  2317. 2817=9175180
  2318. 2817=9240717
  2319. 2817=9306244
  2320. 2817=9371782
  2321. 2817=9437314
  2322. 2817=9502865
  2323. 2817=9568401
  2324. 2817=9633939
  2325. 2817=9699476
  2326. 2817=9765013
  2327. 2817=9830550
  2328. 2817=9896087
  2329. 2817=9961624
  2330. 2817=10027156
  2331. 2817=10092673
  2332. 2817=10158235
  2333. 2817=10223772
  2334. 2817=10289307
  2335. 2817=10354846
  2336. 2817=10420383
  2337. 2817=10485920
  2338. 2817=10551457
  2339. 2817=10616994
  2340. 2817=10682531
  2341. 2817=10748068
  2342. 2817=10813604
  2343. 2817=10879142
  2344. 2817=10944679
  2345. 2817=11010216
  2346. 2817=11075753
  2347. 2817=11141290
  2348. 2817=11206827
  2349. 2817=11272364
  2350. 2817=11337901
  2351. 2817=11403438
  2352. 2817=11468975
  2353. 2817=11534512
  2354. 2817=11600049
  2355. 2817=11665586
  2356. 2817=11731123
  2357. 2817=11796660
  2358. 2817=11862176
  2359. 2817=11927683
  2360. 2817=11993221
  2361. 2817=12058808
  2362. 2817=12124345
  2363. 2817=12189882
  2364. 2817=12255419
  2365. 2817=12320956
  2366. 2817=12386493
  2367. 2817=12452030
  2368. 2817=12517567
  2369. 2817=12583104
  2370. 2817=12648641
  2371. 2817=12714178
  2372. 2817=12779715
  2373. 2817=12845252
  2374. 2817=12910789
  2375. 2817=12976326
  2376. /default_ini4
  2377. 2817=13041862
  2378. 2817=13107400
  2379. 2817=13172937
  2380. 2817=13238474
  2381. 2817=13304011
  2382. 2817=13369548
  2383. 2817=13435085
  2384. 2817=13500622
  2385. 2817=13566159
  2386. 2817=13631696
  2387. 2817=13697232
  2388. 2817=13762696
  2389. 2817=13828233
  2390. 2817=13893770
  2391. 2817=13959381
  2392. 2817=14024865
  2393. 2817=14090380
  2394. 2817=14155915
  2395. 2817=14221529
  2396. 2817=14287066
  2397. 2817=14352603
  2398. 2817=14418140
  2399. 2817=14483677
  2400. 2817=14549133
  2401. 2817=14614751
  2402. 2817=14680226
  2403. 2817=14745825
  2404. 2817=14811283
  2405. 2817=14876821
  2406. 2817=14942436
  2407. 2817=15007972
  2408. 2817=15073510
  2409. 2817=15139047
  2410. 2817=15204583
  2411. 2817=15270051
  2412. 2817=15335574
  2413. 2817=15401111
  2414. 2817=15466732
  2415. 2817=15532268
  2416. 2817=15597806
  2417. 2817=15663343
  2418. 2817=15728880
  2419. 2817=15794417
  2420. 2817=15859954
  2421. 2817=15925491
  2422. 2817=15991028
  2423. 2817=16056565
  2424. 2817=16122102
  2425. 2817=16187639
  2426. 2817=16253176
  2427. 2817=16318713
  2428. 2817=16384250
  2429. 2817=16449787
  2430. 2817=16515324
  2431. 2817=16580861
  2432. 2817=16646398
  2433. 2817=16711935
  2434. 2818=0
  2435. 2818=65536
  2436. 2818=131072
  2437. 2818=196608
  2438. 2818=262144
  2439. 2818=327680
  2440. 2818=393216
  2441. 2818=458752
  2442. 2818=524288
  2443. 2818=589856
  2444. 2818=655392
  2445. 2818=720928
  2446. 2818=786464
  2447. 2818=852000
  2448. 2818=917504
  2449. 2818=983040
  2450. 2818=1048576
  2451. 2818=1114112
  2452. 2818=1179648
  2453. 2818=1245184
  2454. 2818=1310720
  2455. 2818=1376256
  2456. 2818=1441792
  2457. 2818=1507328
  2458. 2818=1572864
  2459. 2818=1638400
  2460. 2818=1703936
  2461. 2818=1769472
  2462. 2818=1835008
  2463. 2818=1900544
  2464. 2818=1966080
  2465. 2818=2031616
  2466. 2818=2097185
  2467. 2818=2163473
  2468. 2818=2228241
  2469. 2818=2294545
  2470. 2818=2360081
  2471. 2818=2424849
  2472. 2818=2490385
  2473. 2818=2555921
  2474. 2818=2621457
  2475. 2818=2686993
  2476. 2818=2752529
  2477. 2818=2818065
  2478. 2818=2883601
  2479. 2818=2949137
  2480. 2818=3014929
  2481. 2818=3080209
  2482. 2818=3146629
  2483. 2818=3212165
  2484. 2818=3277701
  2485. 2818=3343237
  2486. 2818=3408773
  2487. 2818=3474309
  2488. 2818=3539845
  2489. 2818=3605381
  2490. 2818=3670917
  2491. 2818=3736453
  2492. 2818=3801105
  2493. 2818=3866641
  2494. 2818=3932177
  2495. 2818=3997713
  2496. 2818=4063249
  2497. 2818=4129553
  2498. 2818=4195089
  2499. 2818=4261827
  2500. 2818=4327363
  2501. 2818=4392899
  2502. 2818=4458435
  2503. 2818=4523971
  2504. 2818=4589507
  2505. 2818=4654915
  2506. 2818=4720451
  2507. 2818=4785987
  2508. 2818=4851523
  2509. 2818=4917059
  2510. 2818=4982595
  2511. 2818=5048131
  2512. 2818=5113667
  2513. 2818=5179203
  2514. 2818=5244739
  2515. 2818=5310275
  2516. 2818=5375811
  2517. 2818=5441347
  2518. 2818=5506883
  2519. 2818=5572419
  2520. 2818=5637955
  2521. 2818=5703491
  2522. 2818=5769027
  2523. 2818=5834563
  2524. 2818=5900099
  2525. 2818=5963793
  2526. 2818=6029329
  2527. 2818=6094865
  2528. 2818=6160401
  2529. 2818=6226705
  2530. 2818=6291473
  2531. 2818=6358923
  2532. 2818=6424459
  2533. 2818=6489995
  2534. 2818=6555531
  2535. 2818=6621067
  2536. 2818=6686603
  2537. 2818=6752011
  2538. 2818=6817547
  2539. 2818=6883083
  2540. 2818=6948619
  2541. 2818=7014155
  2542. 2818=7079691
  2543. 2818=7145227
  2544. 2818=7210763
  2545. 2818=7276299
  2546. 2818=7341835
  2547. 2818=7407371
  2548. 2818=7472907
  2549. 2818=7538443
  2550. 2818=7603979
  2551. 2818=7669515
  2552. 2818=7735051
  2553. 2818=7800587
  2554. 2818=7866123
  2555. 2818=7931659
  2556. 2818=7997195
  2557. 2818=8060945
  2558. 2818=8126481
  2559. 2818=8192017
  2560. 2818=8257553
  2561. 2818=8323072
  2562. 2818=8390467
  2563. 2818=8455947
  2564. 2818=8521483
  2565. 2818=8587019
  2566. 2818=8652555
  2567. 2818=8718091
  2568. 2818=8783627
  2569. 2818=8849163
  2570. 2818=8914699
  2571. 2818=8980235
  2572. 2818=9045771
  2573. 2818=9111307
  2574. 2818=9176843
  2575. 2818=9242379
  2576. 2818=9307971
  2577. /default_ini5
  2578. 2818=9373507
  2579. 2818=9439043
  2580. 2818=9504523
  2581. 2818=9570115
  2582. 2818=9635595
  2583. 2818=9701131
  2584. 2818=9766667
  2585. 2818=9832203
  2586. 2818=9897739
  2587. 2818=9963275
  2588. 2818=10028867
  2589. 2818=10094403
  2590. 2818=10159883
  2591. 2818=10223617
  2592. 2818=10291011
  2593. 2818=10354689
  2594. 2818=10420225
  2595. 2818=10487563
  2596. 2818=10553099
  2597. 2818=10618635
  2598. 2818=10684171
  2599. 2818=10749707
  2600. 2818=10815299
  2601. 2818=10878977
  2602. 2818=10944513
  2603. 2818=11010049
  2604. 2818=11075585
  2605. 2818=11141121
  2606. 2818=11206657
  2607. 2818=11272193
  2608. 2818=11337729
  2609. 2818=11403265
  2610. 2818=11468801
  2611. 2818=11534337
  2612. 2818=11599873
  2613. 2818=11665409
  2614. 2818=11730945
  2615. 2818=11796481
  2616. 2818=11863875
  2617. 2818=11929411
  2618. 2818=11994947
  2619. 2818=12058625
  2620. 2818=12124161
  2621. 2818=12189697
  2622. 2818=12255233
  2623. 2818=12320769
  2624. 2818=12386305
  2625. 2818=12451841
  2626. 2818=12517377
  2627. 2818=12582913
  2628. 2818=12648449
  2629. 2818=12713985
  2630. 2818=12779521
  2631. 2818=12845057
  2632. 2818=12910593
  2633. 2818=12977993
  2634. 2818=13043523
  2635. 2818=13107201
  2636. 2818=13172737
  2637. 2818=13238273
  2638. 2818=13303809
  2639. 2818=13369345
  2640. 2818=13434881
  2641. 2818=13500417
  2642. 2818=13565953
  2643. 2818=13633291
  2644. 2818=13698883
  2645. 2818=13764419
  2646. 2818=13829955
  2647. 2818=13895491
  2648. 2818=13960971
  2649. 2818=14026563
  2650. 2818=14092099
  2651. 2818=14157635
  2652. 2818=14221313
  2653. 2818=14286849
  2654. 2818=14352385
  2655. 2818=14417921
  2656. 2818=14483457
  2657. 2818=14550851
  2658. 2818=14614529
  2659. 2818=14681923
  2660. 2818=14745601
  2661. 2818=14812995
  2662. 2818=14878531
  2663. 2818=14944011
  2664. 2818=15009603
  2665. 2818=15073281
  2666. 2818=15140619
  2667. 2818=15206211
  2668. 2818=15271747
  2669. 2818=15337283
  2670. 2818=15402819
  2671. 2818=15468299
  2672. 2818=15533891
  2673. 2818=15597569
  2674. 2818=15663105
  2675. 2818=15728641
  2676. 2818=15794177
  2677. 2818=15859713
  2678. 2818=15925249
  2679. 2818=15990785
  2680. 2818=16056321
  2681. 2818=16121857
  2682. 2818=16187393
  2683. 2818=16252929
  2684. 2818=16318465
  2685. 2818=16384001
  2686. 2818=16449537
  2687. 2818=16515073
  2688. 2818=16580609
  2689. 2818=16646145
  2690. 2818=16711680
  2691. 2819=0
  2692. 2819=67649
  2693. 2819=133186
  2694. 2819=198723
  2695. 2819=264260
  2696. 2819=329797
  2697. 2819=395334
  2698. 2819=460871
  2699. 2819=528387
  2700. 2819=593922
  2701. 2819=661505
  2702. 2819=723019
  2703. 2819=788556
  2704. 2819=856065
  2705. 2819=919630
  2706. 2819=985167
  2707. 2819=1050704
  2708. 2819=1116241
  2709. 2819=1181778
  2710. 2819=1247315
  2711. 2819=1312852
  2712. 2819=1378389
  2713. 2819=1443926
  2714. 2819=1509463
  2715. 2819=1575000
  2716. 2819=1640537
  2717. 2819=1706074
  2718. 2819=1773572
  2719. 2819=1837148
  2720. 2819=1902685
  2721. 2819=1968222
  2722. 2819=2033709
  2723. 2819=2097184
  2724. 2819=2162721
  2725. 2819=2228258
  2726. 2819=2293795
  2727. 2819=2359332
  2728. 2819=2424869
  2729. 2819=2490406
  2730. 2819=2555943
  2731. 2819=2621480
  2732. 2819=2687017
  2733. 2819=2752554
  2734. 2819=2818091
  2735. 2819=2883628
  2736. 2819=2949165
  2737. 2819=3014702
  2738. 2819=3080239
  2739. 2819=3145776
  2740. 2819=3211313
  2741. 2819=3276850
  2742. 2819=3342387
  2743. 2819=3407924
  2744. 2819=3473461
  2745. 2819=3538998
  2746. 2819=3604535
  2747. 2819=3670072
  2748. 2819=3735609
  2749. 2819=3801146
  2750. 2819=3866683
  2751. 2819=3932220
  2752. 2819=3997757
  2753. 2819=4063294
  2754. 2819=4128831
  2755. 2819=4194368
  2756. 2819=4259905
  2757. 2819=4325442
  2758. 2819=4390979
  2759. 2819=4456516
  2760. 2819=4522053
  2761. 2819=4587590
  2762. 2819=4653127
  2763. 2819=4718664
  2764. 2819=4784201
  2765. 2819=4849738
  2766. 2819=4915275
  2767. 2819=4980812
  2768. 2819=5046349
  2769. 2819=5111886
  2770. 2819=5177423
  2771. 2819=5242960
  2772. 2819=5308497
  2773. 2819=5374034
  2774. 2819=5439571
  2775. 2819=5505108
  2776. 2819=5570645
  2777. 2819=5636182
  2778. /default_ini6
  2779. 2819=5701719
  2780. 2819=5767256
  2781. 2819=5832793
  2782. 2819=5898330
  2783. 2819=5963867
  2784. 2819=6029404
  2785. 2819=6094941
  2786. 2819=6160478
  2787. 2819=6226015
  2788. 2819=6291552
  2789. 2819=6357089
  2790. 2819=6422626
  2791. 2819=6488163
  2792. 2819=6553700
  2793. 2819=6619237
  2794. 2819=6684774
  2795. 2819=6750311
  2796. 2819=6815848
  2797. 2819=6881385
  2798. 2819=6946922
  2799. 2819=7012459
  2800. 2819=7077996
  2801. 2819=7143533
  2802. 2819=7209070
  2803. 2819=7274607
  2804. 2819=7340144
  2805. 2819=7405681
  2806. 2819=7471218
  2807. 2819=7536755
  2808. 2819=7602292
  2809. 2819=7667829
  2810. 2819=7733366
  2811. 2819=7798903
  2812. 2819=7864440
  2813. 2819=7929977
  2814. 2819=7995514
  2815. 2819=8061051
  2816. 2819=8126588
  2817. 2819=8192125
  2818. 2819=8257662
  2819. 2819=8329219
  2820. 2819=8388736
  2821. 2819=8454273
  2822. 2819=8519810
  2823. 2819=8585347
  2824. 2819=8650884
  2825. 2819=8716421
  2826. 2819=8781958
  2827. 2819=8847495
  2828. 2819=8913032
  2829. 2819=8978569
  2830. 2819=9044106
  2831. 2819=9109643
  2832. 2819=9175180
  2833. 2819=9240717
  2834. 2819=9306254
  2835. 2819=9371791
  2836. 2819=9437328
  2837. 2819=9502865
  2838. 2819=9568402
  2839. 2819=9633939
  2840. 2819=9699476
  2841. 2819=9765013
  2842. 2819=9830550
  2843. 2819=9896087
  2844. 2819=9961624
  2845. 2819=10027161
  2846. 2819=10092698
  2847. 2819=10158235
  2848. 2819=10223772
  2849. 2819=10289309
  2850. 2819=10354846
  2851. 2819=10420383
  2852. 2819=10485920
  2853. 2819=10551457
  2854. 2819=10616994
  2855. 2819=10682531
  2856. 2819=10748068
  2857. 2819=10813605
  2858. 2819=10879142
  2859. 2819=10944679
  2860. 2819=11010216
  2861. 2819=11075753
  2862. 2819=11141290
  2863. 2819=11206827
  2864. 2819=11272364
  2865. 2819=11337901
  2866. 2819=11403438
  2867. 2819=11468975
  2868. 2819=11534512
  2869. 2819=11600049
  2870. 2819=11665586
  2871. 2819=11731123
  2872. 2819=11796660
  2873. 2819=11862197
  2874. 2819=11927734
  2875. 2819=11993271
  2876. 2819=12058808
  2877. 2819=12124345
  2878. 2819=12189882
  2879. 2819=12255419
  2880. 2819=12320956
  2881. 2819=12386493
  2882. 2819=12452030
  2883. 2819=12517567
  2884. 2819=12583104
  2885. 2819=12648641
  2886. 2819=12714178
  2887. 2819=12779715
  2888. 2819=12845252
  2889. 2819=12910789
  2890. 2819=12976326
  2891. 2819=13041863
  2892. 2819=13107400
  2893. 2819=13172937
  2894. 2819=13238474
  2895. 2819=13304011
  2896. 2819=13369548
  2897. 2819=13435085
  2898. 2819=13500622
  2899. 2819=13566159
  2900. 2819=13631696
  2901. 2819=13697233
  2902. 2819=13762770
  2903. 2819=13828307
  2904. 2819=13893844
  2905. 2819=13959381
  2906. 2819=14024918
  2907. 2819=14090455
  2908. 2819=14155992
  2909. 2819=14221529
  2910. 2819=14287066
  2911. 2819=14352603
  2912. 2819=14418140
  2913. 2819=14483677
  2914. 2819=14549214
  2915. 2819=14614751
  2916. 2819=14680288
  2917. 2819=14745825
  2918. 2819=14811362
  2919. 2819=14876899
  2920. 2819=14942436
  2921. 2819=15007973
  2922. 2819=15073510
  2923. 2819=15139047
  2924. 2819=15204584
  2925. 2819=15270121
  2926. 2819=15335658
  2927. 2819=15401195
  2928. 2819=15466732
  2929. 2819=15532269
  2930. 2819=15597806
  2931. 2819=15663343
  2932. 2819=15728880
  2933. 2819=15794417
  2934. 2819=15859954
  2935. 2819=15925491
  2936. 2819=15991028
  2937. 2819=16056565
  2938. 2819=16122102
  2939. 2819=16187639
  2940. 2819=16253176
  2941. 2819=16318713
  2942. 2819=16384250
  2943. 2819=16449787
  2944. 2819=16515324
  2945. 2819=16580861
  2946. 2819=16646398
  2947. 2819=16711935
  2948. /default_ini7
  2949. 3328=47
  2950. 3329=PLEASE PRESS ANY KEY TO CONTINUE 
  2951. 3330=55
  2952. 3331=0
  2953. 3332=No error text: Can't open
  2954. 3333=No error text available
  2955. 3334=Error number out of range
  2956. 3335=lp -d %s -s
  2957. 3336=lp -s
  2958. 3584=Error on
  2959. 3585=A=Abort
  2960. 3586=R=Retry
  2961. 3587=F=Fail
  2962. 3588=drive
  2963. 3589=device
  2964. 3590=1
  2965. 3591=0
  2966. 3592=3
  2967. 3593=10
  2968. 3594=A
  2969. 3595=R
  2970. 3596=F
  2971. 3597=7
  2972. 3614=Write-protect error
  2973. 3615=Unknown unit
  2974. 3616=Not ready
  2975. 3617=Unknown command
  2976. 3618=Data error (bad CRC)
  2977. 3619=Bad request
  2978. 3620=Seek error
  2979. 3621=Unknown media type
  2980. 3622=Sector not found
  2981. 3623=Printer out of paper
  2982. 3624=Write fault
  2983. 3625=Read fault
  2984. 3626=General failure
  2985. 3627=Sharing violation
  2986. 3628=Lock violation
  2987. 3629=Invalid disk change
  2988. 3630=FCB unavailable
  2989. 3631=Sharing buffer error
  2990. 3632=Code page error
  2991. 3633=Out of input
  2992. 3634=Out of disk space
  2993. /*
  2994.  
  2995. // dfini.cfg constants
  2996. name 1 accelerator_group
  2997.  
  2998. name 8 ui_color_group
  2999.  
  3000. name 9 ui_info_group
  3001. name 7 sel_cursor_end
  3002. name 16 not_checked
  3003. name 17 checked
  3004. name 18 radio_on
  3005. name 19 radio_off
  3006. name 32 scbar_ofs
  3007. name 33 scbar_up
  3008. name 34 scbar_down
  3009. name 35 scbar_bar
  3010. name 36 hor_scrl
  3011. name 37 dbl_click
  3012.  
  3013. name 10 termlist_group
  3014. name 0 desktop_col
  3015. name 1 auto_ret
  3016. name 2 date_form
  3017. name 3 num_form
  3018. name 4 pwr_fail
  3019. name 5 alloc
  3020. name 6 crncy
  3021. name 7 wfill
  3022. name 8 gr_adapter
  3023. name 9 gr_mode
  3024. name 10 gr_printer
  3025. name 11 exit_col
  3026.  
  3027. name 11 keymap_group
  3028. name 0 upcase_feature
  3029. name 1 locase_feature
  3030. name 2 attrib_feature
  3031. name 3 remap_feature
  3032.  
  3033. name 13 misc_group
  3034. name 0 date_sep
  3035. name 1 any_key_msg
  3036. name 2 page_end
  3037. name 3 page_feed
  3038. name 4 default_error_cant_open
  3039. name 5 default_error_no_text
  3040. name 6 default_error_out_of_range
  3041. name 7 default_spool_dfprinter_cfg_str
  3042. name 8 default_spool_nodfprinter_cfg_str
  3043.  
  3044. name 14 critical_error_group
  3045. name 0 criterr_header_msg  
  3046. name 1 criterr_abort_msg   
  3047. name 2 criterr_retry_msg   
  3048. name 3 criterr_fail_msg    
  3049. name 4 criterr_drive       
  3050. name 5 criterr_device      
  3051. name 6 criterr_dflt1       
  3052. name 7 criterr_retry       
  3053. name 8 criterr_dflt2       
  3054. name 9 criterr_timeout_secs
  3055. name 10 criterr_abort_chars
  3056. name 11 criterr_retry_chars
  3057. name 12 criterr_fail_chars 
  3058. name 13 criterr_user_mask  
  3059. name 30 criterr_first_diagnostic
  3060. name 50 criterr_last_diagnostic
  3061.  
  3062. // key constants
  3063. name 512 alt_key
  3064. name 1024 shift_key
  3065. name 2048 ctrl_key
  3066. name 4096 function_key
  3067.  
  3068. name 1 enter_key
  3069. name 2 tab_key
  3070. name 3 back_space_key
  3071. name 4 escape_key
  3072. name 5 up_arrow_key
  3073. name 6 down_arrow_key
  3074. name 7 left_arrow_key
  3075. name 8 right_arrow_key
  3076. name 9 home_key
  3077. name 10 end_key
  3078. name 11 pgup_key
  3079. name 12 pgdn_key
  3080. name 13 insert_key
  3081. name 14 delete_key
  3082. name 16 f1_key
  3083. name 17 f2_key
  3084. name 18 f3_key
  3085. name 19 f4_key
  3086. name 20 f5_key
  3087. name 21 f6_key
  3088. name 22 f7_key
  3089. name 23 f8_key
  3090. name 24 f9_key
  3091. name 25 f10_key
  3092. name 26 f11_key
  3093. name 27 f12_key
  3094. name 53 mouse_key
  3095.  
  3096. // miscellaneous stuff
  3097. name 16 right_arrow
  3098. name 17 left_arrow
  3099. name 177 track
  3100. name 178 inactive_thumb
  3101. name 219 active_thumb
  3102.  
  3103. string inifile aline token symbol print_device space 1 hexchars 16
  3104. integer hidecol pointcol apos feature_group feature tmp1 tmp2 tmp3
  3105.  
  3106. get class_colors of desktop u_vconsole to tmp1
  3107. if (hi(tmp1)) eq 0 get object_color of desktop to tmp1
  3108. move (hi(tmp1)) to hidecol
  3109. get class_palette of desktop u_vconsole to tmp1
  3110. get palette_color of desktop (tmp1 max 1) 2 to pointcol
  3111.  
  3112. move "0123456789ABCDEF" to hexchars
  3113. integer old_size
  3114. get_argument_size to old_size
  3115. set_argument_size 1024
  3116. indicator changes_made
  3117. string color_trackbar 17 click_trackbar 10
  3118.  
  3119. character track to color_trackbar
  3120. character track to click_trackbar
  3121. append color_trackbar color_trackbar color_trackbar 
  3122. append color_trackbar color_trackbar color_trackbar 
  3123. pad color_trackbar to color_trackbar 15
  3124. left color_trackbar to click_trackbar 8
  3125. insert (character(left_arrow)) in color_trackbar at 1
  3126. insert (character(left_arrow)) in click_trackbar at 1
  3127. append color_trackbar (character(right_arrow))
  3128. append click_trackbar (character(right_arrow))
  3129.  
  3130. integer old_char crnt_char 
  3131. string crnt_hex 2 crnt_map 4 crnt_seq upcase 2 locase 2
  3132. integer islower isupper 
  3133. integer isalpha
  3134. integer isprint ispunct isspace
  3135. integer issymbol isname isfirst
  3136. integer crnt_diag
  3137.                  
  3138. #COMMAND DEFINE RT RUGL#VFW .
  3139.     NAME (!2) !1
  3140. #ENDCOMMAND
  3141.  
  3142. #COMMAND IMAGE_INPUT RT .
  3143.     #CHECK !1.N _UVFW#GL
  3144.     #PUSH !g
  3145.     #SET G$ !1.N
  3146.     DIRECT_INPUT "IMAGE:!g"
  3147.     #POP G$
  3148. #ENDCOMMAND
  3149.  
  3150. #COMMAND RESET_INI
  3151.     //SET_TERMLIST 0
  3152.     #PUSH !g
  3153.     #SET G$ DEFAULT_INI_RESET.N
  3154.     READ_DFINI "IMAGE:!g"
  3155.     #SET G$ DEFAULT_INI2.N
  3156.     READ_DFINI "IMAGE:!g"
  3157.     #SET G$ DEFAULT_INI3.N
  3158.     READ_DFINI "IMAGE:!g"
  3159.     #SET G$ DEFAULT_INI4.N
  3160.     READ_DFINI "IMAGE:!g"
  3161.     #SET G$ DEFAULT_INI5.N
  3162.     READ_DFINI "IMAGE:!g"
  3163.     #SET G$ DEFAULT_INI6.N
  3164.     READ_DFINI "IMAGE:!g"
  3165.     #SET G$ DEFAULT_INI7.N
  3166.     READ_DFINI "IMAGE:!g"
  3167.     #POP G$
  3168.     READ_DFINI !1
  3169. #ENDCOMMAND
  3170.  
  3171. #COMMAND AUTOCLEAR_ITEM
  3172.     on_item !1 !2 !3 !4 !5 !6 !7 !8 !9
  3173.     set autoclear_state to true
  3174. #ENDCOMMAND
  3175.  
  3176. #COMMAND CHECKBOX_ITEM    
  3177.     entry_item !1 !2 !3 !4 !5 !6 !7 !8 !9
  3178.     set checkbox_item_state to true
  3179. #ENDCOMMAND
  3180.  
  3181. class image_array is an array
  3182.    procedure construct_object integer img
  3183.       forward send construct_object img
  3184.       property integer our_image  public 0
  3185.       property integer open_image_state public 0
  3186.       property integer total_width public 0
  3187.       property integer total_lines public 0
  3188.    end_procedure
  3189.    
  3190.    procedure set value integer item#
  3191.    end_procedure
  3192.  
  3193.    procedure open_image
  3194.       local string total_string
  3195.       move "IMAGE:" to total_string
  3196.       append total_string (our_image(current_object))
  3197.       direct_input total_String
  3198.       [seqeof] set open_image_state to 0
  3199.       [not seqeof] set open_image_state to 1
  3200.    end_procedure
  3201.    
  3202.    function value integer item# returns string
  3203.       local string tempval
  3204.       move "" to tempval
  3205.       send open_image
  3206.       if (open_image_state(current_object)) ne 1 function_Return
  3207.       set_channel_position 0 to ( total_width(current_object)  * item#)
  3208.       readln tempval
  3209.       function_Return tempval
  3210.       
  3211.    end_function
  3212. end_class
  3213.  
  3214. object unused_ini is an array
  3215.    procedure add_one string val
  3216.       set value of current_object item (item_count(current_object)) to val
  3217.    end_procedure
  3218. end_object
  3219.  
  3220. object screencolors is an array
  3221.     function fg_value integer item# returns integer
  3222.         local integer val
  3223.         get integer_value item (item# * 4) to val
  3224.         function_return val
  3225.     end_function
  3226.  
  3227.     function bg_value integer item# returns integer
  3228.         local integer val
  3229.         get integer_value item (item# * 4 + 1) to val
  3230.         function_return val
  3231.     end_function
  3232.  
  3233.     function pal_value integer item# returns integer
  3234.         local integer val
  3235.         get integer_value item (item# * 4 + 2) to val
  3236.         function_return val
  3237.     end_function
  3238.  
  3239.     function name_value integer item# returns string
  3240.         local string val
  3241.         get string_value item (item# * 4 + 3) to val
  3242.         function_return val
  3243.     end_function
  3244.  
  3245.     procedure set fg_value integer item# integer val
  3246.         set array_value item (item# * 4) to val
  3247.     end_procedure
  3248.  
  3249.     procedure set bg_value integer item# integer val
  3250.         set array_value item (item# * 4 + 1) to val
  3251.     end_procedure
  3252.  
  3253.     procedure set pal_value integer item# integer val
  3254.         set array_value item (item# * 4 + 2) to val
  3255.     end_procedure
  3256.  
  3257.     procedure set name_value integer item# string val
  3258.         set array_value item (item# * 4 + 3) to val
  3259.     end_procedure
  3260.  
  3261.     procedure init_element integer class#
  3262.         readln token
  3263.         set name_value item class# to token
  3264.     end_procedure
  3265. end_object
  3266.  
  3267. object palette_names is an image_array
  3268.     set our_image to palettenames.N
  3269.     set total_width to 27
  3270.     set total_lines to palettenames.lines
  3271.     function find_index string this_one returns integer
  3272.         local integer index
  3273.         local string palette_name
  3274.  
  3275.         for index from 0 to 8
  3276.         until this_one eq (value(current_object,index))
  3277.         function_return index
  3278.     end_function
  3279. end_object
  3280.  
  3281. object palette_colors is an array
  3282.     procedure init_element integer palette# integer c1 integer c2 integer c3 ;
  3283.             integer c4 integer c5 integer c6 integer c7 integer c8
  3284.  
  3285.         set array_value item (palette# * 8 + 0) to c1
  3286.         set array_value item (palette# * 8 + 1) to c2
  3287.         set array_value item (palette# * 8 + 2) to c3
  3288.         set array_value item (palette# * 8 + 3) to c4
  3289.         set array_value item (palette# * 8 + 4) to c5
  3290.         set array_value item (palette# * 8 + 5) to c6
  3291.         set array_value item (palette# * 8 + 6) to c7
  3292.         set array_value item (palette# * 8 + 7) to c8
  3293.     end_procedure
  3294. end_object
  3295.  
  3296. object cua_keys is an array
  3297.     function key_value integer item# returns integer
  3298.         local integer val
  3299.         get array_value item (item# * 2) to val
  3300.         function_return val
  3301.     end_function
  3302.  
  3303.     function name_value integer item# returns string
  3304.         local string val
  3305.         get array_value item (item# * 2 + 1) to val
  3306.         function_return val
  3307.     end_function
  3308.  
  3309.     procedure set key_value integer item# integer val
  3310.         set array_value item (item# * 2) to val
  3311.     end_function
  3312.  
  3313.     procedure set name_value integer item# string val
  3314.         set array_value item (item# * 2 + 1) to val
  3315.     end_function
  3316.  
  3317.     procedure init_element integer key#
  3318.         set key_value item (key# - 256) to (key_physical(key#))
  3319.         readln token
  3320.         set name_value item (key# - 256) to token
  3321.     end_procedure
  3322. end_object
  3323.  
  3324. object physical_keys is an array
  3325.     procedure init_element integer key#
  3326.         readln token
  3327.         set array_value item key# to token
  3328.     end_procedure
  3329. end_object
  3330.  
  3331.  
  3332. object key_map is an array
  3333.     function upcase_value integer item# returns integer
  3334.         local integer val
  3335.         get integer_value item (item# * 4) to val
  3336.         function_return val
  3337.     end_function
  3338.  
  3339.     function locase_value integer item# returns integer
  3340.         local integer val
  3341.         get integer_value item (item# * 4 + 1) to val
  3342.         function_return val
  3343.     end_function
  3344.  
  3345.     function attrib_value integer item# returns integer
  3346.         local integer val
  3347.         get integer_value item (item# * 4 + 2) to val
  3348.         function_return val
  3349.     end_function
  3350.  
  3351.     function remap_value integer item# returns integer
  3352.         local integer val
  3353.         get integer_value item (item# * 4 + 3) to val
  3354.         function_return val
  3355.     end_function
  3356.  
  3357.     procedure set upcase_value integer item# integer val
  3358.         set array_value item (item# * 4) to (val iand $FF)
  3359.     end_procedure
  3360.  
  3361.     procedure set locase_value integer item# integer val
  3362.         set array_value item (item# * 4 + 1) to (val iand $FF)
  3363.     end_procedure
  3364.  
  3365.     procedure set attrib_value integer item# integer val
  3366.         set array_value item (item# * 4 + 2) (val iand $FFFF)
  3367.     end_procedure
  3368.  
  3369.     procedure set remap_value integer item# integer val
  3370.         set array_value item (item# * 4 + 3) to (val iand $FFFF)
  3371.     end_procedure
  3372. end_object
  3373.  
  3374. object crit_error_diagnostics is an array
  3375.     procedure init_element integer key# string msg
  3376.         set array_value item key# to msg
  3377.     end_procedure
  3378. end_object
  3379.  
  3380. object crit_error_originals is an array
  3381.     procedure init_element integer key# string msg
  3382.         set array_value item key# to msg
  3383.     end_procedure
  3384. end_object
  3385.  
  3386. integer auto_return_option
  3387. integer date_format_option
  3388. integer numeric_format_option
  3389. integer scroll_increments_option
  3390. integer scrollbar_offset_option
  3391. integer double_click_speed
  3392. integer power_fail_option
  3393. integer graphics_mode
  3394. integer scrollbar_up
  3395. integer scrollbar_bar
  3396. integer scrollbar_down
  3397. integer window_fill_char fill_char
  3398. integer date_separator
  3399. integer formfeed_option
  3400. integer pagefeed_option
  3401. integer pageend_option
  3402. integer exit_color_value
  3403.  
  3404. integer canrespond canabort canretry canfail
  3405. integer criterr_timeout criterr_default1 
  3406. integer criterr_retries criterr_default2
  3407.  
  3408. define CRITERR_ABORT_FLAG 2
  3409. define CRITERR_RETRY_FLAG 1
  3410. define CRITERR_FAIL_FLAG  3
  3411.  
  3412. string press_any_key_string 40
  3413. string check_string_select 4
  3414. string check_string_deselect 4
  3415. string radio_string_select 4
  3416. string radio_string_deselect 4
  3417. string currency_string 20
  3418. string graphics_path 64
  3419. string graphics_driver 12
  3420. string graphics_template 12
  3421. string printer_path 64
  3422. string printer_driver 12
  3423. string printer_template 12
  3424. string phrase_1 10 phrase_2 10 phrase_3 10
  3425. string option_1 10 option_2 10 option_3 10
  3426. string reply_1 2 reply_2 2 reply_3 2
  3427.  
  3428. string error_cant_open 28 error_no_text 40  error_out_of_range 40
  3429.  
  3430. string progname dflt_ini 12 separator 1 equals 1 ellipsis 3 helpkey 7 okkey 5
  3431. string promptkey 9 resetkey 8 cancelkey 10 closekey 9 yes 3 no 2 okmsg 2
  3432. string cancelmsg 6 helpmsg 4
  3433.  
  3434. string spooler_dfprinter_string 50 spooler_nodfprinter_string 50
  3435.  
  3436. image_input classnames
  3437.  
  3438. for windowindex from u_desktop to u_help
  3439.     send init_element to screencolors windowindex
  3440. loop
  3441. for windowindex from u_trace to u_entrylist
  3442.     send init_element to screencolors windowindex
  3443. loop
  3444. for windowindex from u_radio to u_clipboard
  3445.     send init_element to screencolors windowindex
  3446. loop
  3447.  
  3448. //image_input palettenames
  3449.  
  3450. //for windowindex from 0 to 8
  3451. //    send init_element to palette_names windowindex
  3452. //loop
  3453.  
  3454. image_input key_descriptions
  3455.  
  3456. for windowindex from kenter to kclear_all
  3457.     send init_element to cua_keys windowindex
  3458. loop
  3459. for windowindex from kmark to kclose_panel
  3460.     send init_element to cua_keys windowindex
  3461. loop
  3462.  
  3463. image_input keycaps
  3464.  
  3465. for windowindex from enter_key to delete_key
  3466.     send init_element to physical_keys windowindex
  3467. loop
  3468. for windowindex from f1_key to f12_key
  3469.     send init_element to physical_keys windowindex
  3470. loop
  3471.  
  3472. image_input misc_defaults
  3473.  
  3474. readln graphics_template
  3475. readln printer_template
  3476. readln progname
  3477. readln dflt_ini
  3478. readln equals
  3479. readln ellipsis
  3480. readln helpkey
  3481. readln okkey
  3482. readln promptkey
  3483. readln resetkey
  3484. readln cancelkey
  3485. readln closekey
  3486. readln yes
  3487. readln no
  3488. readln okmsg
  3489. readln cancelmsg
  3490. readln helpmsg
  3491.  
  3492. close_input
  3493.  
  3494. //
  3495. // Use the sysconf function to get the directory separator character for the
  3496. // current OS
  3497. //
  3498. move ( sysconf( SYSCONF_DIR_SEPARATOR ) ) to separator
  3499.  
  3500.  
  3501. indicate changes_made false
  3502.  
  3503. function map_sequence integer akey integer upflag returns string
  3504.     local string sequence keycap
  3505.     local integer basekey
  3506.  
  3507.     if akey begin
  3508.         move "" to sequence
  3509.         move (akey iand $FF) to basekey
  3510.         if (akey iand ctrl_key) eq ctrl_key append sequence "Ctrl+"
  3511.         if (akey iand shift_key) eq shift_key append sequence "Shift+"
  3512.         if (akey iand alt_key) eq alt_key append sequence "Alt+"
  3513.  
  3514.         if (akey iand function_key) eq function_key ;
  3515.                 get string_value of physical_keys basekey to keycap
  3516.         else begin
  3517.             if (basekey < $20) move (basekey ior $40) to basekey
  3518.             character basekey to keycap
  3519.             if keycap eq ' ' move "Space" to keycap
  3520.             else if keycap eq '+' move "Plus" to keycap
  3521.             else if keycap eq '-' move "Minus" to keycap
  3522.             else if upflag uppercase keycap
  3523.         end
  3524.         append sequence keycap
  3525.     end
  3526.     else move "Undefined" to sequence
  3527.  
  3528.     function_return sequence
  3529. end_function
  3530.  
  3531. function dec2hex integer dec returns string
  3532.     local string hex
  3533.  
  3534.     move "" to hex
  3535.     repeat
  3536.         insert (mid(hexchars,1,((dec iand $0F) + 1))) in hex at 1
  3537.         move (dec / $10) to dec
  3538.     until dec eq 0
  3539.  
  3540.     function_return hex
  3541. end_function
  3542.  
  3543. function hex2dec string hex returns integer
  3544.     function_return ('$' + trim(hex))
  3545. end_function
  3546.  
  3547. function bit_twiddle integer bitmap integer bit# integer flag returns integer
  3548.  
  3549.     if flag move (bitmap ior bit#) to bitmap
  3550.     else move (bitmap iand ($FFFF - bit#)) to bitmap
  3551.  
  3552.     function_return bitmap
  3553. end_function
  3554.  
  3555. function fix_slashes string path returns string
  3556.     local string badness
  3557.  
  3558.     move "\/" to badness
  3559.     mid badness to badness 1 (3 - pos(separator,badness))
  3560.     repeat
  3561.         replace badness in path with separator
  3562.     [found] loop
  3563.  
  3564.     function_return path
  3565. end_function
  3566.  
  3567. function make_ini_path string path returns string
  3568.     get fix_slashes path to path
  3569.     if (right(trim(path),1)) ne separator append path separator
  3570.     append path dflt_ini
  3571.  
  3572.     function_return path
  3573. end_function
  3574.  
  3575. procedure read_ini
  3576.     repeat
  3577.         readln aline
  3578.         [seqeof] begin
  3579.            increment cimage_number
  3580.            if cimage_number lt 8 begin
  3581.               close_input
  3582.               if cimage_number eq 2 image_input default_ini2
  3583.               if cimage_number eq 3 image_input default_ini3
  3584.               if cimage_number eq 4 image_input default_ini4
  3585.               if cimage_number eq 5 image_input default_ini5
  3586.               if cimage_number eq 6 image_input default_ini6
  3587.               if cimage_number eq 7 image_input default_ini7
  3588.               readln aline
  3589.            end
  3590.         end
  3591.         [not seqeof] begin
  3592.             trim aline to aline
  3593.             if ((aline > "") and (left(aline,1) <> '/')) begin
  3594.                 pos equals in aline to apos
  3595.                 left aline to token (apos-1)
  3596.                 right aline to symbol (length(aline)-apos)
  3597.                 move token to feature
  3598.                 move (feature / 256) to feature_group
  3599.                 move (feature iand $FF) to feature
  3600.                 if feature_group eq accelerator_group set key_value ;
  3601.                         of cua_keys item feature to (integer(symbol))
  3602.                 else if feature_group eq ui_color_group begin
  3603.                     pos space in symbol to apos
  3604.                     move (integer(left(symbol,(apos - 1)))) to tmp1
  3605.                     right symbol to symbol (length(symbol) - apos)
  3606.                     pos space in symbol to apos
  3607.                     move (integer(left(symbol,(apos - 1)))) to tmp2
  3608.                     move (integer(right(symbol,(length(symbol) - apos)))) ;
  3609.                             to tmp3
  3610.                     set fg_value of screencolors item feature to tmp1
  3611.                     set bg_value of screencolors item feature to tmp2
  3612.                     set pal_value of screencolors item feature to tmp3
  3613.                 end
  3614.                 else if feature_group eq ui_info_group begin
  3615.                     if feature le sel_cursor_end begin
  3616.                         pos space in symbol to apos
  3617.                         move (integer(left(symbol,(apos - 1))) + 1) to tmp1
  3618.                         move (integer(right(symbol,(length(symbol) - apos)))) ;
  3619.                                 to tmp2
  3620.                         set array_value of palette_colors ;
  3621.                                 item (tmp1 * 8 + feature) to tmp2
  3622.                     end
  3623.                     else if feature eq not_checked begin
  3624.                         if (right(symbol,1)) ne space append symbol space
  3625.                         move symbol to check_string_deselect
  3626.                     end
  3627.                     else if feature eq checked begin
  3628.                         if (right(symbol,1)) ne space append symbol space
  3629.                         move symbol to check_string_select
  3630.                     end
  3631.                     else if feature eq radio_on begin
  3632.                         if (right(symbol,1)) ne space append symbol space
  3633.                         move symbol to radio_string_select
  3634.                     end
  3635.                     else if feature eq radio_off begin
  3636.                         if (right(symbol,1)) ne space append symbol space
  3637.                         move symbol to radio_string_deselect
  3638.                     end
  3639.                     else if feature eq scbar_ofs move symbol ;
  3640.                             to scrollbar_offset_option
  3641.                     else if feature eq scbar_up move symbol to scrollbar_up
  3642.                     else if feature eq scbar_down move symbol ;
  3643.                             to scrollbar_down
  3644.                     else if feature eq scbar_bar move symbol ;
  3645.                             to scrollbar_bar
  3646.                     else if feature eq hor_scrl move symbol ;
  3647.                             to scroll_increments_option
  3648.                     else if feature eq dbl_click move symbol ;
  3649.                             to double_click_speed
  3650.                     else send add_one to unused_ini aline
  3651.                 end
  3652.                 else if feature_group eq termlist_group begin
  3653.                     if feature eq 0 begin
  3654.                         pos space in symbol to apos
  3655.                         set fg_value of screencolors item u_desktop to ;
  3656.                                 (integer(left(symbol,(apos - 1))))
  3657.                         set bg_value of screencolors item u_desktop to ;
  3658.                                 (integer(right(symbol,(length(symbol) - apos))))
  3659.                     end
  3660.                     else if feature eq auto_ret move symbol ;
  3661.                             to auto_return_option
  3662.                     else if feature eq date_form move symbol ;
  3663.                             to date_format_option
  3664.                     else if feature eq num_form move symbol ;
  3665.                             to numeric_format_option
  3666.                     else if feature eq pwr_fail move symbol ;
  3667.                             to power_fail_option
  3668.                     else if feature eq crncy move symbol to currency_string
  3669.                     else if feature eq wfill begin
  3670.                         move symbol to window_fill_char
  3671.                         move window_fill_char to fill_char
  3672.                     end
  3673.                     else if feature eq gr_adapter begin
  3674.                         length symbol to apos
  3675.                         get fix_slashes symbol to symbol
  3676.                         repeat
  3677.                             indicate found as (mid(symbol,1,apos)) eq separator
  3678.                             [finderr] decrement apos
  3679.                         [finderr] until apos eq 0
  3680.                         left symbol to graphics_path (apos - 1)
  3681.                         right symbol to graphics_driver ;
  3682.                                 (length(symbol) - apos)
  3683.                     end
  3684.                     else if feature eq gr_mode move symbol to graphics_mode
  3685.                     else if feature eq gr_printer begin
  3686.                         length symbol to apos
  3687.                         get fix_slashes symbol to symbol
  3688.                         repeat
  3689.                             indicate found as (mid(symbol,1,apos)) eq separator
  3690.                             [finderr] decrement apos
  3691.                         [finderr] until apos eq 0
  3692.                         left symbol to printer_path (apos - 1)
  3693.                         right symbol to printer_driver (length(symbol) - apos)
  3694.                     end
  3695.                     else if feature eq exit_col move symbol to exit_color_value
  3696.                     else send add_one to unused_ini aline
  3697.                 end
  3698.                 else if feature_group eq keymap_group begin
  3699.                     move symbol to tmp1
  3700.                     move (tmp1 iand if((feature <= 1),$FF,$FFFF)) to tmp2
  3701.                     move (tmp1 / 65536) to tmp1
  3702.                     set array_value of key_map item (tmp1 * 4 + feature) ;
  3703.                             to tmp2
  3704.                 end
  3705.                 else if feature_group eq misc_group begin
  3706.                     if feature eq date_sep move symbol to date_separator
  3707.                     else if feature eq any_key_msg ;
  3708.                             trim symbol to press_any_key_string
  3709.                     else if feature eq page_end ;
  3710.                             move symbol to pageend_option
  3711.                     else if feature eq page_feed ;
  3712.                             move symbol to pagefeed_option
  3713.                     else if feature eq default_error_cant_open ;
  3714.                             trim symbol to error_cant_open
  3715.                     else if feature eq default_error_no_text ;
  3716.                             trim symbol to error_no_text
  3717.                     else if feature eq default_error_out_of_range ;
  3718.                             trim symbol to error_out_of_range
  3719.  
  3720.                     else if feature eq default_spool_dfprinter_cfg_str ;
  3721.                             trim symbol to spooler_dfprinter_string
  3722.                     else if feature eq default_spool_nodfprinter_cfg_str ;
  3723.                             trim symbol to spooler_nodfprinter_string
  3724.  
  3725.                     else send add_one to unused_ini aline
  3726.                 end
  3727.                 else if feature_group eq critical_error_group begin
  3728.                     if feature eq criterr_header_msg ;
  3729.                             trim symbol to phrase_1
  3730.                     else if feature eq criterr_abort_msg ;
  3731.                             trim symbol to option_1
  3732.                     else if feature eq criterr_retry_msg ;
  3733.                             trim symbol to option_2
  3734.                     else if feature eq criterr_fail_msg ;
  3735.                             trim symbol to option_3
  3736.                     else if feature eq criterr_drive ;
  3737.                             trim symbol to phrase_2
  3738.                     else if feature eq criterr_device ;
  3739.                             trim symbol to phrase_3
  3740.                     else if feature eq criterr_abort_chars ;
  3741.                             move symbol to reply_1
  3742.                     else if feature eq criterr_retry_chars ;
  3743.                             move symbol to reply_2
  3744.                     else if feature eq criterr_fail_chars ;
  3745.                             move symbol to reply_3
  3746.                     else if feature eq criterr_dflt1 ;
  3747.                             move symbol to criterr_default1
  3748.                     else if feature eq criterr_retry ;
  3749.                             move symbol to criterr_retries
  3750.                     else if feature eq criterr_dflt2 ;
  3751.                             move symbol to criterr_default2
  3752.                     else if feature eq criterr_timeout_secs begin
  3753.                         move (abs(symbol)) to criterr_timeout
  3754.                         move (symbol > 0) to canrespond
  3755.                     end
  3756.                     else if feature eq criterr_user_mask begin
  3757.                         move symbol to tmp1 // to get an int
  3758.                         move ((tmp1 iand $04) / $04) to canretry
  3759.                         move ((tmp1 iand $02) / $02) to canabort
  3760.                         move ((tmp1 iand $01) / $01) to canfail
  3761.                     end
  3762.                     else send init_element to crit_error_originals ;
  3763.                             (feature - criterr_first_diagnostic) symbol
  3764.                 end
  3765.                 else send add_one to unused_ini aline
  3766.             end
  3767.         end
  3768.     [not seqeof] loop
  3769. end_procedure
  3770.  
  3771. procedure reset_defaults integer use_inifile
  3772.     local integer index
  3773.  
  3774.     send working "Reading defaults"
  3775.     move 1 to cimage_number
  3776.     image_input default_ini
  3777.     send read_ini 
  3778.     close_input
  3779.  
  3780.     for index from criterr_first_diagnostic to criterr_last_diagnostic
  3781.         get string_value of crit_error_originals ;
  3782.                 item (index - criterr_first_diagnostic) to token
  3783.         set array_value of crit_error_diagnostics ;
  3784.                 item (index - criterr_first_diagnostic) to token
  3785.     loop
  3786.  
  3787.     send working "Reading ini file"
  3788.  
  3789.     get_environment "DFPRINTER" to print_device
  3790.     if print_device eq "" move "LST:" to print_device
  3791.  
  3792.     indicate err false
  3793.  
  3794.     if use_inifile begin
  3795.         get fix_slashes inifile to inifile
  3796.         if inifile eq "" procedure_return
  3797.         direct_input inifile
  3798.     end
  3799.     else begin
  3800.         get_environment "DFINI" to inifile
  3801.         if inifile gt "" begin
  3802.             get fix_slashes inifile to inifile
  3803.             direct_input inifile
  3804.         end
  3805.         else begin
  3806.  
  3807.             get_environment "HOME" to inifile
  3808.  
  3809.             indicate seqeof as inifile eq "" 
  3810.             [not seqeof] begin
  3811.                 get make_ini_path inifile to inifile
  3812.                 direct_input inifile
  3813.             end
  3814.  
  3815.             [seqeof] begin
  3816.                direct_input dflt_ini // uses dfpath
  3817.                [not seqeof] move dflt_ini to inifile
  3818.             end
  3819.  
  3820.             [seqeof] begin
  3821.                 get_current_directory to inifile
  3822.                 get make_ini_path inifile to inifile
  3823.                 direct_input inifile
  3824.             end
  3825.         end
  3826.     end
  3827.  
  3828.     indicate err as [seqeof]
  3829.     [not err] send read_ini
  3830.     close_input
  3831.  
  3832.     if pagefeed_option eq -1 begin
  3833.         move 0 to formfeed_option
  3834.         move 66 to pagefeed_option
  3835.     end
  3836.     else if pagefeed_option eq 0 begin
  3837.         move 1 to formfeed_option
  3838.         move 66 to pagefeed_option
  3839.     end
  3840.     else move 2 to formfeed_option
  3841.  
  3842.     move (pagefeed_option max pageend_option) to pagefeed_option
  3843. end_procedure
  3844.  
  3845. register_function ascii_map_on integer oldascii returns integer
  3846.  
  3847. class object_title is a title
  3848.     procedure construct_object integer image string title_text
  3849.         forward send construct_object image
  3850.  
  3851.         set center_state item 0 to true
  3852.         set value item 0 to title_text
  3853.     end_procedure
  3854. end_class
  3855.  
  3856. class option_button is a button
  3857.     procedure construct_object integer image
  3858.         forward send construct_object image
  3859.  
  3860.         set focus_mode to pointer_only
  3861.  
  3862.         item_list
  3863.             on_item okkey send request_set_values
  3864.             on_item resetkey send request_reset_values
  3865.             on_item cancelkey send object_set_off
  3866.             on_item helpkey send extended_help
  3867.         end_item_list
  3868.     end_procedure
  3869. end_class
  3870.  
  3871. class prompt_option_button is a button
  3872.     procedure construct_object integer image
  3873.         forward send construct_object image
  3874.  
  3875.         set focus_mode to pointer_only
  3876.  
  3877.         item_list
  3878.             on_item okkey send request_set_values
  3879.             on_item promptkey send prompt_for_value
  3880.             on_item resetkey send request_reset_values
  3881.             on_item cancelkey send object_set_off
  3882.             on_item helpkey send extended_help
  3883.         end_item_list
  3884.     end_procedure
  3885.  
  3886.     procedure shadow_prompt integer state
  3887.         set shadow_state item 1 to state
  3888.     end_procedure
  3889. end_class
  3890.  
  3891. class popup_client is a client
  3892.     procedure construct_object integer image
  3893.         forward send construct_object image
  3894.         property integer already_created public 0
  3895.         set popup_state to true
  3896.         set block_mouse_state to true
  3897.         set location to 1 17 relative
  3898.  
  3899.         on_key key_f2 send request_set_values
  3900.         on_key key_f5 send request_reset_values
  3901.         on_key key_escape send object_set_off
  3902.     end_procedure
  3903.  
  3904.     procedure object_set_on
  3905.         send request_reset_values
  3906.         send popup
  3907.     end_procedure
  3908.  
  3909.     procedure object_set_off
  3910.         send deactivate
  3911.         send show_status to main_object
  3912.     end_procedure
  3913.  
  3914.     procedure request_set_values
  3915.         broadcast send set_values
  3916.         send object_set_off
  3917.     end_procedure
  3918.  
  3919.     procedure request_reset_values
  3920.         broadcast send reset_values
  3921.     end_procedure
  3922. end_class
  3923.  
  3924. class character_popup_client is a popup_client
  3925.     procedure construct_object integer image
  3926.         forward send construct_object image
  3927.  
  3928.         on_key key_f4 send prompt_for_value
  3929.     end_procedure
  3930.  
  3931.     procedure prompt_for_value
  3932.         local integer oldascii newascii
  3933.  
  3934.         broadcast get ascii_val current to oldascii
  3935.         get ascii_map_on oldascii to newascii
  3936.         broadcast send ascii_set oldascii newascii
  3937.     end_procedure
  3938. end_class
  3939.  
  3940. class key_form is a form
  3941.     procedure construct_object integer image
  3942.         forward send construct_object image
  3943.  
  3944.         item_list
  3945.             on_item "" send none
  3946.             set entry_state to false
  3947.         end_item_list
  3948.  
  3949.         object reassign_key is a warning_msg
  3950.             set location to 3 12 relative
  3951.             set popup_state to true
  3952.             set ring_state to true
  3953.             set client_area_state to true
  3954.             set center_state item 0 to true
  3955.  
  3956.             object reassign is a button
  3957.                 on_key key_escape send cancel
  3958.  
  3959.                 item_list
  3960.                     on_item yes send ok
  3961.                     on_item no send cancel
  3962.                 end_item_list
  3963.             end_object
  3964.         end_object
  3965.  
  3966.         object invalid_key is a warning_msg
  3967.             set location to 5 13 relative
  3968.             set popup_state to true
  3969.             set ring_state to true
  3970.             set client_area_state to true
  3971.  
  3972.             object invalid_key_button is a button
  3973.                 item_list
  3974.                     on_item okmsg send ok
  3975.                 end_item_list
  3976.             end_object
  3977.         end_object
  3978.     end_procedure
  3979.  
  3980.     function check_assignment integer newkey returns integer
  3981.         local string prompt
  3982.         local integer item# index assignment
  3983.  
  3984.         delegate get offset to index
  3985.         for item# from kenter to kclear_all
  3986.             indicate good as ;
  3987.                     (newkey <> (key_value(cua_keys.obj, (item# - 256))) or ;
  3988.                     (((item# - 256) * 2) = index))
  3989.         [good] loop
  3990.         [good] for item# from kmark to kclose_panel
  3991.             indicate good as ;
  3992.                     (newkey <> (key_value(cua_keys.obj, (item# - 256))) or ;
  3993.                     (((item# - 256) * 2) = index))
  3994.         [good] loop
  3995.         [good] move msg_ok to assignment
  3996.         [not good] begin
  3997.             set value of (reassign_key(current_object)) item 0 ;
  3998.                     to (name_value(cua_keys.obj,(item# - 256)))
  3999.             set current_item of (reassign(reassign_key(current_object))) to 1
  4000.             ui_accept (reassign_key(current_object)) to assignment
  4001.             if assignment eq msg_ok ;
  4002.                     delegate set dup_key to ((item# - 256) * 2)
  4003.         end
  4004.         function_return assignment
  4005.     end_function
  4006.  
  4007.     procedure supply_key integer cursor_pos returns integer
  4008.         local string trash
  4009.         local integer oldkey newkey index retval
  4010.  
  4011.         delegate get offset to index
  4012.         get array_value of cua_keys item index to oldkey
  4013.  
  4014.         send shadow true
  4015.  
  4016.         repeat
  4017.             repeat
  4018.                 repeat
  4019.                     move -1 to termchar
  4020.                     set kbd_input_mode to true
  4021.                     inkey trash
  4022.                     set kbd_input_mode to false
  4023.                 until flexkey ne mouse_key
  4024.                 if termchar eq -1 ;
  4025.                         ui_accept (invalid_key(current_object)) to retval
  4026.             until termchar ne -1
  4027.             [key.return] move oldkey to termchar
  4028.  
  4029.             set highlight_state to false
  4030.             move (key_physical(termchar)) to newkey
  4031.             send display_value (map_sequence(desktop,newkey,1))
  4032.             move msg_ok to retval
  4033.             if newkey ne oldkey begin
  4034.                 get (check_assignment(current_object,newkey)) to retval
  4035.                 if retval eq msg_cancel begin
  4036.                     send display_value (map_sequence(desktop,oldkey,1))
  4037.                     set highlight_state to true
  4038.                 end
  4039.                 else begin
  4040.                     delegate set phys_key to newkey
  4041.                     set changed_state to true
  4042.                 end
  4043.             end
  4044.             else delegate set phys_key to oldkey
  4045.         until retval eq msg_ok
  4046.  
  4047.         send shadow false
  4048.  
  4049.         procedure_return knext_item
  4050.     end_procedure
  4051.  
  4052.     procedure display_value string text
  4053.         set value item 0 to text
  4054.         set changed_state to false
  4055.     end_procedure
  4056. end_class
  4057.  
  4058. class key_client is a client
  4059.     procedure construct_object integer image integer title_image ;
  4060.             integer form_image integer button_image
  4061.  
  4062.         forward send construct_object image
  4063.  
  4064.         property integer offset public 0
  4065.         property integer phys_key public 0
  4066.         property integer dup_key public 0
  4067.  
  4068.         set popup_state to true
  4069.         set block_mouse_state to true
  4070.         set local_rotate_state to true
  4071.  
  4072.         on_key key_escape send object_set_off
  4073.  
  4074.         object title is a title title_image
  4075.             set center_state item 0 to true
  4076.         end_object
  4077.  
  4078.         object form is a key_form form_image
  4079.         end_object
  4080.  
  4081.         object button is a button button_image
  4082.             set wrap_state to true
  4083.  
  4084.             on_key key_tab send next
  4085.             on_key key_shift+key_tab send previous
  4086.  
  4087.             item_list
  4088.                 on_item okmsg send set_values
  4089.                 on_item "Reset" send reset_and_return
  4090.                 on_item cancelmsg send object_set_off
  4091.                 on_item helpmsg send extended_help
  4092.             end_item_list
  4093.         end_object
  4094.     end_procedure
  4095.  
  4096.     procedure shadow integer state
  4097.         set shadow_state of (button(current_object)) item 0 to state
  4098.         set shadow_state of (button(current_object)) item 1 to state
  4099.         set shadow_state of (button(current_object)) item 2 to state
  4100.         set shadow_state of (button(current_object)) item 3 to state
  4101.     end_procedure
  4102.  
  4103.     procedure set_values
  4104.         local integer index akey state
  4105.  
  4106.         get changed_state of (form(current_object)) to state
  4107.         [not changes_made] indicate changes_made as state
  4108.         get offset to index
  4109.         get phys_key to akey
  4110.         set array_value of cua_keys item index to akey
  4111.         get dup_key to akey
  4112.         if akey set array_value of cua_keys item akey to 0
  4113.         send object_set_off
  4114.     end_procedure
  4115.  
  4116.     procedure reset_values
  4117.         send display_value to (form(current_object)) ;
  4118.                 (map_sequence(desktop,;
  4119.                 integer_value(cua_keys.obj,offset(current_object)),1))
  4120.         set dup_key to 0
  4121.     end_procedure
  4122.  
  4123.     procedure reset_and_return
  4124.         send reset_values
  4125.         send activate to (form(current_object))
  4126.     end_procedure
  4127.  
  4128.     procedure object_set_on integer akey
  4129.         set offset to ((akey - 256) * 2)
  4130.         set phys_key to (key_value(cua_keys.obj,(akey - 256)))
  4131.         set value of (title(current_object)) item 0 to ;
  4132.                 (name_value(cua_keys.obj,(akey - 256)) + " Key Combination")
  4133.         send reset_values
  4134.         set kbd_input_mode to false
  4135.         send popup
  4136.     end_procedure
  4137.  
  4138.     procedure object_set_off
  4139.         set kbd_input_mode to true
  4140.         send deactivate
  4141.         send show_status to main_object
  4142.     end_procedure
  4143. end_class
  4144.  
  4145. register_function add_path string path string newdir returns string
  4146. register_function template_spec returns string
  4147.  
  4148. class sellist is a list
  4149.     procedure construct_object integer img
  4150.         forward send construct_object img
  4151.  
  4152.         set select_mode to auto_select
  4153.         set search_mode to incremental
  4154.         set wrap_state to false
  4155.         set entry_msg to initialize
  4156.     end_procedure
  4157.  
  4158.     procedure initialize
  4159.         local integer dynupdt count
  4160.  
  4161.         get item_count to count
  4162.         if count lt 1 begin
  4163.             get dynamic_update_state to dynupdt
  4164.             set dynamic_update_state to false
  4165.             send fill_list
  4166.             set dynamic_update_state to dynupdt
  4167.         end
  4168.     end_procedure
  4169.  
  4170.     procedure fill_list
  4171.         send delete_data
  4172.     end_procedure
  4173.  
  4174.     procedure process_selections
  4175.         local integer item#
  4176.         local integer mx state
  4177.  
  4178.         get item_count to mx
  4179.         move (mx - 1) to mx
  4180.         for item# from 0 to mx
  4181.             if (item_count(current_object)) gt item# begin
  4182.                get select_state item item# to state
  4183.                if state begin
  4184.                    send process_selection item#
  4185.                    if (item_count(current_object)) gt item# ;
  4186.                            set select_state item item# to false
  4187.                end
  4188.             end
  4189.         loop
  4190.     end_procedure
  4191.  
  4192.     function check_selections returns integer
  4193.         local integer count
  4194.  
  4195.         get select_count to count
  4196.         function_return (integer(count > 0))
  4197.     end_function
  4198.  
  4199.     procedure select_and_rotate
  4200.         set select_state to true
  4201.         send next
  4202.     end_procedure
  4203. end_class
  4204.  
  4205. class driver_form is a form
  4206.     procedure fix_path
  4207.         local string path badness
  4208.  
  4209.         get value item 0 to path
  4210.         get fix_slashes path to path
  4211.         set value item 0 to path
  4212.     end_procedure
  4213.  
  4214.     procedure construct_object integer image
  4215.         forward send construct_object image
  4216.  
  4217.         set exit_msg to fix_path
  4218.     end_procedure
  4219.  
  4220.     procedure item_change integer from# integer to# returns integer
  4221.         if from# eq 0 send fix_path
  4222.         forward get msg_item_change from# to# to to#
  4223.         procedure_return to#
  4224.     end_procedure
  4225.  
  4226.     procedure get_dirlist
  4227.         send fix_path
  4228.         send do_dirlist
  4229.         send next
  4230.     end_procedure
  4231.  
  4232.     function file_spec returns string
  4233.         function_return (value(current_object,1))
  4234.     end_function
  4235.  
  4236.     function dir_spec returns string
  4237.         function_return (value(current_object,0))
  4238.     end_function
  4239.  
  4240.     procedure do_filelist
  4241.         local string adir afile
  4242.         local integer file#
  4243.  
  4244.         get value item 0 to adir
  4245.         get value item 1 to afile
  4246.         delegate get file_obj to file#
  4247.         send load_list to file# (template_spec(current_object)) adir afile
  4248.     end_procedure
  4249.  
  4250.     procedure do_dirlist
  4251.         local string adir
  4252.         local integer dir#
  4253.  
  4254.         send working "Reading,"
  4255.         get value item 0 to adir
  4256.         delegate get dir_obj to dir#
  4257.         send load_list to dir# adir
  4258.         send do_filelist
  4259.         send done
  4260.     end_procedure
  4261.  
  4262.     procedure file_selected string thefile
  4263.         set value item 1 to thefile
  4264.     end_procedure
  4265.  
  4266.     procedure dir_selected string thedir
  4267.         local string path
  4268.  
  4269.         get value item 0 to path
  4270.         set value item 0 to (add_path(current_object,path,thedir))
  4271.         send do_dirlist
  4272.     end_procedure
  4273.  
  4274.     procedure set_values
  4275.         [not changes_made] indicate changes_made as ;
  4276.                 (changed_state(current_object))
  4277.     end_procedure
  4278.  
  4279.     procedure reset_values
  4280.         if (active_state(current_object)) send do_dirlist
  4281.         set changed_state to false
  4282.     end_procedure
  4283.  
  4284.     procedure activating
  4285.         forward send activating
  4286.         send do_dirlist
  4287.     end_procedure
  4288. end_class
  4289.  
  4290. class file_list is a sellist
  4291.     procedure construct_object integer file_image integer dir_image
  4292.         forward send construct_object file_image
  4293.         on_key key_enter send process_selections private
  4294.     end_procedure
  4295.  
  4296.     procedure load_list string filespec string dirspec string driverspec
  4297.         local string astr
  4298.         local integer item#
  4299.  
  4300.         set dynamic_update_state to false
  4301.         send fill_list
  4302.         if (right(trim(dirspec),1)) ne separator append dirspec separator
  4303.         direct_input ("DIR:" + dirspec + filespec)
  4304.         repeat
  4305.             readln astr
  4306.             [not seqeof] trim astr to astr
  4307.             [not seqeof] indicate got_one as (left(astr,1)) ne "["
  4308.             [not seqeof got_one] send add_item msg_select_and_rotate astr
  4309.         [not seqeof] loop
  4310.         close_input
  4311.         if (item_count(current_object)) gt 0 begin
  4312.            send sort_items ascending
  4313.            get item_matching driverspec item#
  4314.            set current_item to item#
  4315.            set select_state item current to true
  4316.         end
  4317.         set dynamic_update_state to true
  4318.     end_procedure
  4319.  
  4320.     procedure process_selection integer item#
  4321.         local string afile
  4322.         local integer form#
  4323.  
  4324.         get value item item# to afile
  4325.         get form_obj to form#
  4326.         send file_selected to form# afile
  4327.     end_procedure
  4328. end_class
  4329.  
  4330. class dir_list is a sellist
  4331.     procedure construct_object integer list_image
  4332.         forward send construct_object list_image
  4333.         on_key key_enter send process_selections private
  4334.     end_procedure
  4335.  
  4336.     procedure load_list string dirspec
  4337.         local string astr
  4338.  
  4339.         set dynamic_update_state to false
  4340.         send fill_list
  4341.         send add_item msg_select_and_rotate ".."
  4342.         if (right(trim(dirspec),1)) ne separator append dirspec separator
  4343.         direct_input ("DIR:" + dirspec + "*.*")
  4344.         repeat
  4345.             readln astr
  4346.             [not seqeof] trim astr to astr
  4347.             [not seqeof] indicate got_one as (left(astr,1)) eq "["
  4348.             [not seqeof got_one] mid astr to astr (length(astr) - 2) 2
  4349.             [not seqeof got_one] indicate got_one as (left(astr,1)) ne "."
  4350.             [not seqeof got_one] send add_item msg_select_and_rotate astr
  4351.         [not seqeof] loop
  4352.         close_input
  4353.         if (item_count(current_object)) gt 0 send sort_items ascending
  4354.         set dynamic_update_state to true
  4355.     end_procedure
  4356.  
  4357.     procedure process_selection integer item#
  4358.         local string adir
  4359.         local integer form#
  4360.  
  4361.         get value item item# to adir
  4362.         get form_obj to form#
  4363.         send dir_selected to form# adir
  4364.     end_procedure
  4365. end_class
  4366.  
  4367. class driver_client is a popup_client
  4368.     procedure construct_object integer image integer title_image ;
  4369.             string text integer file_image integer dir_image integer button_image
  4370.  
  4371.         forward send construct_object image
  4372.  
  4373.         property integer form_obj public 0
  4374.         property integer dir_obj public 0
  4375.         property integer file_obj public 0
  4376.  
  4377.         set location to 1 1 relative
  4378.  
  4379.         object title is an object_title title_image text
  4380.         end_object
  4381.  
  4382.         object file_stuff is a file_list file_image
  4383.         end_object
  4384.  
  4385.         object dir_stuff is a dir_list dir_image
  4386.         end_object
  4387.  
  4388.         object button is an option_button button_image
  4389.         end_object
  4390.  
  4391.         set file_obj to (object_id(file_stuff(current_object)))
  4392.         set dir_obj to (object_id(dir_stuff(current_object)))
  4393.     end_procedure
  4394.  
  4395.     procedure object_set_on
  4396.         send working "Reading,"
  4397.         forward send object_set_on
  4398.         send activate to (form_obj(current_object))
  4399.         send done
  4400.     end_procedure
  4401. end_class
  4402.  
  4403. register_function check_color integer color# returns integer
  4404. register_function ok_color integer color# returns integer
  4405.  
  4406. class slide_bar is a form
  4407.     procedure construct_object integer image
  4408.         forward send construct_object image
  4409.  
  4410.         property integer workpos  public
  4411.         property integer maxpos   public
  4412.         property string  trackbar public
  4413.  
  4414.         on_key key_f2 send set_values private
  4415.         on_key key_f5 send reset_values private
  4416.         on_key key_escape send object_set_off private
  4417.  
  4418.         on_key key_right_arrow send right_one private
  4419.         on_key key_left_arrow send left_one private
  4420.  
  4421.         item_list
  4422.             on_item "" send none
  4423.             set entry_state to false
  4424.         end_item_list
  4425.     end_procedure
  4426.  
  4427.     procedure set highlight_state integer state
  4428.         local integer newpos
  4429.         local string newvalue
  4430.  
  4431.         get workpos to newpos
  4432.         get trackbar to newvalue
  4433.         insert (character(if(state,active_thumb,inactive_thumb))) ;
  4434.                 in newvalue at (newpos + 2)
  4435.         set value item 0 to newvalue
  4436.     end_procedure
  4437.  
  4438.     procedure left_one
  4439.         local integer pos#
  4440.  
  4441.         get workpos to pos#
  4442.         set workpos to ((pos# - 1) max 0)
  4443.     end_procedure
  4444.  
  4445.     procedure right_one
  4446.         local integer pos# max#
  4447.  
  4448.         get workpos to pos#
  4449.         get maxpos to max#
  4450.         set workpos to ((pos# + 1) min max#)
  4451.     end_procedure
  4452.  
  4453.     procedure newthumb integer pos#
  4454.         local integer max#
  4455.  
  4456.         get maxpos to max#
  4457.         if pos# lt 0 send left_one
  4458.         else if pos# gt max# send right_one
  4459.         else set workpos to pos#
  4460.     end_procedure
  4461.  
  4462.     procedure mouse_down integer win# integer pos#
  4463.         forward send mouse_down win# pos#
  4464.         if win# eq 1 send newthumb (pos# - 2)
  4465.     end_procedure
  4466.  
  4467.     procedure mouse_drag integer win# integer pos#
  4468.         forward send mouse_drag win# pos#
  4469.         if win# eq 1 send newthumb (pos# - 2)
  4470.     end_procedure
  4471. end_class
  4472.  
  4473. class color_bar is a slide_bar
  4474.     procedure construct_object integer image
  4475.         forward send construct_object image
  4476.  
  4477.         set maxpos to 15
  4478.         set trackbar to color_trackbar
  4479.     end_procedure
  4480.  
  4481.     procedure left_one
  4482.         forward send left_one
  4483.         send show_sample
  4484.     end_procedure
  4485.  
  4486.     procedure right_one
  4487.         forward send right_one
  4488.         send show_sample
  4489.     end_procedure
  4490.  
  4491.     procedure newthumb integer pos#
  4492.         local integer max#
  4493.  
  4494.         forward send newthumb pos#
  4495.         get maxpos to max#
  4496.         if ((pos# ge 0) and (pos# <= max#)) send show_sample
  4497.     end_procedure
  4498. end_class
  4499.  
  4500. class color_sample is a message
  4501.     procedure construct_object integer image
  4502.         forward send construct_object image
  4503.         set focus_mode to nonfocusable
  4504.  
  4505.         property integer start_row public 0
  4506.         property integer start_col public 0
  4507.         property integer rows public 4
  4508.         property integer cols public 14
  4509.  
  4510.         set center_state item 0 to true
  4511.         set center_state item 1 to true
  4512.     end_procedure
  4513.  
  4514.     procedure make_sample integer color#
  4515.         if (color# = -1) begin
  4516.             set value item 0 to "Invalid"
  4517.             set value item 1 to "color!"
  4518.             screenmode 1
  4519.         end
  4520.         else if (color# = 0) begin
  4521.             set value item 0 to "Color of"
  4522.             set value item 1 to "parent"
  4523.             screenmode 1
  4524.         end
  4525.         else begin
  4526.             set value item 0 to "Color#"
  4527.             set value item 1 to (string(color#))
  4528.             screenmode color#
  4529.         end
  4530.  
  4531.         send color_block ((start_row(current_object) * 65536) + ;
  4532.                 start_col(current_object)) ;
  4533.                 ((rows(current_object) * 65536) + cols(current_object)) 
  4534.     end_procedure
  4535. end_class
  4536.  
  4537. class color_palette is a vconsole
  4538.     procedure construct_object integer image
  4539.         forward send construct_object image
  4540.         set size to 1 16
  4541.         set focus_mode to pointer_only
  4542.     end_procedure
  4543.  
  4544.     procedure draw
  4545.         send delete_data
  4546.         send virtual_console
  4547.         send draw_colors
  4548.         send virtual_console to desktop
  4549.     end_procedure
  4550. end_class
  4551.  
  4552. class background_sample is a color_palette
  4553.     procedure draw_colors
  4554.         local integer index
  4555.  
  4556.         for index from 0 to 7
  4557.             screenmode (112 + index) on
  4558.             show (character(active_thumb))
  4559.         loop
  4560.         for index from 0 to 7
  4561.             screenmode (128 + index) on
  4562.             show (character(active_thumb))
  4563.         loop
  4564.         screenmode off
  4565.     end_procedure
  4566.  
  4567.     procedure construct_object integer image
  4568.         forward send construct_object image
  4569.         set location to 4 5 relative
  4570.         send draw
  4571.     end_procedure
  4572.  
  4573.     procedure mouse_down integer win# integer pos#
  4574.         forward send mouse_down win# pos#
  4575.         send new_back_thumb pos#
  4576.     end_procedure
  4577.  
  4578.     procedure mouse_drag integer win# integer pos#
  4579.         forward send mouse_drag win# pos#
  4580.         send new_back_thumb pos#
  4581.     end_procedure
  4582. end_class
  4583.  
  4584. class foreground_sample is a color_palette
  4585.     procedure draw_colors
  4586.         local integer index
  4587.  
  4588.         for index from 0 to 15
  4589.             screenmode (112 + index) on
  4590.             show (character(active_thumb))
  4591.         loop
  4592.         screenmode off
  4593.     end_procedure
  4594.  
  4595.     procedure construct_object integer image
  4596.         forward send construct_object image
  4597.         set location to 9 5 relative
  4598.         send draw
  4599.     end_procedure
  4600.  
  4601.     procedure mouse_down integer win# integer pos#
  4602.         forward send mouse_down win# pos#
  4603.         send new_fore_thumb pos#
  4604.     end_procedure
  4605.  
  4606.     procedure mouse_drag integer win# integer pos#
  4607.         forward send mouse_drag win# pos#
  4608.         send new_fore_thumb pos#
  4609.     end_procedure
  4610. end_class
  4611.  
  4612. class color_prompt is a client
  4613.     procedure construct_object integer image
  4614.         forward send construct_object image
  4615.  
  4616.         property integer origcolor public
  4617.         property integer workcolor public
  4618.         property integer goodcolor public
  4619.  
  4620.         set popup_state to true
  4621.         set block_mouse_state to true
  4622.         set scope_state to true
  4623.  
  4624.         object title is an object_title prompt_color_title ""
  4625.         end_object
  4626.  
  4627.         object sample is a color_sample prompt_color_sample
  4628.             set start_row to 3
  4629.             set start_col to 27
  4630.         end_object
  4631.  
  4632.         object background_bar is a color_bar prompt_color_background
  4633.         end_object
  4634.  
  4635.         object background_sample is a background_sample 
  4636.         end_object
  4637.  
  4638.         object foreground_bar is a color_bar prompt_color_foreground
  4639.         end_object
  4640.  
  4641.         object foreground_sample is a foreground_sample 
  4642.         end_object
  4643.  
  4644.         object button is a button prompt_color_button
  4645.             set focus_mode to pointer_only
  4646.  
  4647.             item_list
  4648.                 on_item okkey send set_values
  4649.                 on_item resetkey send reset_values
  4650.                 on_item cancelkey send object_set_off
  4651.                 on_item helpkey send extended_help
  4652.             end_item_list
  4653.         end_object
  4654.     end_procedure
  4655.  
  4656.     procedure new_back_thumb integer pos#
  4657.         send activate to (background_bar(current_object))
  4658.         send newthumb to (background_bar(current_object)) pos#
  4659.     end_procedure
  4660.  
  4661.     procedure new_fore_thumb integer pos#
  4662.         send activate to (foreground_bar(current_object))
  4663.         send newthumb to (foreground_bar(current_object)) pos#
  4664.     end_procedure
  4665.  
  4666.     procedure set_values
  4667.         local integer fg bg
  4668.  
  4669.         if (goodcolor(current_object)) begin
  4670.             get workpos of (background_bar(current_object)) to bg
  4671.             get workpos of (foreground_bar(current_object)) to fg
  4672.             set origcolor to (bg * 16 + fg)
  4673.         end
  4674.         delegate send export_color (origcolor(current_object))
  4675.         send object_set_off
  4676.     end_procedure
  4677.  
  4678.     procedure reset_values
  4679.         local integer color
  4680.  
  4681.         get workcolor to color
  4682.         set workpos of (background_bar(current_object)) to (color / 16)
  4683.         set workpos of (foreground_bar(current_object)) to (color iand $0F)
  4684.         set highlight_state of (background_bar(current_object)) to false
  4685.         set highlight_state of (foreground_bar(current_object)) to false
  4686.         send show_sample
  4687.     end_procedure
  4688.  
  4689.     procedure show_sample
  4690.         local integer fg bg newcolor retval
  4691.  
  4692.         get workpos of (background_bar(current_object)) to bg
  4693.         get workpos of (foreground_bar(current_object)) to fg
  4694.         move (bg * 16 + fg) to newcolor
  4695.         get check_color newcolor to retval
  4696.         send make_sample to (sample(current_object)) retval
  4697.         set goodcolor to (retval <> -1)
  4698.     end_procedure
  4699.  
  4700.     procedure object_set_on integer startvalue string text
  4701.         set origcolor to startvalue
  4702.         set workcolor to startvalue
  4703.         set value of (title(current_object)) item 0 to text
  4704.         send popup
  4705.         send reset_values
  4706.     end_procedure
  4707.  
  4708.     procedure object_set_off
  4709.         send reset_values
  4710.         send deactivate
  4711.     end_procedure
  4712. end_class
  4713.  
  4714. class palette_selection is a sellist
  4715.     procedure construct_object integer image
  4716.         local integer index
  4717.  
  4718.         forward send construct_object image
  4719.  
  4720.         set popup_state to true
  4721.         set exit_msg to exit
  4722.  
  4723.         on_key key_enter send process_selections private
  4724.         on_key key_escape send object_set_off private
  4725.  
  4726.         send initialize
  4727.  
  4728.         for index from 0 to 8
  4729.             send add_item msg_select_and_rotate ;
  4730.                     (value(palette_names.obj,index))
  4731.         loop
  4732.     end_procedure
  4733.  
  4734.     procedure process_selection integer item#
  4735.         local string astring
  4736.  
  4737.         get value item item# to astring
  4738.         send export_palette astring
  4739.         send object_set_off
  4740.     end_procedure
  4741.  
  4742.     procedure object_set_on integer startvalue
  4743.         local integer state
  4744.  
  4745.         delegate get can_inherit to state
  4746.         set shadow_state item 0 to (if(state,(false),(true)))
  4747.         set current_item to startvalue
  4748.         send popup
  4749.     end_procedure
  4750.  
  4751.     procedure object_set_off
  4752.         send deactivate
  4753.     end_procedure
  4754. end_class
  4755.  
  4756. class color_form is a form
  4757.     procedure construct_object integer image
  4758.         forward send construct_object image
  4759.         set auto_top_item_state to false
  4760.  
  4761.         on_key key_f2 send request_set_values private
  4762.         on_key key_f4 send prompt_for_value private
  4763.         on_key key_f5 send request_reset_values private
  4764.         on_key key_escape send object_set_off private
  4765.     end_procedure
  4766.  
  4767.     procedure validate_color
  4768.         local integer color#
  4769.  
  4770.         get value item current to color#
  4771.         if (ok_color(current_object,color#)) send next
  4772.     end_procedure
  4773.  
  4774.     procedure set current_item integer item#
  4775.         forward set current_item to item#
  4776.         if (message(current_object,item#)) eq msg_validate_color ;
  4777.                 send make_sample to (sample(current_object)) ;
  4778.                 (integer(value(current_object,item#)))
  4779.     end_procedure
  4780. end_class
  4781.  
  4782. class color_client is a client
  4783.     procedure construct_object integer main_image integer title_image ;
  4784.             integer sample_image integer button_image
  4785.  
  4786.         forward send construct_object main_image
  4787.  
  4788.         property integer can_inherit public 0
  4789.  
  4790.         set popup_state to true
  4791.         set block_mouse_state true
  4792.  
  4793.         object title is an object_title title_image ""
  4794.         end_object
  4795.  
  4796.         register_object form is a color_form form_image
  4797.  
  4798.         object sample is a color_sample sample_image
  4799.         end_object
  4800.  
  4801.         object prompt_color is a color_prompt prompt_color_client
  4802.             set location to 2 25 relative
  4803.         end_object
  4804.  
  4805.         object button is a prompt_option_button button_image
  4806.         end_object
  4807.     end_procedure
  4808.  
  4809.     function check_color integer color# returns integer
  4810.         local integer retval
  4811.  
  4812.         if ((color# < 0) or (color# = 3) or (color# = 254) or (color# = 255));
  4813.                 move -1 to retval
  4814.         else if color# eq 0 ;
  4815.                 move (if(can_inherit(current_object),0,-1)) to retval
  4816.         else move color# to retval
  4817.  
  4818.         function_return retval
  4819.     end_function
  4820.  
  4821.     function ok_color integer color# returns integer
  4822.         local integer retval
  4823.  
  4824.         get check_color color# to retval
  4825.         if retval eq -1 error 17
  4826.  
  4827.         function_return (retval ne -1)
  4828.     end_function
  4829.  
  4830.     procedure object_set_on
  4831.         send request_reset_values
  4832.         send popup
  4833.         set current_item of (form(current_object)) to 0
  4834.     end_procedure
  4835.  
  4836.     procedure object_set_off
  4837.         send request_reset_values
  4838.         send deactivate
  4839.         send show_status
  4840.     end_procedure
  4841.  
  4842.     procedure export_color integer color#
  4843.         local integer item#
  4844.  
  4845.         get current_item of (form(current_object)) to item#
  4846.         set value of (form(current_object)) item item# to color#
  4847.         set current_item of (form(current_object)) to item#
  4848.     end_procedure
  4849. end_class
  4850.  
  4851. class class_color_object is a color_client
  4852.     procedure construct_object integer image integer title_image ;
  4853.             integer form_image integer sample_image integer button_image
  4854.  
  4855.         forward send construct_object image title_image sample_image ;
  4856.                 button_image
  4857.  
  4858.         property integer work_class public
  4859.         property integer work_fg public
  4860.         property integer work_bg public
  4861.         property integer work_pal public
  4862.  
  4863.         object form is a color_form form_image
  4864.             item_list
  4865.                 autoclear_item "" send validate_color
  4866.                 autoclear_item "" send validate_color
  4867.                 on_item "" send none
  4868.                 set entry_state to false
  4869.             end_item_list
  4870.         end_object
  4871.  
  4872.         object prompt_palette is a palette_selection prompt_palette_list
  4873.             set location to 7 27 relative
  4874.         end_object
  4875.     end_procedure
  4876.  
  4877.     procedure request_set_values
  4878.         local integer oldvalue newvalue index
  4879.  
  4880.         for index from 0 to 1
  4881.             get value of (form(current_object)) item index to newvalue
  4882.             if not (ok_color(current_object,newvalue)) begin
  4883.                 set current_item of (form(current_object)) to index
  4884.                 procedure_return
  4885.             end
  4886.         loop
  4887.  
  4888.         get work_class to index
  4889.  
  4890.         get value of (form(current_object)) item 0 to newvalue
  4891.         get work_fg to oldvalue
  4892.         if newvalue ne oldvalue begin
  4893.             set work_fg to newvalue
  4894.             set fg_value of screencolors item index to newvalue
  4895.             indicate changes_made true
  4896.         end
  4897.  
  4898.         get value of (form(current_object)) item 1 to newvalue
  4899.         get work_bg to oldvalue
  4900.         if newvalue ne oldvalue begin
  4901.             set work_bg to newvalue
  4902.             set bg_value of screencolors item index to newvalue
  4903.             indicate changes_made true
  4904.         end
  4905.  
  4906.         move (find_index(palette_names.obj,value(form(current_object),2))) ;
  4907.                 to newvalue
  4908.         get work_pal to oldvalue
  4909.         if newvalue ne oldvalue begin
  4910.             set work_pal to newvalue
  4911.             set pal_value of screencolors item index to newvalue
  4912.             indicate changes_made true
  4913.         end
  4914.         send object_set_off
  4915.     end_procedure
  4916.  
  4917.     procedure request_reset_values
  4918.         set value of (form(current_object)) item 0 ;
  4919.                 to (work_fg(current_object))
  4920.         set value of (form(current_object)) item 1 ;
  4921.                 to (work_bg(current_object))
  4922.         set value of (form(current_object)) item 2 ;
  4923.                 to (value(palette_names.obj,work_pal(current_object)))
  4924.         set current_item of (form(current_object)) to 0
  4925.     end_procedure
  4926.  
  4927.     procedure prompt_for_value
  4928.         local integer item# index
  4929.         local string palette_name
  4930.  
  4931.         get current_item of (form(current_object)) to item#
  4932.         if item# le 1 begin
  4933.             get value of (form(current_object)) item item# to index
  4934.             move ((index max 0) min 253) to index
  4935.             send object_set_on to (prompt_color(current_object)) index ;
  4936.                     (if((item# = 0),"Window","Image") + " Color")
  4937.         end
  4938.         else begin
  4939.             get value of (form(current_object)) item item# to palette_name
  4940.             move (find_index(palette_names.obj,palette_name)) to index
  4941.             send object_set_on to (prompt_palette(current_object)) index
  4942.         end
  4943.     end_procedure
  4944.  
  4945.     procedure export_palette string newvalue
  4946.         set value of (form(current_object)) item 2 to newvalue
  4947.     end_procedure
  4948.  
  4949.     procedure object_set_on integer type integer inherits
  4950.         local string classname
  4951.  
  4952.         set work_class to type
  4953.         get name_value of screencolors item type to classname
  4954.         set value of (title(current_object)) item 0 ;
  4955.                 to (classname + " Class Colors")
  4956.         set work_fg to (fg_value(screencolors.obj,type))
  4957.         set work_bg to (bg_value(screencolors.obj,type))
  4958.         set work_pal to (pal_value(screencolors.obj,type))
  4959.         set can_inherit to inherits
  4960.         set start_row of (sample(current_object)) to 2
  4961.         set start_col of (sample(current_object)) to 37
  4962.         forward send object_set_on
  4963.     end_procedure
  4964. end_class
  4965.  
  4966. class palette_color_object is a color_client
  4967.     procedure construct_object integer image integer title_image ;
  4968.             integer form_image integer sample_image integer button_image
  4969.  
  4970.         forward send construct_object image title_image sample_image ;
  4971.                 button_image
  4972.  
  4973.         property integer work_palette public
  4974.         property integer work_normal public
  4975.         property integer work_shadow public
  4976.         property integer work_point public
  4977.         property integer work_shadow_point public
  4978.         property integer work_select public
  4979.         property integer work_select_point public
  4980.  
  4981.         object form is a color_form form_image
  4982.             item_list
  4983.                 autoclear_item "" send validate_color
  4984.                 autoclear_item "" send validate_color
  4985.                 autoclear_item "" send validate_color
  4986.                 autoclear_item "" send validate_color
  4987.                 autoclear_item "" send validate_color
  4988.                 autoclear_item "" send validate_color
  4989.             end_item_list
  4990.         end_object
  4991.     end_procedure
  4992.  
  4993.     procedure request_set_values
  4994.         local integer oldvalue newvalue index
  4995.  
  4996.         for index from 0 to 5
  4997.             get value of (form(current_object)) item index to newvalue
  4998.             if not (ok_color(current_object,newvalue)) begin
  4999.                 set current_item of (form(current_object)) to index
  5000.                 procedure_return
  5001.             end
  5002.         end
  5003.  
  5004.         get work_palette to index
  5005.  
  5006.         get value of (form(current_object)) item 0 to newvalue
  5007.         get work_normal to oldvalue
  5008.         if newvalue ne oldvalue begin
  5009.             set work_normal to newvalue
  5010.             set array_value of palette_colors item (index * 8) to newvalue
  5011.             indicate changes_made true
  5012.         end
  5013.  
  5014.         get value of (form(current_object)) item 1 to newvalue
  5015.         get work_shadow to oldvalue
  5016.         if newvalue ne oldvalue begin
  5017.             set work_shadow to newvalue
  5018.             set array_value of palette_colors item (index * 8 + 1) ;
  5019.                     to newvalue
  5020.             indicate changes_made true
  5021.         end
  5022.  
  5023.         get value of (form(current_object)) item 2 to newvalue
  5024.         get work_point to oldvalue
  5025.         if newvalue ne oldvalue begin
  5026.             set work_point to newvalue
  5027.             set array_value of palette_colors item (index * 8 + 2) ;
  5028.                     to newvalue
  5029.             indicate changes_made true
  5030.         end
  5031.  
  5032.         get value of (form(current_object)) item 3 to newvalue
  5033.         get work_shadow_point to oldvalue
  5034.         if newvalue ne oldvalue begin
  5035.             set work_shadow_point to newvalue
  5036.             set array_value of palette_colors item (index * 8 + 3) ;
  5037.                     to newvalue
  5038.             indicate changes_made true
  5039.         end
  5040.  
  5041.         get value of (form(current_object)) item 4 to newvalue
  5042.         get work_select to oldvalue
  5043.         if newvalue ne oldvalue begin
  5044.             set work_select to newvalue
  5045.             set array_value of palette_colors item (index * 8 + 4) ;
  5046.                     to newvalue
  5047.             indicate changes_made true
  5048.         end
  5049.  
  5050.         get value of (form(current_object)) item 5 to newvalue
  5051.         get work_select_point to oldvalue
  5052.         if newvalue ne oldvalue begin
  5053.             set work_select_point to newvalue
  5054.             set array_value of palette_colors item (index * 8 + 6) ;
  5055.                     to newvalue
  5056.             indicate changes_made true
  5057.         end
  5058.         send object_set_off
  5059.     end_procedure
  5060.  
  5061.     procedure request_reset_values
  5062.         set value of (form(current_object)) item 0 ;
  5063.                 to (work_normal(current_object))
  5064.         set value of (form(current_object)) item 1 ;
  5065.                 to (work_shadow(current_object))
  5066.         set value of (form(current_object)) item 2 ;
  5067.                 to (work_point(current_object))
  5068.         set value of (form(current_object)) item 3 ;
  5069.                 to (work_shadow_point(current_object))
  5070.         set value of (form(current_object)) item 4 ;
  5071.                 to (work_select(current_object))
  5072.         set value of (form(current_object)) item 5 ;
  5073.                 to (work_select_point(current_object))
  5074.         set current_item of (form(current_object)) to 0
  5075.     end_procedure
  5076.  
  5077.     procedure prompt_for_value
  5078.         local integer item# index
  5079.         local string palette_name title_text
  5080.  
  5081.         get current_item of (form(current_object)) to item#
  5082.         get value of (form(current_object)) item item# to index
  5083.         move ((index max 0) min 253) to index
  5084.         if item# eq 0 move "Uncursored" to title_text
  5085.         else if item# eq 1 move "Shadowed" to title_text
  5086.         else if item# eq 2 move "Pointed at" to title_text
  5087.         else if item# eq 3 move "Shadowed and pointed at" to title_text
  5088.         else if item# eq 4 move "Selected" to title_text
  5089.         else move "Selected and pointed at" to title_text
  5090.         send object_set_on to (prompt_color(current_object)) ;
  5091.                 index (title_text + " Color")
  5092.     end_procedure
  5093.  
  5094.     procedure object_set_on integer palette_num
  5095.         local string palette_name
  5096.         local integer it
  5097.  
  5098.         set work_palette to palette_num
  5099.         get value of palette_names item palette_num to palette_name
  5100.         set value of (title(current_object)) item 0 to ;
  5101.                 (palette_name + " Palette Colors")
  5102.         set work_normal to ;
  5103.                 (integer_value(palette_colors.obj,(palette_num * 8)))
  5104.         set work_shadow to ;
  5105.                 (integer_value(palette_colors.obj,(palette_num * 8 + 1)))
  5106.         set work_point to ;
  5107.                 (integer_value(palette_colors.obj,(palette_num * 8 + 2)))
  5108.         set work_shadow_point to ;
  5109.                 (integer_value(palette_colors.obj,(palette_num * 8 + 3)))
  5110.         set work_select to ;
  5111.                 (integer_value(palette_colors.obj,(palette_num * 8 + 4)))
  5112.         set work_select_point to ;
  5113.                 (integer_value(palette_colors.obj,(palette_num * 8 + 6)))
  5114.         set can_inherit to 1
  5115.         set start_row of (sample(current_object)) to 4
  5116.         set start_col of (sample(current_object)) to 37
  5117.         forward send object_set_on
  5118.     end_procedure
  5119. end_class
  5120.  
  5121.  
  5122. #IFDEF HAS_EXIT_COLOR
  5123.  
  5124. class exit_color_object is a color_client
  5125.     procedure construct_object integer image integer title_image ;
  5126.             integer form_image integer sample_image integer button_image
  5127.  
  5128.         forward send construct_object image title_image sample_image ;
  5129.                 button_image
  5130.  
  5131.         property integer work_exit public
  5132.  
  5133.         object form is a color_form form_image
  5134.             item_list
  5135.                 autoclear_item "" send validate_color
  5136.             end_item_list
  5137.         end_object
  5138.     end_procedure
  5139.  
  5140.     procedure request_set_values
  5141.         local integer oldvalue newvalue index
  5142.  
  5143.         get value of (form(current_object)) item 0 to newvalue
  5144.         if not (ok_color(current_object,newvalue)) procedure_return
  5145.  
  5146.         get work_exit to oldvalue
  5147.         if newvalue ne oldvalue begin
  5148.             set work_exit to newvalue
  5149.             move newvalue to exit_color_value
  5150.             indicate changes_made true
  5151.         end
  5152.  
  5153.         send object_set_off
  5154.     end_procedure
  5155.  
  5156.     procedure request_reset_values
  5157.         set value of (form(current_object)) item 0 ;
  5158.                 to (work_exit(current_object))
  5159.     end_procedure
  5160.  
  5161.     procedure prompt_for_value
  5162.         local integer index
  5163.  
  5164.         get value of (form(current_object)) item 0 to index
  5165.         move ((index max 0) min 253) to index
  5166.         send object_set_on to (prompt_color(current_object)) index ;
  5167.                 ("Image" + " Color")
  5168.     end_procedure
  5169.  
  5170.     procedure object_set_on
  5171.         set value of (title(current_object)) item 0 ;
  5172.                 to ("    Exit Color              Sample Color")
  5173.         set work_exit to exit_color_value
  5174.         set start_row of (sample(current_object)) to 3
  5175.         set start_col of (sample(current_object)) to 37
  5176.  
  5177.         forward send object_set_on
  5178.     end_procedure
  5179. end_class
  5180.  
  5181. #ENDIF      // HAS_EXIT_COLOR
  5182.  
  5183.  
  5184. class pick_menu is a list
  5185.    procedure construct_object integer img
  5186.       forward send construct_object img
  5187.       property integer original_selection public 0
  5188.    end_procedure
  5189.    procedure activate
  5190.       set client_area_state to true
  5191.       forward send activate
  5192.       set client_Area_state to false
  5193.       forward send activate
  5194.    end_procedure
  5195. end_class
  5196.  
  5197. object about is a client
  5198.     set location to 5 12 absolute
  5199.     set block_mouse_state to true
  5200.  
  5201.     object about_title is a title
  5202.         local integer serial_number
  5203.         local string reg_name
  5204.         set center_state item 0 to true
  5205.         set value item 0 to progname
  5206.         set center_state item 1 to true
  5207.         set value item 1 to ;
  5208.                 (if(multiuser,'Multi-user DataFlex','Single-user DataFlex'))
  5209.         registration reg_name serial_number
  5210.         set value of (about_title(about.obj)) item 2 to serial_number
  5211.         set value of (about_title(about.obj)) item 3 to reg_name
  5212.     end_object
  5213.  
  5214.     object about_ok is a button
  5215.         item_list
  5216.             on_item okmsg send deactivate to (parent(current_object))
  5217.             on_item helpmsg send extended_help
  5218.         end_item_list
  5219.  
  5220.         procedure init
  5221.             local integer mem
  5222.             memory mem
  5223.             set value of (about_title(about.obj)) item 4 to mem
  5224.         end_procedure
  5225.  
  5226.         set entry_msg to init
  5227.     end_object
  5228. end_object
  5229.  
  5230. procedure about
  5231.     send activate to about
  5232. end_procedure
  5233.  
  5234. function clip string fullpath integer maxlen returns string
  5235.     local string last
  5236.     local integer start stop len strpos
  5237.  
  5238.     length fullpath to len
  5239.     get fix_slashes fullpath to fullpath
  5240.     if len gt maxlen begin
  5241.         move len to stop
  5242.         while ((mid(fullpath,1,stop) <> separator) and (stop > 1))
  5243.             decrement stop
  5244.         end
  5245.         decrement stop
  5246.         while ((mid(fullpath,1,stop) <> separator) and (stop > 1))
  5247.             decrement stop
  5248.         end
  5249.         right fullpath to last (len - stop + 1)
  5250.         length last to stop
  5251.         move 0 to start
  5252.         for strpos from 1 to len
  5253.             if (mid(fullpath,1,strpos)) eq separator begin
  5254.                 if (strpos + stop + 3) le maxlen move strpos to start
  5255.             end
  5256.         until (strpos + stop + 3) gt maxlen
  5257.         left fullpath to fullpath start
  5258.         append fullpath ellipsis last
  5259.     end
  5260.     function_return fullpath
  5261. end_function
  5262.  
  5263. object not_done is an error
  5264.     set location to 9 18 absolute
  5265.     set popup_state to true
  5266.     set block_mouse_state to true
  5267.  
  5268.     set center_state item 0 to true
  5269.     set shadow_state item 0 to true
  5270.     set center_state item 1 to true
  5271.     set shadow_state item 1 to true
  5272.  
  5273.     object not_done_button is a button
  5274.         set local_rotate_state to true
  5275.         set scope_state to true
  5276.  
  5277.         item_list
  5278.             on_item okmsg send cancel
  5279.         end_item_list
  5280.     end_object
  5281.  
  5282.     procedure show_em string prompt1 string prompt2
  5283.         local integer retval
  5284.  
  5285.         set value item 0 to prompt1
  5286.         set value item 1 to prompt2
  5287.         ui_accept (not_done_button(current_object)) to retval
  5288.     end_procedure
  5289.  
  5290.     procedure tell_em string action
  5291.         set shadow_state item 1 to false
  5292.         send show_em ("Dfconfig failed to " + action + ":") ;
  5293.                 (clip(desktop,inifile,40))
  5294.         set shadow_state item 1 to true
  5295.     end_procedure
  5296. end_object
  5297.  
  5298. object not_saved is a warning_msg
  5299.     set location to 9 18 absolute
  5300.     set popup_state to true
  5301.     set block_mouse_state to true
  5302.     set shadow_state item 0 to true
  5303.  
  5304.     object not_saved_button is a button
  5305.         set local_rotate_state true
  5306.         set scope_state to true
  5307.  
  5308.         item_list
  5309.             on_item yes send ok
  5310.             on_item no send negative
  5311.             on_item cancelmsg send cancel
  5312.         end_item_list
  5313.  
  5314.         procedure negative returns integer
  5315.             procedure_return current_message
  5316.         end_procedure
  5317.     end_object
  5318.  
  5319.     function tell_em string prompt returns integer
  5320.         local integer retval
  5321.  
  5322.         set value item 0 to prompt
  5323.         ui_accept (not_saved_button(current_object)) to retval
  5324.         function_return retval
  5325.     end_function
  5326. end_object
  5327.  
  5328. function check_hex_ok string hex returns integer
  5329.     local string hexchar
  5330.     local integer hexlen index
  5331.  
  5332.     length hex to hexlen
  5333.     for index from 1 to hexlen
  5334.         if not (mid(hex,1,index)) in hexchars function_return index
  5335.     loop
  5336.     function_return 0
  5337. end_function
  5338.  
  5339. class hex_entry is an entry
  5340.     function hex_ok returns integer
  5341.         local string hex
  5342.         local integer retval
  5343.  
  5344.         get value item current to hex
  5345.         get check_hex_ok of desktop hex to retval
  5346.         if retval send bell
  5347.  
  5348.         function_return retval
  5349.     end_function
  5350.  
  5351.     function hex_value integer item# returns integer
  5352.         local string hex
  5353.  
  5354.         if item# eq current get current_item to item#
  5355.         get value item item# to hex
  5356.         function_return (hex2dec(desktop,hex))
  5357.     end_function
  5358.  
  5359.     procedure set hex_value integer item# integer val
  5360.         local string hex
  5361.  
  5362.         if item# eq current get current_item to item#
  5363.         get dec2hex of desktop val to hex
  5364.         set value item item# to hex
  5365.     end_procedure
  5366. end_class
  5367.  
  5368. #COMMAND HEX_ITEM
  5369.     entry_item !1 !2 !3 !4 !5 !6 !7 !8 !9
  5370.     set item_validate_msg to get_hex_ok
  5371. #ENDCOMMAND
  5372.  
  5373. class check_entry is an entry
  5374.     procedure construct_object integer image
  5375.         forward send construct_object image
  5376.  
  5377.         set select_mode to multi_select
  5378.     end_procedure
  5379. end_class
  5380.  
  5381. object invalid_char is a warning_msg
  5382.     set location to 9 20 absolute
  5383.     set popup_state to true
  5384.     set ring_state to true
  5385.     set client_area_state to true
  5386.  
  5387.     object invalid_char_button is a button
  5388.         item_list
  5389.             on_item okmsg send ok
  5390.         end_item_list
  5391.     end_object
  5392. end_object
  5393.  
  5394. class char_form is a form
  5395.     function ascii_val integer item# returns integer
  5396.         if item# eq current get current_item to item#
  5397.         function_return (ascii(value(current_object,item#)))
  5398.     end_function
  5399.  
  5400.     procedure ascii_set integer oldascii integer newascii
  5401.         local integer item#
  5402.  
  5403.         if oldascii ne newascii begin
  5404.             get current_item to item#
  5405.             set value item item# to (character(newascii))
  5406.             set item_changed_state item item# to true
  5407.         end
  5408.     end_procedure
  5409. end_class
  5410.  
  5411. // The following class is used for all 1-character entries where
  5412. // entering a space or the current window fill char is invalid.
  5413. // Whenever you enter <space> or the fill character (usu. underscore),
  5414. // and you get the value of the window, you get an empty string back.
  5415. // The ascii value of an empty string is 0, so that's what we check for.
  5416.  
  5417. class restricted_character_form is a char_form
  5418.     function current_ascii integer item# returns integer
  5419.         function_return (ascii_val(current_object,item#))
  5420.     end_function
  5421.  
  5422.     function bad_char integer item# returns integer
  5423.         local integer newchar
  5424.  
  5425.         get current_ascii item item# to newchar
  5426.         if ((newchar = 0) or  (newchar = 32) ;
  5427.                 or  (newchar = window_fill_char)) begin
  5428.             ui_accept invalid_char to newchar
  5429.             function_return (true)
  5430.         end
  5431.  
  5432.         function_return (false)
  5433.     end_function
  5434.  
  5435.     function entry returns integer
  5436.         forward get entry to termchar
  5437.         if (bad_char(current_object,current)) send reset_values
  5438.  
  5439.         function_return termchar
  5440.     end_function
  5441. end_class
  5442.  
  5443. // The following class is used for all 1-character entries where
  5444. // entering a space is distinct from entering the current window fill char
  5445. // or pressing <enter> on an empty window.  Both are valid.
  5446.  
  5447. class character_form is a char_form
  5448.     function current_ascii integer item# returns integer
  5449.         local integer char state
  5450.  
  5451.         get ascii_val item item# to char
  5452.  
  5453.         if char eq 0 begin
  5454.             // Here, either fillchar or <space> was entered.
  5455.             // Determine which one by checking the item changed state,
  5456.             // which turns out to be only true when changed from a 
  5457.             // non-space to a space.
  5458.             if (item_changed_state(current_object,item#)) move 32 to char
  5459.             else move fill_char to char
  5460.         end
  5461.         function_return char
  5462.     end_function
  5463.  
  5464.     function entry returns integer
  5465.         local string achar
  5466.         local integer item# oldchar newchar
  5467.  
  5468.         // We have to do this since <space> and the current fill
  5469.         // character are seen as one and the same. Only inkey and
  5470.         // supply_key let us look at the real key.  Inkey is easier.
  5471.  
  5472.         get current_item to item#
  5473.         get value item current to achar
  5474.         ascii achar to oldchar
  5475.         move oldchar to newchar
  5476.  
  5477.         repeat
  5478.             set highlight_state to true
  5479.             inkey achar
  5480.             // process regular ascii ourselves
  5481.             if termchar le 255 begin 
  5482.                 set value item current to achar
  5483.                 move termchar to newchar
  5484.             end
  5485.         until termchar gt 255 // ie. accelerator pressed
  5486.         set item_changed_state item item# to (newchar <> oldchar)
  5487.         set highlight_state to false
  5488.  
  5489.         function_return termchar
  5490.     end_function
  5491. end_class
  5492.  
  5493. object main_object is a client
  5494.     set ring_state to true
  5495.     set location to 2 0 absolute
  5496.  
  5497.     object main_title is an object_title main_title progname
  5498.         set location to -2 0 relative
  5499.     end_object
  5500.  
  5501.     object main_footer is a title
  5502.         set location to 23 0 absolute
  5503.         set value item 0 to ""
  5504.         set value item 1 to (clip(desktop,inifile,38))
  5505.         get class_colors of desktop u_action_bar to windowindex
  5506.         set object_color to (low(windowindex)) (low(windowindex))
  5507.     end_object
  5508.  
  5509.     object keyboard_stuff is a client
  5510.         set location to 0 1 relative
  5511.         set popup_state to true
  5512.         set block_mouse_state true
  5513.  
  5514.         object keyboard_stuff_title is an object_title keyboard_stuff_title ;
  5515.                 "Accelerator Key Configuration"
  5516.         end_object
  5517.  
  5518.         object keyboard_list is a sellist
  5519.             on_key key_enter send process_selections private
  5520.             on_key key_escape send object_set_off private
  5521.  
  5522.             procedure activating
  5523.                 forward send activating
  5524.                 set current_item to 0
  5525.             end_procedure
  5526.  
  5527.             procedure load_list
  5528.                 local string prompt
  5529.  
  5530.                 for windowindex from kprint_screen to kclear_all
  5531.                     get name_value of cua_keys item (windowindex - 256) ;
  5532.                             to prompt
  5533.                     send add_item msg_select_and_rotate ;
  5534.                             (trim(prompt) + ellipsis)
  5535.                 loop
  5536.                 for windowindex from kmark to kclose_panel
  5537.                     get name_value of cua_keys item (windowindex - 256) ;
  5538.                             to prompt
  5539.                     send add_item msg_select_and_rotate ;
  5540.                             (trim(prompt) + ellipsis)
  5541.                 loop
  5542.                 send sort_items ascending
  5543.             end_procedure
  5544.  
  5545.             procedure process_selection integer item#
  5546.                 local string astring
  5547.  
  5548.                 get value item item# to astring
  5549.                 replace ellipsis in astring with ""
  5550.                 send do_key astring
  5551.             end_procedure
  5552.  
  5553.             send load_list
  5554.         end_object
  5555.  
  5556.         object accelerator_key is a key_client accelerator_key ;
  5557.                 accelerator_key_title.n accelerator_key_form.n ;
  5558.                 accelerator_key_button.n
  5559.  
  5560.             set location to 2 6 relative
  5561.             set focus_mode to no_activate
  5562.         end_object
  5563.  
  5564.         object keyboard_button is a button
  5565.             set focus_mode to pointer_only
  5566.  
  5567.             item_list
  5568.                 on_item closekey send object_set_off
  5569.                 on_item helpkey send extended_help
  5570.             end_item_list
  5571.         end_object
  5572.  
  5573.         procedure object_set_on
  5574.             send popup
  5575.         end_procedure
  5576.  
  5577.         procedure object_set_off
  5578.             send deactivate
  5579.             send show_status
  5580.         end_procedure
  5581.  
  5582.         procedure do_key string this_one
  5583.             local string label
  5584.  
  5585.             for windowindex from kprint_screen to kclear_all
  5586.                 get name_value of cua_keys item (windowindex - 256) to label
  5587.                 indicate found as label eq this_one
  5588.             [finderr] loop
  5589.             [finderr] for windowindex from kmark to kclose_panel
  5590.                     get name_value of cua_keys item (windowindex - 256) to label
  5591.                     indicate found as label eq this_one
  5592.             [finderr] loop
  5593.             [finderr] send bell
  5594.             [found] send object_set_on ;
  5595.                     to (accelerator_key(current_object)) windowindex
  5596.         end_procedure
  5597.     end_object
  5598.  
  5599.     object default_color is a class_color_object default_color ;
  5600.             default_color_title.n default_color_form.n default_color_sample.n ;
  5601.             default_color_button.n
  5602.  
  5603.         set location to 2 10 relative
  5604.     end_object
  5605.  
  5606.     procedure do_default_colors
  5607.         send object_set_on to (default_color(current_object)) u_desktop false
  5608.     end_procedure
  5609.  
  5610.     object palette_color_stuff is a client
  5611.         set popup_state to true
  5612.         set block_mouse_state true
  5613.         set location to 0 1 relative
  5614.  
  5615.         object palette_color_stuff_title is an object_title ;
  5616.                 palette_color_stuff_title "Palette Color Configuration"
  5617.         end_object
  5618.  
  5619.         object palette_color_stuff_list is a sellist
  5620.             set scroll_bar_visible_state to false
  5621.  
  5622.             on_key key_enter send process_selections private
  5623.             on_key key_escape send object_set_off private
  5624.  
  5625.             procedure activating
  5626.                 forward send activating
  5627.                 set current_item to 0
  5628.             end_procedure
  5629.  
  5630.             procedure load_list
  5631.                 local integer palette_num
  5632.                 local string palette_name
  5633.  
  5634.                 for palette_num from 1 to 8
  5635.                     get value of palette_names item palette_num to palette_name
  5636.                     send add_item msg_select_and_rotate ;
  5637.                             (palette_name + ellipsis)
  5638.                 loop
  5639.             end_procedure
  5640.  
  5641.             procedure process_selection integer item#
  5642.                 send do_palette (item# + 1)
  5643.             end_procedure
  5644.  
  5645.             send load_list
  5646.         end_object
  5647.  
  5648.         object palette_colors_button is a button
  5649.             set focus_mode to pointer_only
  5650.  
  5651.             item_list
  5652.                 on_item closekey send object_set_off
  5653.                 on_item helpkey send extended_help
  5654.             end_item_list
  5655.         end_object
  5656.  
  5657.         object palette_color_popup is a palette_color_object ;
  5658.                 palette_color_popup palette_color_popup_title.n ;
  5659.                 palette_color_popup_form.n palette_color_popup_sample.n ;
  5660.                 palette_color_popup_button.n
  5661.  
  5662.             set location to 2 9 relative
  5663.         end_object
  5664.  
  5665.         procedure object_set_on
  5666.             send popup
  5667.         end_procedure
  5668.  
  5669.         procedure object_set_off
  5670.             send deactivate
  5671.             send show_status to main_object
  5672.         end_procedure
  5673.  
  5674.         procedure do_palette integer palette_num
  5675.             send object_set_on to (palette_color_popup(current_object)) ;
  5676.                     palette_num
  5677.         end_procedure
  5678.     end_object
  5679.  
  5680.     object class_color_stuff is a client
  5681.         set popup_state to true
  5682.         set block_mouse_state true
  5683.         set location to 0 1 relative
  5684.  
  5685.         object class_color_stuff_title is an object_title ;
  5686.                 class_color_stuff_title "Class Color Configuration"
  5687.         end_object
  5688.  
  5689.         object class_list is a sellist
  5690.             on_key key_enter send process_selections private
  5691.             on_key key_escape send object_set_off private
  5692.  
  5693.             procedure activating
  5694.                 forward send activating
  5695.                 set current_item to 0
  5696.             end_procedure
  5697.  
  5698.             procedure load_list
  5699.                 local integer index
  5700.                 local string stuff
  5701.  
  5702.                 for index from u_message to u_help
  5703.                     get name_value of screencolors item index to stuff
  5704.                     send add_item msg_select_and_rotate (stuff + ellipsis)
  5705.                 loop
  5706.                 for index from u_trace to u_entrylist
  5707.                     get name_value of screencolors item index to stuff
  5708.                     send add_item msg_select_and_rotate (stuff + ellipsis)
  5709.                 loop
  5710.                 for index from u_radio to u_clipboard
  5711.                     get name_value of screencolors item index to stuff
  5712.                     send add_item msg_select_and_rotate (stuff + ellipsis)
  5713.                 loop
  5714.                 send sort_items ascending
  5715.             end_procedure
  5716.  
  5717.             procedure process_selection integer item#
  5718.                 local string astring
  5719.  
  5720.                 get value item item# to astring
  5721.                 replace ellipsis in astring with ""
  5722.                 send do_class astring
  5723.             end_procedure
  5724.  
  5725.             send load_list
  5726.         end_object
  5727.  
  5728.         object class_colors_button is a button
  5729.             set focus_mode to pointer_only
  5730.  
  5731.             item_list
  5732.                 on_item closekey send object_set_off
  5733.                 on_item helpkey send extended_help
  5734.             end_item_list
  5735.         end_object
  5736.  
  5737.         object class_color_popup is a class_color_object class_color_popup ;
  5738.                 class_color_popup_title.n class_color_popup_form.n ;
  5739.                 class_color_popup_sample.n class_color_popup_button.n
  5740.  
  5741.             set location to 2 9 relative
  5742.         end_object
  5743.  
  5744.         procedure object_set_on
  5745.             send popup
  5746.         end_procedure
  5747.  
  5748.         procedure object_set_off
  5749.             send deactivate
  5750.             send show_status to main_object
  5751.         end_procedure
  5752.  
  5753.         procedure do_class string this_one
  5754.             local integer index
  5755.             local string stuff
  5756.  
  5757.             for index from u_message to u_clipboard
  5758.             until this_one eq (name_value(screencolors.obj,index))
  5759.  
  5760.             send object_set_on to (class_color_popup(current_object)) index 1
  5761.         end_procedure
  5762.     end_object
  5763.  
  5764.  
  5765. #IFDEF HAS_EXIT_COLOR
  5766.  
  5767.     object exit_color is an exit_color_object exit_color ;
  5768.             exit_color_title.n exit_color_form.n exit_color_sample.n ;
  5769.             exit_color_button.n
  5770.  
  5771.         set location to 2 10 relative
  5772.     end_object
  5773.  
  5774. #ENDIF      // HAS_EXIT_COLOR
  5775.  
  5776.  
  5777.     object date_format is a character_popup_client
  5778.     
  5779.         procedure object_set_on
  5780.             if (already_created(current_object)) eq 0 begin
  5781.                gosub date_format_begin
  5782.                send disallow_prompt
  5783.             end
  5784.             set already_created to 1
  5785.             send request_reset_values
  5786.             send popup
  5787.         end_procedure
  5788.  
  5789.         goto date_format_end
  5790.  
  5791.         date_format_begin:
  5792.         object date_format_title is an object_title date_format_title ;
  5793.                 "Date Format Options"
  5794.         end_object
  5795.  
  5796.         object date_format_radio is a checkbox
  5797.             set select_mode to auto_select
  5798.             set auto_top_item_state to false
  5799.  
  5800.             on_key key_f4 send default_key
  5801.  
  5802.             item_list
  5803.                 on_item "" send next
  5804.                 on_item "" send next
  5805.                 on_item "" send next
  5806.             end_item_list
  5807.  
  5808.             procedure mouse_up
  5809.             end_procedure
  5810.  
  5811.             procedure reset_items string achar
  5812.                 if achar eq "" move " " to achar
  5813.                 set value item 0 to ("11" + achar + "25" + achar + "1980")
  5814.                 set value item 1 to ("25" + achar + "11" + achar + "1980")
  5815.                 set value item 2 to ("1980" + achar + "11" + achar + "25")
  5816.             end_procedure
  5817.  
  5818.             procedure reset_values
  5819.                 send reset_items (character(date_separator))
  5820.                 set current_item to date_format_option
  5821.                 set select_state item current to true
  5822.                 set changed_state to false
  5823.             end_procedure
  5824.  
  5825.             procedure set_values
  5826.                 local integer option state
  5827.  
  5828.                 for option from 0 to 2
  5829.                     get select_state item option to state
  5830.                     if (state and (option <> date_format_option)) begin
  5831.                         move option to date_format_option
  5832.  
  5833.                         set changed_state to true
  5834.                     end
  5835.                 loop
  5836.  
  5837.                 get changed_state to state
  5838.                 [not changes_made] indicate changes_made as state
  5839.             end_procedure
  5840.  
  5841.             send reset_values
  5842.         end_object
  5843.  
  5844.         object date_format_form is a restricted_character_form
  5845.             set entry_msg to allow_prompt
  5846.             set exit_msg to disallow_prompt
  5847.  
  5848.             item_list
  5849.                 on_item "" send update_radio
  5850.             end_item_list
  5851.  
  5852.             procedure modify_radio
  5853.                 send reset_items to (date_format_radio(current_object)) ;
  5854.                         (value(current_object,0))
  5855.             end_procedure
  5856.  
  5857.             procedure update_radio
  5858.                 send modify_radio 
  5859.                 send next
  5860.             end_procedure
  5861.  
  5862.             procedure reset_values
  5863.                 set value item 0 to (character(date_separator))
  5864.                 set changed_state to false
  5865.                 send modify_radio
  5866.             end_procedure
  5867.  
  5868.             procedure set_values
  5869.                 local string achar
  5870.                 local integer state new_separator
  5871.  
  5872.                 get changed_state to state
  5873.                 get current_ascii item 0 to new_separator
  5874.  
  5875.                 if (bad_char(current_object,0)) send reset_values
  5876.                 else move new_separator to date_separator
  5877.  
  5878.                 get changed_state to state
  5879.                 [not changes_made] indicate changes_made as state
  5880.             end_procedure
  5881.  
  5882.             procedure ascii_set integer oldascii integer newascii
  5883.                 if oldascii ne newascii send reset_items to ;
  5884.                         (date_format_radio(current_object)) ;
  5885.                         (character(newascii))
  5886.                 forward send ascii_set oldascii newascii
  5887.             end_procedure
  5888.  
  5889.             send reset_values
  5890.         end_object
  5891.  
  5892.         object date_format_button is a prompt_option_button
  5893.         end_object
  5894.         return
  5895.         date_format_end:
  5896.  
  5897.         procedure allow_prompt
  5898.             send shadow_prompt to (date_format_button(current_object)) false
  5899.         end_procedure
  5900.  
  5901.         procedure disallow_prompt
  5902.             send shadow_prompt to (date_format_button(current_object)) true
  5903.         end_procedure
  5904.  
  5905.     end_object
  5906.  
  5907.     object numeric_format is a popup_client
  5908.     
  5909.         procedure object_set_on
  5910.             if (already_created(current_object)) eq 0 gosub numeric_format_begin
  5911.             set already_created to 1
  5912.             send request_reset_values
  5913.             send popup
  5914.         end_procedure
  5915.  
  5916.         goto numeric_format_end
  5917.  
  5918.         numeric_format_begin:
  5919.         object numeric_format_title is an object_title numeric_format_title ;
  5920.                 "Number Format Option"
  5921.         end_object
  5922.  
  5923.         object numeric_format_radio is a checkbox
  5924.             set select_mode to auto_select
  5925.             set auto_top_item_state to false
  5926.  
  5927.             item_list
  5928.                 on_item "10,000.00" send next
  5929.                 on_item "10.000,00" send next
  5930.             end_item_list
  5931.  
  5932.             procedure mouse_up
  5933.             end_procedure
  5934.  
  5935.             procedure reset_values
  5936.                 set current_item to numeric_format_option
  5937.                 set select_state item current to true
  5938.                 set changed_state to false
  5939.             end_procedure
  5940.  
  5941.             procedure set_values
  5942.                 local integer option state
  5943.  
  5944.                 for option from 0 to 1
  5945.                     get select_state item option to state
  5946.                     if (state and (option <> numeric_format_option)) begin
  5947.                         move option to numeric_format_option
  5948.                         set changed_state to true
  5949.                     end
  5950.                 loop
  5951.  
  5952.                 get changed_state to state
  5953.                 [not changes_made] indicate changes_made as state
  5954.             end_procedure
  5955.  
  5956.             send reset_values
  5957.         end_object
  5958.  
  5959.         object numeric_format_button is an option_button
  5960.         end_object
  5961.         return
  5962.         numeric_format_end:
  5963.     end_object
  5964.  
  5965.     object check_strings is a popup_client
  5966.     
  5967.         procedure object_set_on
  5968.             if (already_created(current_object)) eq 0 gosub check_strings_begin
  5969.             set already_created to 1
  5970.             send request_reset_values
  5971.             send popup
  5972.         end_procedure
  5973.  
  5974.         goto check_strings_end
  5975.  
  5976.         check_strings_begin:
  5977.         object check_strings_title is an object_title check_strings_title ;
  5978.                 "Checkbox Appearance"
  5979.         end_object
  5980.  
  5981.         object check_strings_form is a form
  5982.             item_list
  5983.                 on_item "" send next
  5984.                 on_item "" send next
  5985.             end_item_list
  5986.  
  5987.             procedure reset_values
  5988.                 set value item 0 to check_string_select
  5989.                 set value item 1 to check_string_deselect
  5990.                 set changed_state to false
  5991.             end_procedure
  5992.  
  5993.             procedure set_values
  5994.                 local integer stringsize state
  5995.  
  5996.                 get value item 0 to check_string_select
  5997.                 if (right(check_string_select,1)) ne space ;
  5998.                         append check_string_select space
  5999.                 get value item 1 to check_string_deselect
  6000.                 if (right(check_string_deselect,1)) ne space ;
  6001.                         append check_string_deselect space
  6002.                 move (length(check_string_select) ;
  6003.                         max length(check_string_deselect)) to stringsize
  6004.                 pad check_string_select to check_string_select stringsize
  6005.                 pad check_string_deselect to check_string_deselect stringsize
  6006.  
  6007.                 get changed_state to state
  6008.                 [not changes_made] indicate changes_made as state
  6009.             end_procedure
  6010.  
  6011.             send reset_values
  6012.         end_object
  6013.  
  6014.         object check_strings_button is an option_button
  6015.         end_object
  6016.         return
  6017.         check_strings_end:
  6018.     end_object
  6019.  
  6020.     object radio_strings is a popup_client
  6021.         procedure object_set_on
  6022.             if (already_created(current_object)) eq 0 gosub radio_strings_begin
  6023.             set already_created to 1
  6024.             send request_reset_values
  6025.             send popup
  6026.         end_procedure
  6027.  
  6028.         goto radio_strings_end
  6029.  
  6030.         radio_strings_begin:
  6031.         object radio_strings_title is an object_title radio_strings_title ;
  6032.                 "Radio Button Appearance"
  6033.         end_object
  6034.  
  6035.         object radio_strings_form is a form
  6036.             item_list
  6037.                 on_item "" send next
  6038.                 on_item "" send next
  6039.             end_item_list
  6040.  
  6041.             procedure reset_values
  6042.                 set value item 0 to radio_string_select
  6043.                 set value item 1 to radio_string_deselect
  6044.                 set changed_state to false
  6045.             end_procedure
  6046.  
  6047.             procedure set_values
  6048.                 local integer stringsize state
  6049.  
  6050.                 get value item 0 to radio_string_select
  6051.                 if (right(radio_string_select,1)) ne space ;
  6052.                         append radio_string_select space
  6053.                 get value item 1 to radio_string_deselect
  6054.                 if (right(radio_string_deselect,1)) ne space ;
  6055.                         append radio_string_deselect space
  6056.                 move (length(radio_string_select) ;
  6057.                         max length(radio_string_deselect)) to stringsize
  6058.                 pad radio_string_select to radio_string_select stringsize
  6059.                 pad radio_string_deselect to radio_string_deselect stringsize
  6060.  
  6061.                 get changed_state to state
  6062.                 [not changes_made] indicate changes_made as state
  6063.             end_procedure
  6064.  
  6065.             send reset_values
  6066.         end_object
  6067.  
  6068.         object radio_strings_button is an option_button
  6069.         end_object
  6070.         return
  6071.         radio_strings_end:
  6072.     end_object
  6073.  
  6074.     object currency is a popup_client
  6075.         procedure object_set_on
  6076.             if (already_created(current_object)) eq 0 gosub currency_begin
  6077.             set already_created to 1
  6078.             send request_reset_values
  6079.             send popup
  6080.         end_procedure
  6081.  
  6082.         goto currency_end
  6083.  
  6084.         currency_begin:
  6085.         object currency_title is an object_title currency_title ;
  6086.                 "Currency String Appearance"
  6087.         end_object
  6088.  
  6089.         object currency_form is a form
  6090.             item_list
  6091.                 autoclear_item "" send next
  6092.             end_item_list
  6093.  
  6094.             procedure reset_values
  6095.                 set value item 0 to currency_string
  6096.                 set changed_state to false
  6097.             end_procedure
  6098.  
  6099.             procedure set_values
  6100.                 local integer state
  6101.  
  6102.                 get value item 0 to currency_string
  6103.  
  6104.                 get changed_state to state
  6105.                 [not changes_made] indicate changes_made as state
  6106.             end_procedure
  6107.  
  6108.             send reset_values
  6109.         end_object
  6110.  
  6111.         object currency_button is an option_button
  6112.         end_object
  6113.         return
  6114.         currency_end:
  6115.     end_object
  6116.  
  6117.     object window_fill is a character_popup_client
  6118.         procedure object_set_on
  6119.             if (already_created(current_object)) eq 0 gosub window_fill_begin
  6120.             set already_created to 1
  6121.             send request_reset_values
  6122.             send popup
  6123.         end_procedure
  6124.  
  6125.         goto window_fill_end
  6126.  
  6127.         window_fill_begin:
  6128.         object window_fill_title is an object_title window_fill_title ;
  6129.                 "Empty Window Appearance"
  6130.         end_object
  6131.  
  6132.         object window_fill_sample is an object_title window_fill_sample ;
  6133.                 "________"
  6134.         end_object
  6135.  
  6136.         object window_fill_form is a character_form
  6137.             item_list
  6138.                 on_item "" send next
  6139.             end_item_list
  6140.  
  6141.             procedure reset_values
  6142.                 set value item 0 to (character(window_fill_char))
  6143.                 set changed_state to false
  6144.             end_procedure
  6145.  
  6146.             procedure set_values
  6147.                 local integer state
  6148.  
  6149.                 get current_ascii item 0 to window_fill_char
  6150.  
  6151.                 get changed_state to state
  6152.                 [not changes_made] indicate changes_made as state
  6153.             end_procedure
  6154.  
  6155.             send reset_values
  6156.         end_object
  6157.  
  6158.         object window_fill_button is a prompt_option_button
  6159.         end_object
  6160.         return
  6161.         window_fill_end:
  6162.         
  6163.     end_object
  6164.  
  6165.     object scrollbar_strings is a character_popup_client
  6166.         procedure object_set_on
  6167.             if (already_created(current_object)) eq 0 gosub scrollbar_strings_begin
  6168.             set already_created to 1
  6169.             send request_reset_values
  6170.             send popup
  6171.         end_procedure
  6172.  
  6173.         goto scrollbar_strings_end
  6174.  
  6175.         scrollbar_strings_begin:
  6176.         object scrollbar_strings_title is an object_title ;
  6177.                 scrollbar_strings_title "Scroll Bar Appearance"
  6178.         end_object
  6179.  
  6180.         object scrollbar_strings_form is a restricted_character_form
  6181.             item_list
  6182.                 on_item "" send next
  6183.                 on_item "" send next
  6184.                 on_item "" send next
  6185.             end_item_list
  6186.  
  6187.             procedure reset_values
  6188.                 set value item 0 to (character(scrollbar_up))
  6189.                 set value item 1 to (character(scrollbar_bar))
  6190.                 set value item 2 to (character(scrollbar_down))
  6191.                 set changed_state to false
  6192.             end_procedure
  6193.  
  6194.             procedure set_values
  6195.                 local string achar
  6196.                 local integer state new_up new_bar new_down
  6197.  
  6198.                 get changed_state to state
  6199.                 get current_ascii item 0 to new_up
  6200.                 get current_ascii item 1 to new_bar
  6201.                 get current_ascii item 2 to new_down
  6202.  
  6203.                 if (bad_char(current_object,0) ;
  6204.                         or bad_char(current_object,1) ;
  6205.                         or bad_char(current_object,2)) send reset_values
  6206.                 else begin
  6207.                     move new_up to scrollbar_up
  6208.                     move new_bar to scrollbar_bar
  6209.                     move new_down to scrollbar_down
  6210.                 end
  6211.  
  6212.                 get changed_state to state
  6213.                 [not changes_made] indicate changes_made as state
  6214.             end_procedure
  6215.  
  6216.             send reset_values
  6217.         end_object
  6218.  
  6219.         object scrollbar_strings_button is a prompt_option_button
  6220.         end_object
  6221.         return
  6222.         scrollbar_strings_end:
  6223.     end_object
  6224.  
  6225.     object press_any_key is a popup_client
  6226.         procedure object_set_on
  6227.             if (already_created(current_object)) eq 0 gosub press_any_key_begin
  6228.             set already_created to 1
  6229.             send request_reset_values
  6230.             send popup
  6231.         end_procedure
  6232.  
  6233.         goto press_any_key_end
  6234.  
  6235.         press_any_key_begin:
  6236.         object press_any_key_title is an object_title press_any_key_title ;
  6237.                 "Page Ejection Prompt Appearance"
  6238.         end_object
  6239.  
  6240.         object press_any_key_form is a form
  6241.             item_list
  6242.                 autoclear_item "" send next
  6243.             end_item_list
  6244.  
  6245.             procedure reset_values
  6246.                 set value item 0 to press_any_key_string
  6247.                 set changed_state to false
  6248.             end_procedure
  6249.  
  6250.             procedure set_values
  6251.                 local integer state
  6252.  
  6253.                 get value item 0 to press_any_key_string
  6254.  
  6255.                 get changed_state to state
  6256.                 [not changes_made] indicate changes_made as state
  6257.             end_procedure
  6258.  
  6259.             send reset_values
  6260.         end_object
  6261.  
  6262.         object press_any_key_button is an option_button
  6263.         end_object
  6264.         return
  6265.         press_any_key_end:
  6266.     end_object
  6267.  
  6268.     object auto_return is a popup_client
  6269.         procedure object_set_on
  6270.             if (already_created(current_object)) eq 0 gosub auto_Return_begin
  6271.             set already_created to 1
  6272.             send request_reset_values
  6273.             send popup
  6274.         end_procedure
  6275.  
  6276.         goto auto_return_end
  6277.  
  6278.         auto_return_begin:
  6279.         object auto_return_title is an object_title auto_return_title ;
  6280.                 "Automatic Return On Full Field"
  6281.         end_object
  6282.  
  6283.         object auto_return_radio is a checkbox
  6284.             set select_mode to auto_select
  6285.             set auto_top_item_state to false
  6286.  
  6287.             item_list
  6288.                 on_item yes send next
  6289.                 on_item no send next
  6290.             end_item_list
  6291.  
  6292.             procedure mouse_up
  6293.             end_procedure
  6294.  
  6295.             procedure reset_values
  6296.                 set current_item to (1 - auto_return_option)
  6297.                 set select_state item current to true
  6298.                 set changed_state to false
  6299.             end_procedure
  6300.  
  6301.             procedure set_values
  6302.                 local integer option state
  6303.  
  6304.                 for option from 0 to 1
  6305.                     get select_state item option to state
  6306.                     if (state and (option = auto_return_option)) begin
  6307.                         move (1 - option) to auto_return_option
  6308.                         set changed_state to true
  6309.                     end
  6310.                 loop
  6311.  
  6312.                 get changed_state to state
  6313.                 [not changes_made] indicate changes_made as state
  6314.             end_procedure
  6315.  
  6316.             send reset_values
  6317.         end_object
  6318.  
  6319.         object auto_return_button is an option_button
  6320.         end_object
  6321.         return
  6322.         auto_return_end:
  6323.     end_object
  6324.  
  6325.     object scroll_increments is a popup_client
  6326.         format scroll_increments.2 {range=0,255,autoclear}
  6327.  
  6328.         procedure object_set_on
  6329.             if (already_created(current_object)) eq 0 gosub scroll_increments_begin
  6330.             set already_created to 1
  6331.             send request_reset_values
  6332.             send popup
  6333.         end_procedure
  6334.  
  6335.         goto scroll_increments_end
  6336.  
  6337.         scroll_increments_begin:
  6338.         object scroll_increments_title is an object_title ;
  6339.                 scroll_increments_title "Horizontal Scrolling"
  6340.         end_object
  6341.  
  6342.         object scroll_increments_form is a form
  6343.             item_list
  6344.                 autoclear_item "" send next
  6345.             end_item_list
  6346.  
  6347.             procedure reset_values
  6348.                 set value item 0 to scroll_increments_option
  6349.                 set changed_state to false
  6350.             end_procedure
  6351.  
  6352.             procedure set_values
  6353.                 local integer state
  6354.  
  6355.                 get value item 0 to scroll_increments_option
  6356.  
  6357.                 get changed_state to state
  6358.                 [not changes_made] indicate changes_made as state
  6359.             end_procedure
  6360.  
  6361.             send reset_values
  6362.         end_object
  6363.  
  6364.         object scroll_increments_button is an option_button
  6365.         end_object
  6366.         return
  6367.         scroll_increments_end:
  6368.     end_object
  6369.  
  6370.     object scrollbar_offset is a popup_client
  6371.         format scrollbar_offset.2 {range=0,255,autoclear}
  6372.  
  6373.         procedure object_set_on
  6374.             if (already_created(current_object)) eq 0 gosub scrollbar_offset_begin
  6375.             set already_created to 1
  6376.             send request_reset_values
  6377.             send popup
  6378.         end_procedure
  6379.  
  6380.         goto scrollbar_offset_end
  6381.  
  6382.         scrollbar_offset_begin:
  6383.         object scrollbar_offset_title is an object_title ;
  6384.                 scrollbar_offset_title "Scroll Bar Position"
  6385.         end_object
  6386.  
  6387.         object scrollbar_offset_form is a form
  6388.             item_list
  6389.                 autoclear_item "" send next
  6390.             end_item_list
  6391.  
  6392.             procedure reset_values
  6393.                 set value item 0 to scrollbar_offset_option
  6394.                 set changed_state to false
  6395.             end_procedure
  6396.  
  6397.             procedure set_values
  6398.                 local integer state
  6399.  
  6400.                 get value item 0 to scrollbar_offset_option
  6401.  
  6402.                 get changed_state to state
  6403.                 [not changes_made] indicate changes_made as state
  6404.             end_procedure
  6405.  
  6406.             send reset_values
  6407.         end_object
  6408.  
  6409.         object scrollbar_offset_button is an option_button
  6410.         end_object
  6411.         return
  6412.         scrollbar_offset_end:
  6413.     end_object
  6414.  
  6415.  
  6416. #IFDEF HAS_MOUSE
  6417.  
  6418.     object double_click is a popup_client
  6419.         set location to 1 9 relative
  6420.  
  6421.         procedure object_set_on
  6422.             if (already_created(current_object)) eq 0 gosub double_click_begin
  6423.             set already_created to 1
  6424.             send request_reset_values
  6425.             send popup
  6426.         end_procedure
  6427.  
  6428.         goto double_click_end
  6429.  
  6430.         double_click_begin:
  6431.         object double_click_title is an object_title double_click_title ;
  6432.                 "Mouse Double-Click Speed"
  6433.         end_object
  6434.  
  6435.         object double_click_meter is a slide_bar
  6436.             set maxpos to 8
  6437.             set trackbar to click_trackbar
  6438.  
  6439.             procedure set_values
  6440.                 local integer option state
  6441.  
  6442.                 get workpos to option
  6443.                 if ((10 - option) <> double_click_speed) begin
  6444.                     move (10 - option) to double_click_speed
  6445.                     set changed_state to true
  6446.                 end
  6447.  
  6448.                 get changed_state to state
  6449.                 [not changes_made] indicate changes_made as state
  6450.             end_procedure
  6451.  
  6452.             procedure reset_values
  6453.                 set workpos to (10 - double_click_speed)
  6454.                 set highlight_state to false
  6455.             end_procedure
  6456.  
  6457.             send reset_values
  6458.         end_object
  6459.  
  6460.         object double_click_test is a button
  6461.             indicator clicked
  6462.             indicate clicked false
  6463.  
  6464.             set select_mode to multi_select
  6465.  
  6466.             item_list
  6467.                 on_item "test button" send none
  6468.             end_item_list
  6469.  
  6470.             procedure mouse_down integer win integer char
  6471.                 [not clicked] send show_result 1
  6472.                 [clicked] send show_result 2
  6473.                 indicate clicked as [not clicked]
  6474.                 forward send mouse_down win char
  6475.             end_procedure
  6476.  
  6477.             procedure mouse_click integer win integer char
  6478.                 send show_result 3
  6479.                 indicate clicked false
  6480.                 forward send mouse_click win char
  6481.             end_procedure
  6482.  
  6483.             procedure cleanup
  6484.                 set select_state item 0 to false
  6485.                 send show_result 0
  6486.             end_procedure
  6487.  
  6488.             set exit_msg to cleanup
  6489.         end_object
  6490.  
  6491.         object double_click_result is a message
  6492.             set focus_mode to nonfocusable
  6493.  
  6494.             procedure show_result integer result
  6495.                 if result eq 0 send cleanup
  6496.                 else if result eq 1 begin
  6497.                     set value item 0 to "Click"
  6498.                     set value item 1 to ""
  6499.                 end
  6500.                 else begin
  6501.                     if result eq 2 set value item 1 to "Click"
  6502.                     else set value item 1 to "Double-click"
  6503.                     sleep 1
  6504.                     send cleanup
  6505.                 end
  6506.             end_procedure
  6507.  
  6508.             procedure cleanup
  6509.                 set value item 0 to ""
  6510.                 set value item 1 to ""
  6511.             end_procedure
  6512.  
  6513.             send cleanup
  6514.         end_object
  6515.  
  6516.         procedure show_result integer result
  6517.             send show_result to (double_click_result(current_object)) result
  6518.         end_procedure
  6519.  
  6520.         object double_click_button is an option_button
  6521.         end_object
  6522.         return
  6523.         double_click_end:
  6524.     end_object
  6525.  
  6526. #ENDIF      // HAS_MOUSE
  6527.  
  6528.  
  6529.     object page_control is a popup_client
  6530.         set location to 1 10 relative
  6531.  
  6532.         procedure object_set_on
  6533.             if (already_created(current_object)) eq 0 gosub page_control_begin
  6534.             set already_created to 1
  6535.             send request_reset_values
  6536.             send popup
  6537.         end_procedure
  6538.  
  6539.         goto page_control_end
  6540.  
  6541.         page_control_begin:
  6542.         object page_control_title is an object_title page_control_title ;
  6543.                 "Page Control"
  6544.         end_object
  6545.  
  6546.         object page_control_radio is a checkbox
  6547.             set select_mode to auto_select
  6548.             set auto_top_item_state to false
  6549.  
  6550.             item_list
  6551.                 on_item "Prompt the user for a keystroke" send next
  6552.                 on_item "Output a formfeed character" send next
  6553.                 on_item "Fill the space between pages with linefeed characters" ;
  6554.                         send next
  6555.             end_item_list
  6556.  
  6557.             procedure mouse_up
  6558.             end_procedure
  6559.  
  6560.             procedure reset_values
  6561.                 set current_item to formfeed_option
  6562.                 set select_state item current to true
  6563.                 set changed_state to false
  6564.             end_procedure
  6565.  
  6566.             procedure set_values
  6567.                 local integer option state
  6568.  
  6569.                 for option from 0 to 2
  6570.                     get select_state item option to state
  6571.                     if (state and (option <> formfeed_option)) begin
  6572.                         move option to formfeed_option
  6573.                         set changed_state to true
  6574.                     end
  6575.                 loop
  6576.  
  6577.                 get changed_state to state
  6578.                 [not changes_made] indicate changes_made as state
  6579.             end_procedure
  6580.  
  6581.             send reset_values
  6582.         end_object
  6583.  
  6584.         object page_control_form is an entry
  6585.             item_list
  6586.                 entry_item pagefeed_option {retain}
  6587.                 entry_item pageend_option  {retain}
  6588.             end_item_list
  6589.  
  6590.             procedure reset_values
  6591.                 send entry_display 0 true
  6592.                 set changed_state to false
  6593.             end_procedure
  6594.  
  6595.             procedure set_values
  6596.                 [not changes_made] indicate changes_made as ;
  6597.                         (changed_state(current_object)) 
  6598.                 send entry_update 0 true
  6599.             end_procedure
  6600.  
  6601.             function validate returns integer
  6602.                 local integer pg_feed pg_end
  6603.  
  6604.                 get value item 0 to pg_feed
  6605.                 get value item 1 to pg_end
  6606.                 if (pg_feed < pg_end) send show_em to not_done ;
  6607.                         "DataFlex cannot use more lines than" ;
  6608.                         "will fit on a page!  Please re-enter."
  6609.                 function_return (pg_feed < pg_end)
  6610.             end_function
  6611.  
  6612.             procedure exiting integer obj# returns integer
  6613.                 local integer retval
  6614.  
  6615.                 set_deferred 0
  6616.                 get validate to retval
  6617.                 set_deferred 1
  6618.                 if retval eq 0 forward get msg_exiting obj# to retval
  6619.                 procedure_return retval
  6620.             end_procedure
  6621.  
  6622.             send reset_values
  6623.         end_object
  6624.  
  6625.         object page_control_button is an option_button
  6626.         end_object
  6627.  
  6628.         return
  6629.         page_control_end:
  6630.         procedure request_set_values
  6631.             if (validate(page_control_form(current_object))) eq 0 ;
  6632.                     forward send request_set_values
  6633.         end_procedure
  6634.     end_object
  6635.  
  6636.  
  6637. #IFDEF HAS_SPOOLER
  6638.  
  6639.     object spooler_control is a popup_client
  6640.  
  6641.         set location to 1 7 relative
  6642.  
  6643.         procedure object_set_on
  6644.             if (already_created(current_object)) eq 0 gosub spooler_control_begin
  6645.             set already_created to 1
  6646.             send request_reset_values
  6647.             send popup
  6648.         end_procedure
  6649.  
  6650.         goto spooler_control_end
  6651.  
  6652.         spooler_control_begin:
  6653.         object spooler_control_title is an object_title spooler_control_title ;
  6654.                 "Spooler Configuration Strings"
  6655.         end_object
  6656.  
  6657.         object spooler_control_form is a form
  6658.             item_list
  6659.                 on_item "" send next
  6660.                 on_item "" send next
  6661.             end_item_list
  6662.  
  6663.             procedure reset_values
  6664.                 set value item 0 to spooler_dfprinter_string
  6665.                 set value item 1 to spooler_nodfprinter_string
  6666.                 set changed_state to false
  6667.             end_procedure
  6668.  
  6669.             procedure set_values
  6670.                 local integer state
  6671.  
  6672.                 get value item 0 to spooler_dfprinter_string
  6673.                 get value item 1 to spooler_nodfprinter_string
  6674.  
  6675.                 get changed_state to state
  6676.                 [not changes_made] indicate changes_made as state
  6677.             end_procedure
  6678.  
  6679.             send reset_values
  6680.         end_object
  6681.  
  6682.         object spooler_control_button is an option_button
  6683.         end_object
  6684.         return
  6685.         spooler_control_end:
  6686.     end_object
  6687.  
  6688. #ENDIF      // HAS_SPOOLER
  6689.  
  6690.  
  6691. #IFDEF HAS_POWER_FAIL
  6692.  
  6693.     object power_fail is a popup_client
  6694.         set location to 1 1 relative
  6695.  
  6696.         procedure object_set_on
  6697.             if (already_created(current_object)) eq 0 gosub power_fail_begin
  6698.             set already_created to 1
  6699.             send request_reset_values
  6700.             send popup
  6701.         end_procedure
  6702.  
  6703.         goto power_fail_end
  6704.  
  6705.         power_fail_begin:
  6706.         object power_fail_title is an object_title power_fail_title ;
  6707.                 "Power Fail Protection"
  6708.         end_object
  6709.  
  6710.         object power_fail_radio is a checkbox
  6711.             set select_mode to auto_select
  6712.             set auto_top_item_state to false
  6713.  
  6714.             item_list
  6715.                 on_item yes send next
  6716.                 on_item no send next
  6717.             end_item_list
  6718.  
  6719.             procedure mouse_up
  6720.             end_procedure
  6721.  
  6722.             procedure reset_values
  6723.                 set current_item to (1 - power_fail_option)
  6724.                 set select_state item current to true
  6725.                 set changed_state to false
  6726.             end_procedure
  6727.  
  6728.             procedure set_values
  6729.                 local integer option state
  6730.  
  6731.                 for option from 0 to 1
  6732.                     get select_state item option to state
  6733.                     if (state and (option = power_fail_option)) begin
  6734.                         move (1 - option) to power_fail_option
  6735.                         set changed_state to true
  6736.                     end
  6737.                 loop
  6738.  
  6739.                 get changed_state to state
  6740.                 [not changes_made] indicate changes_made as state
  6741.             end_procedure
  6742.  
  6743.             send reset_values
  6744.         end_object
  6745.  
  6746.         object power_fail_button is an option_button
  6747.         end_object
  6748.         return
  6749.         power_fail_end:
  6750.     end_object
  6751.  
  6752. #ENDIF  // HAS_POWER_FAIL
  6753.  
  6754.  
  6755.     function strip_path string path returns string
  6756.         local integer slash colon
  6757.         pos ':' in path to colon
  6758.         length path to slash
  6759.         while ((slash > colon) and (mid(path,1,slash) <> separator))
  6760.             decrement slash
  6761.         end
  6762.         mid path to path 12 (slash + 1)
  6763.         function_return path
  6764.     end_function
  6765.  
  6766.     function add_path string path string newdir returns string
  6767.         local integer slash colon
  6768.         if newdir eq ".." begin
  6769.             pos ':' in path to colon
  6770.             length path to slash
  6771.             while ((slash > colon) and (mid(path,1,slash) <> separator))
  6772.                 decrement slash
  6773.             end
  6774.             if (slash > colon) left path to path (slash - 1)
  6775.         end
  6776.         else begin
  6777.             if not (right(trim(path),1)) eq separator append path separator
  6778.             append path newdir
  6779.         end
  6780.         function_return path
  6781.     end_function
  6782.  
  6783.  
  6784. #IFDEF HAS_GRAPHICS
  6785.  
  6786.     object adapters is a driver_client adapters adapters_title.n ;
  6787.             "Graphics Screen Driver" adapters_file_list.n adapters_dir_list.n ;
  6788.             adapters_button.n
  6789.  
  6790.         procedure object_set_on
  6791.             send working "Reading,"
  6792.         
  6793.             if (already_created(current_object)) eq 0 gosub adapters_begin
  6794.             set already_created to 1
  6795.             send request_reset_values
  6796.             send popup
  6797.             send activate to (form_obj(current_object))
  6798.             send done
  6799.         end_procedure
  6800.  
  6801.        goto adapters_end
  6802.  
  6803.        adapters_begin:
  6804.         object form is a driver_form adapters_form
  6805.             item_list
  6806.                 autoclear_item "" send get_dirlist
  6807.                 autoclear_item "" send next
  6808.                 autoclear_item "" send next
  6809.             end_item_list
  6810.  
  6811.             procedure reset_form
  6812.                 set value item 0 to graphics_path
  6813.                 set value item 1 to graphics_driver
  6814.                 set value item 2 to graphics_mode
  6815.             end_procedure
  6816.  
  6817.             procedure reset_values
  6818.                 send reset_form
  6819.                 forward send reset_values
  6820.             end_procedure
  6821.  
  6822.             procedure set_values
  6823.                 local string stuff
  6824.  
  6825.                 if (value(current_object,0)) ne graphics_path begin
  6826.                     get fix_slashes (value(current_object,0)) to graphics_path
  6827.                     set changed_state to true
  6828.                 end
  6829.  
  6830.                 if (value(current_object,1)) ne graphics_driver begin
  6831.                     get value item 1 to graphics_driver
  6832.                     set changed_state to true
  6833.                 end
  6834.  
  6835.                 if (value(current_object,2)) ne graphics_mode begin
  6836.                     get value item 2 to graphics_mode
  6837.                     set changed_state to true
  6838.                 end
  6839.  
  6840.                 forward send set_values
  6841.             end_procedure
  6842.  
  6843.             function template_spec returns string
  6844.                 function_return graphics_template
  6845.             end_function
  6846.  
  6847.             send reset_form
  6848.         end_object
  6849.  
  6850.         set form_obj to (object_id(form(current_object)))
  6851.         return
  6852.         adapters_end:
  6853.     end_object
  6854.  
  6855.     object printers is a driver_client printers printers_title.n ;
  6856.             "Graphics Printer Driver" printers_file_list.n printers_dir_list.n ;
  6857.             printers_button.n
  6858.  
  6859.         procedure object_set_on
  6860.             send working "Reading,"
  6861.         
  6862.             if (already_created(current_object)) eq 0 gosub printers_begin
  6863.             set already_created to 1
  6864.             send request_reset_values
  6865.             send popup
  6866.             send activate to (form_obj(current_object))
  6867.  
  6868.             send done
  6869.         end_procedure
  6870.  
  6871.         goto printers_end
  6872.         printers_begin:
  6873.         
  6874.         object form is a driver_form printers_form
  6875.             item_list
  6876.                 autoclear_item "" send get_dirlist
  6877.                 autoclear_item "" send next
  6878.             end_item_list
  6879.  
  6880.             procedure reset_form
  6881.                 set value item 0 to printer_path
  6882.                 set value item 1 to printer_driver
  6883.             end_procedure
  6884.  
  6885.             procedure reset_values
  6886.                 send reset_form
  6887.                 forward send reset_values
  6888.             end_procedure
  6889.  
  6890.             procedure set_values
  6891.                 local string stuff
  6892.  
  6893.                 if (value(current_object,0)) ne printer_path begin
  6894.                     get fix_slashes (value(current_object,0)) to printer_path
  6895.                     set changed_state to true
  6896.                 end
  6897.  
  6898.                 if (value(current_object,1)) ne printer_driver begin
  6899.                     get value item 1 to printer_driver
  6900.                     set changed_state to true
  6901.                 end
  6902.  
  6903.                 forward send set_values
  6904.             end_procedure
  6905.  
  6906.             function template_spec returns string
  6907.                 function_return printer_template
  6908.             end_function
  6909.  
  6910.             send reset_form
  6911.         end_object
  6912.  
  6913.         set form_obj to (object_id(form(current_object)))
  6914.         return
  6915.         printers_end:
  6916.     end_object
  6917.  
  6918. #ENDIF  // HAS_GRAPHICS
  6919.  
  6920.  
  6921.     object translate is a popup_client
  6922.         set location to 0 1 relative
  6923.         register_function changes returns integer
  6924.  
  6925.         procedure object_set_on
  6926.             move 1 to crnt_char
  6927.             move crnt_char to old_char
  6928.             if (already_created(current_object)) eq 0 gosub translate_begin
  6929.             set already_created to 1
  6930.             send request_reset_values
  6931.             send popup
  6932.         end_procedure
  6933.  
  6934.         goto translate_end
  6935.  
  6936.         translate_begin:
  6937.         object translate_title is an object_title translate_title ;
  6938.                 "Character Translation"
  6939.         end_object
  6940.  
  6941.         object translate_pick is a vconsole
  6942.             set focus_mode to pointer_only
  6943.             set location to 4 3 relative
  6944.             set size to 16 33
  6945.             set display_mode to 16 false
  6946.  
  6947.             send move_absolute 0 0
  6948.             for windowindex from 0 to 15
  6949.                 move " " to aline
  6950.                 for fieldindex from 0 to 15
  6951.                     move ((windowindex * 16) + fieldindex) to termchar
  6952.                     if termchar append aline (character(termchar))
  6953.                     else append aline ' '
  6954.                     append aline ' '
  6955.                 loop
  6956.                 set value item windowindex to aline
  6957.             loop
  6958.  
  6959.             procedure hilite integer item# integer color#
  6960.                 local integer row# col#
  6961.             
  6962.                 move (item# / 16) to row#
  6963.                 move ((item# iand $0F) * 2) to col#
  6964.  
  6965.                 screenmode color#
  6966.                 send color_block ((row# * 65536) + col#) 65539
  6967.                 screenmode 1
  6968.             end_procedure
  6969.  
  6970.             procedure mouse_down integer row integer col
  6971.                 forward send mouse_down row col
  6972.                 if (col iand $1) ;
  6973.                         send char_change ((row - 1) * 16 + (col / 2))
  6974.             end_procedure
  6975.         end_object
  6976.  
  6977.         object translate_select is a hex_entry
  6978.             on_key key_f7 send prev_char private
  6979.             on_key key_f8 send next_char private
  6980.             on_key key_up_arrow send prev_row private
  6981.             on_key key_down_arrow send next_row private
  6982.  
  6983.             function hex_ok returns integer
  6984.                 local integer retval
  6985.  
  6986.                 forward get hex_ok to retval
  6987.                 if retval eq 0 begin
  6988.                     get hex_value item 0 to retval
  6989.                     move (retval = 0) to retval
  6990.                 end
  6991.                 function_return retval
  6992.             end_function
  6993.  
  6994.             item_list
  6995.                 hex_item crnt_hex {capslock, ;
  6996.                         ientry=msg_allow_navigate, ;
  6997.                         iexit=msg_disallow_navigate}
  6998.             end_item_list
  6999.  
  7000.             function check_exit integer new_char returns integer
  7001.                 local integer retval
  7002.  
  7003.                 if new_char ne crnt_char begin
  7004.                     if (changes(current_object)) begin
  7005.                         get tell_em of not_saved "continuing?" to retval
  7006.  
  7007.                         if retval eq msg_ok send request_set_values
  7008.                         else if retval eq msg_cancel begin
  7009.                             set hex_value item 0 to crnt_char
  7010.                             send request_reset_values
  7011.                             function_return msg_cancel
  7012.                         end
  7013.                     end
  7014.  
  7015.                     move new_char to crnt_char
  7016.                     send request_reset_values
  7017.                 end
  7018.                 function_return msg_ok
  7019.             end_function
  7020.  
  7021.             procedure exiting integer obj# returns integer
  7022.                 local integer retval
  7023.  
  7024.                 set_deferred 0
  7025.                 get check_exit (hex_value(current_object,0)) to retval
  7026.                 set_deferred 1
  7027.                 if retval eq msg_ok ;
  7028.                         forward get msg_exiting obj# to retval
  7029.                 procedure_return retval
  7030.             end_procedure
  7031.  
  7032.             procedure char_change integer new_char
  7033.                 move (new_char iand $FF) to new_char
  7034.                 if (new_char and check_exit(current_object,new_char)) ;
  7035.                         eq msg_ok begin
  7036.                     move new_char to crnt_char
  7037.                     send request_reset_values
  7038.                 end
  7039.             end_procedure
  7040.  
  7041.             procedure prev_char
  7042.                 send char_change (crnt_char - 1)
  7043.             end_procedure
  7044.  
  7045.             procedure next_char
  7046.                 send char_change (crnt_char + 1)
  7047.             end_procedure
  7048.  
  7049.             procedure prev_row
  7050.                 send char_change (crnt_char - 16)
  7051.             end_procedure
  7052.  
  7053.             procedure next_row
  7054.                 send char_change (crnt_char + 16)
  7055.             end_procedure
  7056.  
  7057.             procedure reset_values
  7058.                 send hilite to (translate_pick(current_object)) ;
  7059.                         old_char hidecol
  7060.                 send hilite to (translate_pick(current_object)) ;
  7061.                         crnt_char pointcol
  7062.                 move crnt_char to old_char
  7063.                 send entry_display 0 true
  7064.                 set changed_state to false
  7065.             end_procedure
  7066.  
  7067.             procedure mouse_up
  7068.             end_procedure
  7069.         end_object
  7070.  
  7071.         object translate_remap is a hex_entry
  7072.             item_list
  7073.  
  7074. #IFDEF HAS_TRANSLATION
  7075.                 hex_item crnt_map {capslock, iexit=msg_map2key}
  7076. #ENDIF  // HAS_TRANSLATION
  7077.  
  7078.                 entry_item crnt_seq {displayonly}
  7079.             end_item_list
  7080.  
  7081.             procedure map2key
  7082.                 local integer val
  7083.                 
  7084.                 get hex_value item 0 to val
  7085.                 set value item 1 ;
  7086.                         to (map_sequence(desktop,key_physical(val),0))
  7087.             end_procedure
  7088.  
  7089.             procedure set_values
  7090.                 local integer newval
  7091.  
  7092.                 send entry_update 0 true
  7093.  
  7094.                 get hex2dec of desktop crnt_map to newval
  7095.                 if newval ne (remap_value(key_map.obj,crnt_char)) begin
  7096.                     set remap_value of key_map item crnt_char to newval
  7097.                     indicate changes_made true
  7098.                 end
  7099.             end_procedure
  7100.  
  7101.             procedure reset_values
  7102.                 local integer val
  7103.  
  7104.                 get remap_value of key_map crnt_char to val
  7105.                 get dec2hex of desktop val to crnt_map
  7106.                 get map_sequence of desktop (key_physical(val)) 0 to crnt_seq
  7107.                 send entry_display 0 true
  7108.                 set changed_state to false
  7109.             end_procedure
  7110.  
  7111.             procedure char_change integer new_char
  7112.                 set hex_value item 0 to new_char
  7113.                 set item_changed_state item 0 to true
  7114.             end_procedure
  7115.  
  7116.             procedure mouse_up
  7117.             end_procedure
  7118.         end_object
  7119.  
  7120.         object translate_chars is a hex_entry
  7121.             item_list
  7122.                 hex_item locase {capslock}
  7123.                 hex_item upcase {capslock}
  7124.             end_item_list
  7125.  
  7126.             procedure set_values
  7127.                 local integer newval
  7128.  
  7129.                 send entry_update 0 true
  7130.  
  7131.                 get hex2dec of desktop locase to newval
  7132.                 if newval ne (locase_value(key_map.obj,crnt_char)) begin
  7133.                     set locase_value of key_map item crnt_char to newval
  7134.                     indicate changes_made true
  7135.                 end
  7136.  
  7137.                 get hex2dec of desktop upcase to newval
  7138.                 if newval ne (upcase_value(key_map.obj,crnt_char)) begin
  7139.                     set upcase_value of key_map item crnt_char to newval
  7140.                     indicate changes_made true
  7141.                 end
  7142.             end_procedure
  7143.  
  7144.             procedure reset_values
  7145.                 local integer val
  7146.  
  7147.                 get locase_value of key_map crnt_char to val
  7148.                 get dec2hex of desktop val to locase
  7149.                 get upcase_value of key_map crnt_char to val
  7150.                 get dec2hex of desktop val to upcase
  7151.                 send entry_display 0 true
  7152.                 set changed_state to false
  7153.             end_procedure
  7154.  
  7155.             procedure char_change integer new_char
  7156.                 set hex_value item current to new_char
  7157.                 set item_changed_state item current to true
  7158.             end_procedure
  7159.  
  7160.             procedure mouse_up
  7161.             end_procedure
  7162.         end_object
  7163.  
  7164.         object translate_alpha_check is a check_entry
  7165.             item_list
  7166.                 checkbox_item isalpha
  7167.                 checkbox_item islower
  7168.                 checkbox_item isupper
  7169.             end_item_list
  7170.  
  7171.             procedure set_values
  7172.                 local integer oldval newval
  7173.  
  7174.                 send entry_update 0 true
  7175.  
  7176.                 get attrib_value of key_map item crnt_char to oldval
  7177.                 move oldval to newval
  7178.  
  7179.                 get bit_twiddle of desktop newval ($02) isalpha to newval
  7180.                 get bit_twiddle of desktop newval ($08) islower to newval
  7181.                 get bit_twiddle of desktop newval ($40) isupper to newval
  7182.  
  7183.                 if newval ne oldval begin
  7184.                     set attrib_value of key_map item crnt_char to newval
  7185.                     indicate changes_made true
  7186.                 end
  7187.             end_procedure
  7188.  
  7189.             procedure reset_values
  7190.                 local integer val
  7191.  
  7192.                 get attrib_value of key_map item crnt_char to val
  7193.                 move ((val iand $02) = $02) to isalpha
  7194.                 move ((val iand $08) = $08) to islower
  7195.                 move ((val iand $40) = $40) to isupper
  7196.                 send entry_display 0 true
  7197.                 set changed_state to false
  7198.             end_procedure
  7199.  
  7200.             procedure char_change
  7201.             end_procedure
  7202.         end_object
  7203.  
  7204.         object translate_print_check is a check_entry
  7205.             item_list
  7206.                 checkbox_item isprint
  7207.                 checkbox_item ispunct
  7208.                 checkbox_item isspace
  7209.             end_item_list
  7210.  
  7211.             procedure set_values
  7212.                 local integer oldval newval
  7213.  
  7214.                 send entry_update 0 true
  7215.  
  7216.                 get attrib_value of key_map item crnt_char to oldval
  7217.                 move oldval to newval
  7218.  
  7219.                 get bit_twiddle of desktop newval ($01) isprint to newval
  7220.                 get bit_twiddle of desktop newval ($10) ispunct to newval
  7221.                 get bit_twiddle of desktop newval ($20) isspace to newval
  7222.  
  7223.                 if newval ne oldval begin
  7224.                     set attrib_value of key_map item crnt_char to newval
  7225.                     indicate changes_made true
  7226.                 end
  7227.             end_procedure
  7228.  
  7229.             procedure reset_values
  7230.                 local integer val
  7231.  
  7232.                 get attrib_value of key_map item crnt_char to val
  7233.                 move ((val iand $01) = $01) to isprint
  7234.                 move ((val iand $10) = $10) to ispunct
  7235.                 move ((val iand $20) = $20) to isspace
  7236.                 send entry_display 0 true
  7237.                 set changed_state to false
  7238.             end_procedure
  7239.  
  7240.             procedure char_change
  7241.             end_procedure
  7242.         end_object
  7243.  
  7244.         object translate_symbol_check is a check_entry
  7245.             item_list
  7246.                 checkbox_item issymbol
  7247.                 checkbox_item isname
  7248.                 checkbox_item isfirst
  7249.             end_item_list
  7250.  
  7251.             procedure set_values
  7252.                 local integer oldval newval
  7253.  
  7254.                 send entry_update 0 true
  7255.  
  7256.                 get attrib_value of key_map item crnt_char to oldval
  7257.                 move oldval to newval
  7258.  
  7259.                 get bit_twiddle of desktop newval ($100) issymbol to newval
  7260.                 get bit_twiddle of desktop newval ($200) isname to newval
  7261.                 get bit_twiddle of desktop newval ($400) isfirst to newval
  7262.  
  7263.                 if newval ne oldval begin
  7264.                     set attrib_value of key_map item crnt_char to newval
  7265.                     indicate changes_made true
  7266.                 end
  7267.             end_procedure
  7268.  
  7269.             procedure reset_values
  7270.                 local integer val
  7271.  
  7272.                 get attrib_value of key_map item crnt_char to val
  7273.                 move ((val iand $100) = $100) to issymbol
  7274.                 move ((val iand $200) = $200) to isname
  7275.                 move ((val iand $400) = $400) to isfirst
  7276.                 send entry_display 0 true
  7277.                 set changed_state to false
  7278.             end_procedure
  7279.  
  7280.             procedure char_change
  7281.             end_procedure
  7282.         end_object
  7283.  
  7284.         object translate_button is a button
  7285.             set focus_mode to pointer_only
  7286.  
  7287.             item_list
  7288.                 on_item "F7=Prev Char" send prev_char ;
  7289.                         to (translate_select(current_object))
  7290.                 set shadow_state to true
  7291.                 on_item "F8=Next Char" send next_char ;
  7292.                         to (translate_select(current_object))
  7293.                 set shadow_state to true
  7294.                 on_item "Up Arrow=Prev Row" send prev_row ;
  7295.                         to (translate_select(current_object))
  7296.                 set shadow_state to true
  7297.                 on_item "Dn Arrow=Next Row" send next_row ;
  7298.                         to (translate_select(current_object))
  7299.                 set shadow_state to true
  7300.                 on_item okkey send request_set_values
  7301.                 on_item resetkey send request_reset_values
  7302.                 on_item cancelkey send object_set_off
  7303.                 on_item helpkey send extended_help
  7304.             end_item_list
  7305.  
  7306.             procedure shadow_navigate integer state
  7307.                 set shadow_state item 0 to state
  7308.                 set shadow_state item 1 to state
  7309.                 set shadow_state item 2 to state
  7310.                 set shadow_state item 3 to state
  7311.             end_procedure
  7312.  
  7313.             procedure char_change
  7314.             end_procedure
  7315.         end_object
  7316.         return
  7317.         translate_end:
  7318.         procedure char_change integer new_char
  7319.             send char_change to (focus(desktop)) new_char
  7320.         end_procedure
  7321.  
  7322.         procedure allow_navigate
  7323.             send shadow_navigate to (translate_button(current_object)) false
  7324.         end_procedure
  7325.  
  7326.         procedure disallow_navigate
  7327.             send shadow_navigate to (translate_button(current_object)) true
  7328.         end_procedure
  7329.  
  7330.         function changes returns integer
  7331.             local integer retval
  7332.  
  7333.             get changed_state of ;
  7334.                     (translate_remap(current_object)) to retval
  7335.             if not retval get changed_state of ;
  7336.                     (translate_chars(current_object)) to retval
  7337.             if not retval get changed_state of ;
  7338.                     (translate_alpha_check(current_object)) to retval
  7339.             if not retval get changed_state of ;
  7340.                     (translate_print_check(current_object)) to retval
  7341.             if not retval get changed_state of ;
  7342.                     (translate_symbol_check(current_object)) to retval
  7343.  
  7344.             function_return retval
  7345.         end_function
  7346.  
  7347.         procedure object_set_off
  7348.             send hilite to (translate_pick(current_object)) old_char hidecol
  7349.             forward send object_set_off
  7350.         end_procedure
  7351.  
  7352.         procedure request_reset_values
  7353.             get dec2hex of desktop crnt_char to crnt_hex
  7354.             broadcast send reset_values
  7355.         end_procedure
  7356.  
  7357.         procedure request_set_values
  7358.             broadcast send set_values
  7359.             [changes_made] send show_status to main_object
  7360.             broadcast set changed_state to false
  7361.             send activate to (translate_select(current_object))
  7362.         end_procedure
  7363.     end_object
  7364.  
  7365.  
  7366. #IFDEF HAS_CRITICAL_ERROR
  7367.  
  7368.     object crit_error is a popup_client
  7369.         set location to 4 2 relative
  7370.         procedure object_set_on
  7371.             if (already_created(current_object)) eq 0 gosub crit_error_begin
  7372.             set already_created to 1
  7373.             send request_reset_values
  7374.             send popup
  7375.         end_procedure
  7376.  
  7377.         goto crit_error_end
  7378.         crit_error_begin:
  7379.  
  7380.         object crit_error_title is an object_title crit_error_title ;
  7381.                 "Critical Error Handling"
  7382.         end_object
  7383.  
  7384.         object crit_error_user_allowed is a check_entry
  7385.             item_list
  7386.                 checkbox_item canrespond
  7387.             end_item_list
  7388.  
  7389.             procedure set select_state integer item# integer state
  7390.                 forward set select_state item item# state
  7391.                 send reset_shadows
  7392.             end_procedure
  7393.  
  7394.             procedure set_values
  7395.                 send entry_update 0 true
  7396.                 if (changed_state(current_object)) indicate changes_made true
  7397.             end_procedure
  7398.  
  7399.             procedure reset_values
  7400.                 send entry_display 0 true
  7401.                 set changed_state to false
  7402.             end_procedure
  7403.  
  7404.             procedure reset_shadows
  7405.                 delegate send shadow_options (not(select_state(current_object,0)))
  7406.             end_procedure
  7407.         end_object
  7408.  
  7409.         object crit_error_options is a check_entry
  7410.             on_key key_enter send next private
  7411.  
  7412.             item_list
  7413.                 checkbox_item canabort
  7414.                 checkbox_item canretry
  7415.                 checkbox_item canfail
  7416.             end_item_list
  7417.  
  7418.             procedure set_values
  7419.                 send entry_update 0 true
  7420.                 if (changed_state(current_object)) indicate changes_made true
  7421.             end_procedure
  7422.  
  7423.             procedure reset_values
  7424.                 send entry_display 0 true
  7425.                 set changed_state to false
  7426.             end_procedure
  7427.  
  7428.             procedure shadow_items integer state
  7429.                 set shadow_state item 0 to state
  7430.                 set shadow_state item 1 to state
  7431.                 set shadow_state item 2 to state
  7432.             end_procedure
  7433.         end_object
  7434.  
  7435.         object crit_error_timeout is an entry
  7436.             item_list
  7437.                 entry_item criterr_timeout { range=0,99 } // 0 = no prompt display
  7438.             end_item_list
  7439.  
  7440.             procedure set_values
  7441.                 send entry_update 0 true
  7442.                 if (changed_state(current_object)) indicate changes_made true
  7443.             end_procedure
  7444.  
  7445.             procedure reset_values
  7446.                 send entry_display 0 true
  7447.                 set changed_state to false
  7448.             end_procedure
  7449.         end_object
  7450.  
  7451.         object crit_error_default1 is a checkbox
  7452.             set select_mode to auto_select
  7453.             set auto_top_item_state to false
  7454.  
  7455.             item_list
  7456.                 on_item "" send next
  7457.                 on_item "" send next
  7458.                 on_item "" send next
  7459.             end_item_list
  7460.  
  7461.             procedure mouse_up
  7462.             end_procedure
  7463.  
  7464.             procedure set select_state integer item# integer state
  7465.                 forward set select_state item item# state
  7466.                 send reset_shadows
  7467.             end_procedure
  7468.  
  7469.             procedure reset_values
  7470.                 if criterr_default1 eq CRITERR_ABORT_FLAG set current_item to 0
  7471.                 else if criterr_default1 eq CRITERR_RETRY_FLAG set current_item to 1
  7472.                 else if criterr_default1 eq CRITERR_FAIL_FLAG set current_item to 2
  7473.  
  7474.                 set select_state item current to true
  7475.                 set changed_state to false
  7476.             end_procedure
  7477.  
  7478.             procedure reset_shadows
  7479.                 delegate send shadow_not_retry (not(select_state(current_object,1)))
  7480.             end_procedure
  7481.  
  7482.             procedure set_values
  7483.                 local integer option state new_dflt1
  7484.  
  7485.                 for option from 0 to 2
  7486.                     get select_state item option to state
  7487.  
  7488.                     if state begin
  7489.                         if option eq 0 move CRITERR_ABORT_FLAG to new_dflt1
  7490.                         else if option eq 1 move CRITERR_RETRY_FLAG to new_dflt1
  7491.                         else if option eq 2 move CRITERR_FAIL_FLAG to new_dflt1
  7492.                         if new_dflt1 ne option begin
  7493.                             move new_dflt1 to criterr_default1
  7494.                             set changed_state to true
  7495.                         end
  7496.                     end
  7497.                 loop
  7498.  
  7499.                 get changed_state to state
  7500.                 [not changes_made] indicate changes_made as state
  7501.             end_procedure
  7502.  
  7503.             function default_is_retry returns integer
  7504.                 function_return (select_state(current_object,1))
  7505.             end_function
  7506.         end_object
  7507.  
  7508.         object crit_error_retries is an entry
  7509.             on_key key_enter send next private
  7510.  
  7511.             item_list
  7512.                 entry_item criterr_retries { ivalidate=msg_reset_shadows, range=0,99 }
  7513.             end_item_list
  7514.  
  7515.             procedure check_for_0 integer item_num returns integer
  7516.                 send shadow_retry_fail (not(value(current_object,0)))
  7517.             end_procedure
  7518.  
  7519.             procedure set_values
  7520.                 send entry_update 0 true
  7521.                 if (changed_state(current_object)) indicate changes_made true
  7522.             end_procedure
  7523.  
  7524.             procedure reset_values
  7525.                 send entry_display 0 true
  7526.                 set changed_state to false
  7527.             end_procedure
  7528.  
  7529.             procedure reset_shadows
  7530.                 delegate send shadow_retry_fail (not(value(current_object,0)))
  7531.             end_procedure
  7532.  
  7533.             procedure shadow_items integer state
  7534.                 set shadow_state item 0 to state
  7535.             end_procedure
  7536.  
  7537.             function zero_retries returns integer
  7538.                 function_return (value(current_object,0) = 0)
  7539.             end_function
  7540.         end_object
  7541.  
  7542.         object crit_error_default2 is a checkbox
  7543.             set select_mode to auto_select
  7544.             set auto_top_item_state to false
  7545.  
  7546.             on_key key_enter send next private
  7547.  
  7548.             item_list
  7549.                 on_item "" send next
  7550.                 on_item "" send next
  7551.             end_item_list
  7552.  
  7553.             procedure mouse_up
  7554.             end_procedure
  7555.  
  7556.             procedure reset_values
  7557.                 if criterr_default2 eq CRITERR_ABORT_FLAG set current_item to 0
  7558.                 else if criterr_default2 eq CRITERR_FAIL_FLAG set current_item to 1
  7559.                 set select_state item current to true
  7560.                 set changed_state to false
  7561.             end_procedure
  7562.  
  7563.             procedure set_values
  7564.                 local integer option state new_dflt2
  7565.  
  7566.                 for option from 0 to 1
  7567.                     get select_state item option to state
  7568.  
  7569.                     if state begin
  7570.                         if option eq 0 move CRITERR_ABORT_FLAG to new_dflt2
  7571.                         else if option eq 1 move CRITERR_FAIL_FLAG to new_dflt2
  7572.                         if new_dflt2 ne option begin
  7573.                             move new_dflt2 to criterr_default2
  7574.                             set changed_state to true
  7575.                         end
  7576.                     end
  7577.                 loop
  7578.  
  7579.                 get changed_state to state
  7580.                 [not changes_made] indicate changes_made as state
  7581.             end_procedure
  7582.  
  7583.             procedure shadow_items integer state
  7584.                 set shadow_state item 0 to state
  7585.                 set shadow_state item 1 to state
  7586.             end_procedure
  7587.         end_object
  7588.  
  7589.         object crit_error_button is an option_button
  7590.         end_object
  7591.  
  7592.         return
  7593.         crit_error_end:
  7594.  
  7595.         procedure shadow_options integer state
  7596.             send shadow_items to (crit_error_options(current_object)) state
  7597.         end_procedure
  7598.  
  7599.         procedure shadow_not_retry integer state
  7600.             send shadow_items to (crit_error_retries(current_object)) state
  7601.             send shadow_items to (crit_error_default2(current_object)) ;
  7602.                     (zero_retries(crit_error_retries(current_object)) or state)
  7603.         end_procedure
  7604.  
  7605.         procedure shadow_retry_fail integer state
  7606.             send shadow_items to (crit_error_default2(current_object)) ;
  7607.                     (not(default_is_retry(crit_error_default1(current_object)));
  7608.                     or state)
  7609.         end_procedure
  7610.  
  7611.         procedure request_reset_values
  7612.             forward send request_reset_values
  7613.             broadcast send reset_shadows
  7614.         end_procedure
  7615.     end_object
  7616.  
  7617.     object crit_text is a popup_client
  7618.         set location to 1 1 relative
  7619.  
  7620.         on_key key_alt+key_f1 send do_diagnostics
  7621.  
  7622.         procedure object_set_on
  7623.             if (already_created(current_object)) eq 0 gosub crit_text_begin
  7624.             set already_created to 1
  7625.             forward send object_set_on
  7626.         end_procedure
  7627.  
  7628.         goto crit_text_end
  7629.         crit_text_begin:
  7630.  
  7631.         object crit_text_title is an object_title crit_text_title ;
  7632.                 "Critical Error Text Translation"
  7633.         end_object
  7634.  
  7635.         object crit_text_format is an object_title crit_text_format ""
  7636.             set center_state item 0 to false
  7637.  
  7638.             procedure reset_values
  7639.                 set value item 0 to (phrase_1 + " " + phrase_2 + " @|" + ;
  7640.                         phrase_3 + ":  Diagnostic  " + option_1 + " " + ;
  7641.                         option_2 + " " + option_3 + ":")
  7642.             end_procedure
  7643.  
  7644.             procedure set_values
  7645.                 local string txt
  7646.  
  7647.                 delegate get message_format to txt
  7648.                 set value item 0 to txt
  7649.             end_procedure
  7650.         end_object
  7651.  
  7652.         object crit_text_phrases is an entry
  7653.             register_procedure redisplay_format returns integer
  7654.  
  7655.             item_list
  7656.                 entry_item phrase_1 { required, iexit=msg_redisplay_format }
  7657.                 entry_item phrase_2 { required, iexit=msg_redisplay_format }
  7658.                 entry_item phrase_3 { required, iexit=msg_redisplay_format }
  7659.             end_item_list
  7660.  
  7661.             procedure set_values
  7662.                 send entry_update 0 true
  7663.                 if (changed_state(current_object)) indicate changes_made true
  7664.             end_procedure
  7665.  
  7666.             procedure reset_values
  7667.                 send entry_display 0 true
  7668.                 set changed_state to false
  7669.             end_procedure
  7670.  
  7671.             
  7672.             procedure redisplay_format returns integer
  7673.                 if (item_changed_state(current_object,current)) ;
  7674.                         delegate send redisplay_msg_format
  7675.             end_procedure
  7676.         end_object
  7677.  
  7678.         object crit_text_options is an entry
  7679.             register_function check_reply_1 returns integer
  7680.             register_function check_reply_2 returns integer
  7681.             register_function check_reply_3 returns integer
  7682.             register_procedure redisplay_format returns integer
  7683.  
  7684.             item_list
  7685.                 entry_item option_1 { required, iexit=msg_redisplay_format }
  7686.                 entry_item reply_1  { capslock, ivalidate=get_check_reply_1 }
  7687.                 entry_item option_2 { required, iexit=msg_redisplay_format }
  7688.                 entry_item reply_2  { capslock, ivalidate=get_check_reply_2 }
  7689.                 entry_item option_3 { required, iexit=msg_redisplay_format }
  7690.                 entry_item reply_3  { capslock, ivalidate=get_check_reply_3 }
  7691.             end_item_list
  7692.  
  7693.             function check_this integer this returns integer
  7694.                 local string reply other
  7695.                 local integer index len retval
  7696.                 
  7697.                 uppercase (value(current_object,(this * 2 + 1))) to reply
  7698.                 length reply to len
  7699.  
  7700.                 for index from 1 to len
  7701.                     move ((mid(reply,1,index) < 'A') ;
  7702.                             or (mid(reply,1,index) > 'Z')) to retval
  7703.                     if retval move ((mid(reply,1,index) < '0') ;
  7704.                             or (mid(reply,1,index) > '9')) to retval
  7705.                 until retval
  7706.  
  7707.                 if not retval begin
  7708.                     for index from 0 to 2
  7709.                         if index ne this begin
  7710.                             uppercase (value(current_object,(index * 2 + 1))) to other
  7711.                             move (reply = other) to retval
  7712.                         end
  7713.                     until retval ne 0
  7714.                 end
  7715.  
  7716.                 if retval error 15 
  7717.                 // invalid entry; either outside [A-Z0-9],
  7718.                 // or same as another reply
  7719.  
  7720.                 function_return retval
  7721.             end_function
  7722.  
  7723.             function check_reply_1 returns integer
  7724.                 function_return (check_this(current_object,0))
  7725.             end_function
  7726.  
  7727.             function check_reply_2 returns integer
  7728.                 function_return (check_this(current_object,1))
  7729.             end_function
  7730.  
  7731.             function check_reply_3 returns integer
  7732.                 function_return (check_this(current_object,2))
  7733.             end_function
  7734.  
  7735.             procedure set_values
  7736.                 send entry_update 0 true
  7737.                 if (changed_state(current_object)) indicate changes_made true
  7738.             end_procedure
  7739.  
  7740.             procedure reset_values
  7741.                 send entry_display 0 true
  7742.                 set changed_state to false
  7743.             end_procedure
  7744.  
  7745.             procedure redisplay_format returns integer
  7746.                 if (item_changed_state(current_object,current)) ;
  7747.                         delegate send redisplay_msg_format
  7748.             end_procedure
  7749.         end_object
  7750.  
  7751.         object crit_diags is a popup_client
  7752.             set location to 1 4 relative
  7753.             set popup_state to true
  7754.             set block_mouse_state true
  7755.  
  7756.             object crit_diags_title is an object_title crit_diags_title ;
  7757.                     "Critical Error Diagnostics"
  7758.             end_object
  7759.  
  7760.             object crit_diags_list is a sellist
  7761.                 set local_rotate_state to true
  7762.                 set search_mode to no_search
  7763.                 set select_mode to no_select
  7764.  
  7765.                 on_key key_enter send next private
  7766.  
  7767.                 procedure reset_values
  7768.                     local integer dyn_state
  7769.                     local string txt
  7770.  
  7771.                     get dynamic_update_state to dyn_state
  7772.                     set dynamic_update_state to false
  7773.                     
  7774.                     if (focus(desktop)) ne current_object begin
  7775.                         for windowindex from criterr_first_diagnostic to ;
  7776.                                 criterr_last_diagnostic
  7777.                             send add_item msg_next ;
  7778.                                     (windowindex - criterr_first_diagnostic + 1)
  7779.                             set shadow_state item ;
  7780.                                     (item_count(current_object) - 1) to true
  7781.  
  7782.                             get string_value of crit_error_originals item ;
  7783.                                     (windowindex - criterr_first_diagnostic) ;
  7784.                                     to txt
  7785.                             send add_item msg_next txt
  7786.                             set shadow_state item ;
  7787.                                     (item_count(current_object) - 1) to true
  7788.  
  7789.                             get string_value of crit_error_diagnostics item ;
  7790.                                     (windowindex - criterr_first_diagnostic) ;
  7791.                                     to txt
  7792.                            
  7793.                             send add_item msg_next txt
  7794.                             set entry_state item ;
  7795.                                     (item_count(current_object) - 1) to true
  7796.                         loop
  7797.                     end
  7798.                     else begin
  7799.                         send delete_data
  7800.  
  7801.                         for windowindex from criterr_first_diagnostic to ;
  7802.                                 criterr_last_diagnostic
  7803.                             send add_item msg_next ;
  7804.                                     (windowindex - criterr_first_diagnostic + 1)
  7805.                             set shadow_state item ;
  7806.                                     (item_count(current_object) - 1) to true
  7807.  
  7808.                             get string_value of crit_error_originals item ;
  7809.                                     (windowindex - criterr_first_diagnostic) ;
  7810.                                     to txt
  7811.                             send add_item msg_next txt
  7812.                             set shadow_state item ;
  7813.                                     (item_count(current_object) - 1) to true
  7814.  
  7815.                             set value of crit_error_diagnostics item ;
  7816.                                     (windowindex - criterr_first_diagnostic) ;
  7817.                                     to txt
  7818.                            
  7819.                             send add_item msg_next txt
  7820.                             set entry_state item ;
  7821.                                     (item_count(current_object) - 1) to true
  7822.                         loop
  7823.                     end
  7824.  
  7825.                     set changed_state false
  7826.                     set dynamic_update_state to dyn_state
  7827.                 end_procedure
  7828.                 
  7829.                 procedure process_selection integer item#
  7830.                 end_procedure
  7831.  
  7832.                 procedure set_values
  7833.                     local string newtxt oldtxt
  7834.  
  7835.                     for windowindex from criterr_first_diagnostic to ;
  7836.                             criterr_last_diagnostic
  7837.                         get value item ;
  7838.                            (((windowindex - criterr_first_diagnostic) * 3) + 2);
  7839.                                 to newtxt
  7840.                         get string_value of crit_error_diagnostics ;
  7841.                                 item (windowindex - criterr_first_diagnostic) ;
  7842.                                 to oldtxt
  7843.                         set array_value of crit_error_diagnostics ;
  7844.                                 item (windowindex - criterr_first_diagnostic) ;
  7845.                                 to newtxt
  7846.                         [not changes_made] indicate changes_made as ;
  7847.                                 newtxt ne oldtxt
  7848.                     loop
  7849.                 end_procedure
  7850.             end_object
  7851.  
  7852.             object crit_diags_button is an option_button
  7853.             end_object
  7854.         end_object
  7855.  
  7856.         object crit_text_special is a button
  7857.             set focus_mode to pointer_only
  7858.  
  7859.             item_list
  7860.                 on_item "Alt+F1=Translate Diagnostics" send do_diagnostics
  7861.             end_item_list
  7862.         end_object
  7863.  
  7864.         object crit_text_button is an option_button
  7865.         end_object
  7866.  
  7867.         return
  7868.         crit_text_end:
  7869.  
  7870.         procedure do_diagnostics
  7871.             send object_set_on to (crit_diags(current_object))
  7872.         end_procedure
  7873.  
  7874.         function message_format returns string
  7875.             local integer obj
  7876.             local string new_format
  7877.  
  7878.             move (crit_text_phrases(current_object)) to obj
  7879.             move (string(value(obj,0)) + " " + string(value(obj,1)) + " @|" + ;
  7880.                     string(value(obj,2))) to new_format
  7881.  
  7882.             move (crit_text_options(current_object)) to obj
  7883.             move (string(new_format) + ":  Diagnostic  " + ;
  7884.                     string(value(obj,0)) + " " + string(value(obj,2)) + " " +   ;
  7885.                     string(value(obj,4)) + ":") to new_format
  7886.  
  7887.             function_return new_format
  7888.         end_function
  7889.  
  7890.         procedure redisplay_msg_format
  7891.             set value of (crit_text_format(current_object)) item 0 ;
  7892.                     to (message_format(current_object))
  7893.         end_procedure
  7894.     end_object
  7895.  
  7896. #ENDIF  // HAS_CRITICAL_ERROR
  7897.  
  7898.  
  7899.     object default_text is a popup_client
  7900.         set location to 3 2 relative
  7901.  
  7902.         procedure object_set_on
  7903.             if (already_created(current_object)) eq 0 gosub default_text_begin
  7904.             set already_created to 1
  7905.             send request_reset_values
  7906.             send popup
  7907.         end_procedure
  7908.  
  7909.         goto default_text_end
  7910.  
  7911.         default_text_begin:
  7912.         object default_text_title is an object_title default_text_title ;
  7913.                 "Default Error Text"
  7914.         end_object
  7915.  
  7916.         object default_text_phrases is an entry
  7917.             on_key key_enter send next private
  7918.  
  7919.             item_list
  7920.                 entry_item error_cant_open    
  7921.                 entry_item error_no_text      
  7922.                 entry_item error_out_of_range 
  7923.             end_item_list
  7924.  
  7925.             procedure set_values
  7926.                 send entry_update 0 true
  7927.                 if (changed_state(current_object)) indicate changes_made true
  7928.             end_procedure
  7929.  
  7930.             procedure reset_values
  7931.                 send entry_display 0 true
  7932.                 set changed_state to false
  7933.             end_procedure
  7934.  
  7935.  
  7936.             procedure shadow_items integer state
  7937.                 set shadow_state item 0 to state
  7938.             end_procedure
  7939.  
  7940.         end_object
  7941.  
  7942.         object default_text_button is an option_button
  7943.         end_object
  7944.  
  7945.         return
  7946.         default_text_end:
  7947.     end_object
  7948.  
  7949.  
  7950.  
  7951.     object ascii_map is a pick_menu //pick_list
  7952.         set location to 8 28 absolute
  7953.         set popup_state to true
  7954.         set block_mouse_state to true
  7955.         set select_mode to auto_select
  7956.         set search_mode to first_character
  7957.         set scroll_bar_offset to 1
  7958.         set auto_top_item_state to false
  7959. //        set item_limit to 21
  7960.  
  7961.         on_key key_f2 send set_ascii
  7962.         on_key key_f5 send reset_ascii
  7963.         on_key key_escape send ascii_map_off
  7964.         on_key key_enter send set_ascii //default_key
  7965.         on_key key_f10 send default_key
  7966.  
  7967.         for windowindex from 1 to 255
  7968.             if not ('|'+string(windowindex)+'|') in "|7|8|10|12|26|27|" ;
  7969.                     send add_item msg_none (character(windowindex))
  7970.         loop
  7971.  
  7972.         object ascii_title is an object_title ascii_title "Valid Characters"
  7973.             set location to 1 1 relative
  7974.         end_object
  7975.  
  7976.         object ascii_button is a button
  7977.             set location to 8 2 relative
  7978.             set focus_mode to pointer_only
  7979.  
  7980.             item_list
  7981.                 on_item okkey send set_ascii
  7982.                 on_item resetkey send reset_ascii
  7983.                 on_item cancelkey send ascii_map_off
  7984.                 on_item helpkey send extended_help
  7985.             end_item_list
  7986.         end_object
  7987.  
  7988.         procedure set_ascii returns integer
  7989.             local integer newascii
  7990.             local string achar
  7991.  
  7992.             get current_item to newascii
  7993.             set original_selection to newascii
  7994.             get value item newascii to achar
  7995.             procedure_return (ascii(achar))
  7996.         end_procedure
  7997.  
  7998.         procedure reset_ascii
  7999.             local integer oldascii
  8000.  
  8001.             get original_selection to oldascii
  8002.             set current_item to oldascii
  8003.             set select_state item current to true
  8004.         end_procedure
  8005.  
  8006.         procedure ascii_map_off returns integer
  8007.             local integer oldascii
  8008.             local string achar
  8009.  
  8010.             get original_selection to oldascii
  8011.             get value item oldascii to achar
  8012.             procedure_return (ascii(achar))
  8013.         end_procedure
  8014.  
  8015.         procedure init_ascii integer oldascii
  8016.             local integer thisone maxx temp
  8017.             local string achar
  8018.  
  8019.             character oldascii to achar
  8020.             move 0 to thisone
  8021.             set select_count to 0
  8022.             get item_matching achar thisone
  8023.             set original_selection to thisone
  8024.             send reset_ascii
  8025.         end_procedure
  8026.     end_object
  8027.  
  8028.     object load_as is a client
  8029.         set popup_state to true
  8030.         set block_mouse_state to true
  8031.         set location to 7 6 relative
  8032.  
  8033.         on_key key_f2 send load_as_this
  8034.         on_key key_escape send object_set_off
  8035.  
  8036.         object load_as_title is an object_title load_as_title "Load"
  8037.         end_object
  8038.  
  8039.         object load_as_form is a form
  8040.             item_list
  8041.                 on_item "" send next
  8042.             end_item_list
  8043.         end_object
  8044.  
  8045.         object load_as_reset is a checkbox
  8046.             set select_mode to multi_select
  8047.  
  8048.             item_list
  8049.                 on_item "" send none
  8050.             end_item_list
  8051.         end_object
  8052.  
  8053.         object load_as_button is a button
  8054.             set focus_mode to pointer_only
  8055.  
  8056.             item_list
  8057.                 on_item okkey send load_as_this
  8058.                 on_item cancelkey send object_set_off
  8059.                 on_item helpkey send extended_help
  8060.             end_item_list
  8061.         end_object
  8062.  
  8063.         procedure load_as_this
  8064.             local string old_ini
  8065.             local integer reset_to_it
  8066.  
  8067.             move inifile to old_ini
  8068.             get value of (load_as_form(current_object)) item 0 to inifile
  8069.             get select_state of (load_as_reset(current_object)) item 0 ;
  8070.                     to reset_to_it
  8071.             direct_input inifile
  8072.             indicate err as [seqeof]
  8073.             close_input
  8074.             [not err] begin
  8075.                 send object_set_off
  8076.                 if reset_to_it send reload_it
  8077.                 else send load_it
  8078.             end
  8079.             [err] begin
  8080.                 send tell_em to not_done "open or read"
  8081.                 indicate err false
  8082.                 move old_ini to inifile
  8083.             end
  8084.         end_procedure
  8085.  
  8086.         procedure object_set_on
  8087.             local integer result
  8088.  
  8089.             [changes_made] begin
  8090.                 get tell_em of (not_saved(current_object)) "loading?" ;
  8091.                         to result
  8092.                 if result eq msg_ok send save_it
  8093.                 else if result eq msg_negative begin
  8094.                     indicate changes_made false
  8095.                     send show_status
  8096.                 end
  8097.             end
  8098.             [not changes_made] begin
  8099.                 set value of (load_as_form(current_object)) item 0 to inifile
  8100.                 set select_state of (load_as_reset(current_object)) item 0 ;
  8101.                         to true
  8102.                 send popup
  8103.             end
  8104.         end_procedure
  8105.  
  8106.         procedure object_set_off
  8107.             send deactivate
  8108.             send show_status to main_object
  8109.         end_procedure
  8110.     end_object
  8111.  
  8112.     object save_as is a client
  8113.         set popup_state to true
  8114.         set block_mouse_state to true
  8115.         set location to 7 6 relative
  8116.  
  8117.         on_key key_f2 send save_as_this
  8118.         on_key key_escape send object_set_off
  8119.  
  8120.         object save_as_title is an object_title save_as_title "Save As"
  8121.         end_object
  8122.  
  8123.         object save_as_form is a form
  8124.             item_list
  8125.                 on_item "" send none
  8126.             end_item_list
  8127.         end_object
  8128.  
  8129.         object save_as_button is a button
  8130.             set focus_mode to pointer_only
  8131.  
  8132.             item_list
  8133.                 on_item okkey send save_as_this
  8134.                 on_item cancelkey send object_set_off
  8135.                 on_item helpkey send extended_help
  8136.             end_item_list
  8137.         end_object
  8138.  
  8139.         procedure save_as_this
  8140.             local string tempname
  8141.  
  8142.             move inifile to tempname
  8143.             get value of (save_as_form(current_object)) item 0 to inifile
  8144.             send save_it
  8145.             move tempname to inifile
  8146.             send object_set_off
  8147.         end_procedure
  8148.  
  8149.         procedure object_set_on
  8150.             set value of (save_as_form(current_object)) item 0 to inifile
  8151.             send popup
  8152.         end_procedure
  8153.  
  8154.         procedure object_set_off
  8155.             send deactivate
  8156.             send show_status to main_object
  8157.         end_procedure
  8158.     end_object
  8159.  
  8160.     object print_as is a client
  8161.         set popup_state to true
  8162.         set block_mouse_state to true
  8163.         set location to 6 6 relative
  8164.  
  8165.         on_key key_f2 send print_as_this
  8166.         on_key key_escape send object_set_off
  8167.  
  8168.         object print_as_title is an object_title print_as_title "Print"
  8169.         end_object
  8170.  
  8171.         object print_as_radio is a checkbox
  8172.             set select_mode to auto_select
  8173.             set auto_top_item_state to false
  8174.  
  8175.             item_list
  8176.                 on_item "Printer" send none
  8177.                 on_item "File"    send next
  8178.             end_item_list
  8179.  
  8180.             procedure activating
  8181.                 forward send activating
  8182.  
  8183.                 set current_item to 0
  8184.             end_procedure
  8185.         end_object
  8186.  
  8187.         object print_as_form is a form
  8188.             item_list
  8189.                 on_item "" send none
  8190.             end_item_list
  8191.  
  8192.             procedure entering returns integer
  8193.                 local integer retval
  8194.  
  8195.                 forward send entering retval
  8196.                 get select_state of (print_as_radio(parent(current_object))) ;
  8197.                         item 0 to retval
  8198.                 if retval begin
  8199.                     set shadow_state item 0 to true
  8200.                     set value item 0 to ""
  8201.                 end
  8202.                 else set shadow_state item 0 to false
  8203.             end_procedure
  8204.         end_object
  8205.  
  8206.         object print_as_button is a button
  8207.             set focus_mode to pointer_only
  8208.  
  8209.             item_list
  8210.                 on_item okkey send print_as_this
  8211.                 on_item cancelkey send object_set_off
  8212.                 on_item helpkey send extended_help
  8213.             end_item_list
  8214.         end_object
  8215.  
  8216.         procedure print_as_this
  8217.             local string output_name
  8218.             local integer toafile
  8219.  
  8220.             get select_state of (print_as_radio(current_object)) item 1 ;
  8221.                     to toafile
  8222.             if toafile get value of (print_as_form(current_object)) item 0 ;
  8223.                     to output_name
  8224.             else move print_device to output_name
  8225.             send print_ini output_name toafile
  8226.             send object_set_off
  8227.         end_procedure
  8228.  
  8229.         procedure object_set_on
  8230.             set value of (print_as_form(current_object)) item 0 to ""
  8231.             send popup
  8232.         end_procedure
  8233.  
  8234.         procedure object_set_off
  8235.             send deactivate
  8236.             send show_status to main_object
  8237.         end_procedure
  8238.     end_object
  8239.  
  8240.     create_menu main_action_bar
  8241.         set location to -1 0 relative
  8242.         set auto_top_item_state to false
  8243.  
  8244.         on_item "File" begin_pull_down file_pull_down
  8245.             on_item "Load...          " send object_set_on ;
  8246.                     to (load_as(current_object))
  8247.             on_item "Save           F2" send save_it to main_object
  8248.             on_item "Save As...       " send object_set_on ;
  8249.                     to (save_as(current_object))
  8250.             on_item "Reset          F5" send reload_it to main_object
  8251.             on_item "Print... Shift+F4" send print_it to main_object
  8252.             on_item "Exit       Alt+F4" send quitting to main_object
  8253.         end_pull_down
  8254.  
  8255.         on_item "Keyboard" begin_pull_down keyboard_pull_down
  8256.             on_item "Accelerator Keys..." send object_set_on ;
  8257.                     to (keyboard_stuff(current_object))
  8258.         end_pull_down
  8259.  
  8260.  
  8261.         on_item "Colors" begin_pull_down screen_pull_down
  8262.             on_item "Default Colors..." send do_default_colors to main_object
  8263.             on_item "Palettes...      " send object_set_on ;
  8264.                     to (palette_color_stuff(current_object))
  8265.             on_item "Class Colors...  " send object_set_on ;
  8266.                     to (class_color_stuff(current_object))
  8267.  
  8268. #IFDEF HAS_EXIT_COLOR
  8269.             on_item "Exit Color..."     send object_set_on ;
  8270.                     to (exit_color(current_object))
  8271. #ENDIF
  8272.  
  8273.         end_pull_down
  8274.  
  8275.  
  8276. #IFDEF HAS_GRAPHICS
  8277.  
  8278.         on_item "Graphics" begin_pull_down graphics_pull_down
  8279.             on_item "Screen Driver... " send object_set_on ;
  8280.                     to (adapters(current_object))
  8281.             on_item "Printer Driver..." send object_set_on ;
  8282.                     to (printers(current_object))
  8283.         end_pull_down
  8284.  
  8285. #ENDIF  // HAS_GRAPHICS
  8286.  
  8287.  
  8288.         on_item "Appearance" begin_pull_down appearance_pull_down
  8289.             on_item "Checkboxes...          " send object_set_on ;
  8290.                     to (check_strings(current_object))
  8291.             on_item "Radio Buttons...       " send object_set_on ;
  8292.                     to (radio_strings(current_object))
  8293.             on_item "Scroll Bars...         " send object_set_on ;
  8294.                     to (scrollbar_strings(current_object))
  8295.             on_item "Currency String...     " send object_set_on ;
  8296.                     to (currency(current_object))
  8297.             on_item "Empty Windows...       " send object_set_on ;
  8298.                     to (window_fill(current_object))
  8299.             on_item "Page Ejection Prompt..." send object_set_on ;
  8300.                     to (press_any_key(current_object))
  8301.         end_pull_down
  8302.  
  8303.         on_item "Options" begin_pull_down options_pull_down
  8304. #IFDEF HAS_POWER_FAIL
  8305.             on_item "Power Fail Protection..." send object_set_on ;
  8306.                     to (power_fail(current_object))
  8307. #ENDIF  // HAS_POWER_FAIL
  8308.             on_item "Date Format...          " send object_set_on ;
  8309.                     to (date_format(current_object))
  8310.             on_item "Number Format...        " send object_set_on ;
  8311.                     to (numeric_format(current_object))
  8312.             on_item "Automatic return...     " send object_set_on ;
  8313.                     to (auto_return(current_object))
  8314.         end_pull_down
  8315.  
  8316.         on_item "Miscellaneous" begin_pull_down miscellaneous_pull_down
  8317.             on_item "Horizontal Scrolling..."            send object_set_on ;
  8318.                     to (scroll_increments(current_object))
  8319.             on_item "Scroll Bar Position..."             send object_set_on ;
  8320.                     to (scrollbar_offset(current_object))
  8321.  
  8322. #IFDEF HAS_MOUSE
  8323.             on_item "Mouse Double-click Speed..."        send object_set_on ;
  8324.                     to (double_click(current_object))
  8325. #ENDIF  // HAS_MOUSE
  8326.  
  8327.             on_item "Page Control..."                    send object_set_on ;
  8328.                     to (page_control(current_object))
  8329.  
  8330. #IFDEF HAS_SPOOLER
  8331.  
  8332.             on_item "Spooler Control Strings..."         send object_set_on ;
  8333.                     to (spooler_control(current_object))
  8334.  
  8335. #ENDIF  // HAS_SPOOLER
  8336.  
  8337.             on_item "Character Translation..."           send object_set_on ;
  8338.                     to (translate(current_object))
  8339.  
  8340. #IFDEF HAS_CRITICAL_ERROR
  8341.             on_item "Critical Error Handling..."         send object_set_on ;
  8342.                     to (crit_error(current_object))
  8343.             on_item "Critical Error Text Translation..." send object_set_on ;
  8344.                     to (crit_text(current_object))
  8345. #ENDIF  // HAS_CRITICAL_ERROR
  8346.  
  8347.             on_item "Default Error Text Translation..."  send object_set_on ;
  8348.                     to (default_text(current_object))
  8349.         end_pull_down
  8350.  
  8351.         #include helpa_pd.inc
  8352.  
  8353.         set verify_exit_msg to check_changes
  8354.  
  8355.         on_key key_alt+key_f send activate_pull_down ;
  8356.                 to (file_pull_down(current_object)) private
  8357.         on_key key_alt+key_k send activate_pull_down ;
  8358.                 to (keyboard_pull_down(current_object)) private
  8359.         on_key key_alt+key_c send activate_pull_down ;
  8360.                 to (screen_pull_down(current_object)) private
  8361.  
  8362. #IFDEF HAS_GRAPHICS
  8363.         on_key key_alt+key_g send activate_pull_down ;
  8364.                 to (graphics_pull_down(current_object)) private
  8365. #ENDIF
  8366.  
  8367.         on_key key_alt+key_a send activate_pull_down ;
  8368.                 to (appearance_pull_down(current_object)) private
  8369.         on_key key_alt+key_o send activate_pull_down ;
  8370.                 to (options_pull_down(current_object)) private
  8371.         on_key key_alt+key_m send activate_pull_down ;
  8372.                 to (miscellaneous_pull_down(current_object)) private
  8373.         on_key key_alt+key_h send activate_pull_down ;
  8374.                 to (help_pull_down(current_object)) private
  8375.         on_key key_f2 send save_it to main_object
  8376.         on_key key_f5 send reload_it to main_object
  8377.         on_key key_shift+key_F4 send print_it to main_object
  8378.     end_menu
  8379.  
  8380.     object main_status is a button
  8381.         set focus_mode to pointer_only
  8382.         set center_state item 0 to true
  8383.  
  8384.         item_list
  8385.             on_item "Current settings" send none
  8386.             on_item "" send do_default_colors to main_object
  8387.             on_item "" send object_set_on to (check_strings(current_object))
  8388.             on_item "" send object_set_on to (check_strings(current_object))
  8389.             on_item "" send do_default_colors to main_object
  8390.  
  8391. #IFDEF HAS_EXIT_COLOR
  8392.             on_item "" send object_set_on to (exit_color(current_object))
  8393. #ENDIF
  8394.  
  8395.             on_item "" send object_set_on to (radio_strings(current_object))
  8396.             on_item "" send object_set_on to (radio_strings(current_object))
  8397.             on_item "" send do_default_colors to main_object
  8398.             on_item "" send object_set_on ;
  8399.                     to (scrollbar_strings(current_object))
  8400.             on_item "" send object_set_on ;
  8401.                     to (scroll_increments(current_object))
  8402.             on_item "" send object_set_on ;
  8403.                     to (scrollbar_strings(current_object))
  8404.             on_item "" send object_set_on ;
  8405.                     to (scrollbar_offset(current_object))
  8406.  
  8407. #IFDEF HAS_MOUSE
  8408.             on_item "" send object_set_on to (double_click(current_object))
  8409. #ENDIF  // HAS_MOUSE
  8410.  
  8411.             on_item "" send object_set_on ;
  8412.                     to (scrollbar_strings(current_object))
  8413.             on_item "" send object_set_on to (date_format(current_object))
  8414.             on_item "" send object_set_on to (currency(current_object))
  8415.             on_item "" send object_set_on to (numeric_format(current_object))
  8416.             on_item "" send object_set_on to (window_fill(current_object))
  8417.  
  8418. #IFDEF HAS_POWER_FAIL
  8419.             on_item "" send object_set_on to (power_fail(current_object))
  8420. #ENDIF  // HAS_POWER_FAIL
  8421.  
  8422. #IFDEF HAS_GRAPHICS
  8423.             on_item "" send object_set_on to (adapters(current_object))
  8424.             on_item "" send object_set_on to (adapters(current_object))
  8425. #ENDIF  // HAS_GRAPHICS
  8426.  
  8427.             on_item "" send object_set_on to (auto_return(current_object))
  8428.  
  8429. #IFDEF HAS_GRAPHICS
  8430.             on_item "" send object_set_on to (printers(current_object))
  8431. #ENDIF  // HAS_GRAPHICS
  8432.  
  8433. #IFDEF HAS_SPOOLER
  8434.             on_item "" send object_set_on to (spooler_control(current_object))
  8435.             on_item "" send object_set_on to (spooler_control(current_object))
  8436. #ENDIF  // HAS_SPOOLER
  8437.  
  8438.             on_item "" send object_set_on to (page_control(current_object))
  8439.             on_item "" send object_set_on to (page_control(current_object))
  8440.             on_item "" send object_set_on to (press_any_key(current_object))
  8441.         end_item_list
  8442.  
  8443.         procedure show_status
  8444.             get fg_value of screencolors item u_desktop to tmp1
  8445.             set value of main_status.foreground     to tmp1
  8446.             set value of main_status.check_select   to check_string_select
  8447.             set value of main_status.check_deselect to check_string_deselect
  8448.             get bg_value of screencolors item u_desktop to tmp1
  8449.             set value of main_status.background     to tmp1
  8450.  
  8451. #IFDEF HAS_EXIT_COLOR
  8452.             set value of main_status.exit           to exit_color_value
  8453. #ENDIF
  8454.  
  8455.             set value of main_status.radio_select   to radio_string_select
  8456.             set value of main_status.radio_deselect to radio_string_deselect
  8457.             get pal_value of screencolors item u_desktop to tmp1
  8458.             get value of palette_names item tmp1    to symbol
  8459.  
  8460.             set value of main_status.pallette     to symbol
  8461.             set value of main_status.scroll_up    to (character(scrollbar_up))
  8462.             set value of main_status.increments   to scroll_increments_option
  8463.             set value of main_status.scroll_bar   to (character(scrollbar_bar))
  8464.             set value of main_status.offset       to scrollbar_offset_option
  8465.  
  8466. #IFDEF HAS_MOUSE
  8467.             set value of main_status.double_click to (11 - double_click_speed)
  8468. #ENDIF  // HAS_MOUSE
  8469.  
  8470.             set value of main_status.scroll_down  to (character(scrollbar_down))
  8471.             if date_format_option eq 0 ;
  8472.                 set value of main_status.date_form  to ;
  8473.                         ("mm" + character(date_separator) + "dd" + ;
  8474.                         character(date_separator) + "yy")
  8475.             else if date_format_option eq 1 ;
  8476.                 set value of main_status.date_form  to ;
  8477.                         ("dd" + character(date_separator) + "mm" + ;
  8478.                         character(date_separator) + "yy")
  8479.             else set value of main_status.date_form  to ;
  8480.                     ("yy" + character(date_separator) + "mm" + ;
  8481.                     character(date_separator) + "dd")
  8482.             set value of main_status.currency to currency_string
  8483.             set value of main_status.number_form    to ;
  8484.                     (if(numeric_format_option,"10.000,00","10,000.00"))
  8485.             set value of main_status.empty_window   to ;
  8486.                     (character(window_fill_char))
  8487.  
  8488. #IFDEF HAS_POWER_FAIL
  8489.             set value of main_status.power_fail     to ;
  8490.                     (if(power_fail_option,"Yes","No"))
  8491. #ENDIF  // HAS_POWER_FAIL
  8492.  
  8493. #IFDEF HAS_GRAPHICS
  8494.             set value of main_status.graph_driver   to graphics_driver
  8495.             set value of main_status.graph_mode     to graphics_mode
  8496. #ENDIF  // HAS_GRAPHICS
  8497.  
  8498.             set value of main_status.auto_return    to ;
  8499.                     (if(auto_return_option,"Yes","No"))
  8500.  
  8501. #IFDEF HAS_GRAPHICS
  8502.             set value of main_status.print_driver   to printer_driver
  8503. #ENDIF  // HAS_GRAPHICS
  8504.  
  8505. #IFDEF HAS_SPOOLER
  8506.             set value of main_status.dfprinter_string to ;
  8507.                     spooler_dfprinter_string
  8508.             set value of main_status.nodfprinter_string to ;
  8509.                     spooler_nodfprinter_string
  8510. #ENDIF  // HAS_SPOOLER
  8511.  
  8512.             set value of main_status.pageend_opt    to pageend_option
  8513.             if formfeed_option eq 0 ;
  8514.                     set value of main_status.pagefeed_opt to "Prompt the user"
  8515.             else if formfeed_option eq 1 ;
  8516.                     set value of main_status.pagefeed_opt to "Formfeed"
  8517.             else set value of main_status.pagefeed_opt to ;
  8518.                     ("Linefeeds to " + string(pagefeed_option) + " lines")
  8519.             set value of main_status.eject_prompt to press_any_key_string
  8520.  
  8521.  
  8522.             [changes_made] set value of (main_footer(main_object.obj)) item 0 ;
  8523.                     to "Changes have been made"
  8524.             [not changes_made] set value of (main_footer(main_object.obj)) ;
  8525.                     item 0 to ""
  8526.             set value of (main_footer(main_object.obj)) item 1 to ;
  8527.                     (clip(desktop,inifile,38))
  8528.         end_procedure
  8529.     end_object
  8530.  
  8531.     object main_button is a button
  8532.         set focus_mode to pointer_only
  8533.  
  8534.         item_list
  8535.             on_item "F2=Save" send save_it to main_object
  8536.             on_item resetkey send reload_it to main_object
  8537.             on_item "Shift+F4=Print" send print_it to main_object
  8538.             on_item "Alt+F4=Exit" send quitting to main_object
  8539.             on_item helpkey send extended_help
  8540.         end_item_list
  8541.     end_object
  8542.  
  8543.     procedure print_it
  8544.         send activate to (main_action_bar(current_object))
  8545.         send object_set_on to (print_as(current_object))
  8546.     end_procedure
  8547.  
  8548.     function ascii_map_on integer oldascii returns integer
  8549.         local integer newascii
  8550.  
  8551.         send init_ascii to (ascii_map(current_object)) oldascii
  8552.         ui_accept (ascii_map(current_object)) to newascii
  8553.         function_return newascii
  8554.     end_function
  8555.  
  8556.     procedure write_compare string dummy
  8557.         local integer var_arg
  8558.         local string oldline newline dum
  8559.  
  8560.         move "" to newline
  8561.         for var_arg from 1 to num_arguments
  8562.             append newline var_arg&
  8563.         loop
  8564.  
  8565.         readln oldline
  8566.         [seqeof] begin
  8567.             
  8568.             increment cimage_number
  8569.             if cimage_number lt 8 begin
  8570.                 close_input
  8571.                 if cimage_number eq 2 image_input default_ini2
  8572.                 if cimage_number eq 3 image_input default_ini3
  8573.                 if cimage_number eq 4 image_input default_ini4
  8574.                 if cimage_number eq 5 image_input default_ini5
  8575.                 if cimage_number eq 6 image_input default_ini6
  8576.                 if cimage_number eq 7 image_input default_ini7
  8577.                 readln oldline
  8578.             end
  8579.         end
  8580.         indicate err as [seqeof]
  8581.         [not err] if newline ne oldline writeln newline
  8582.     end_procedure
  8583.  
  8584.     function save_ini returns integer
  8585.         local integer temp temp2 temp3
  8586.         local string stuff
  8587.  
  8588.         indicate err false
  8589.         if inifile eq "" move dflt_ini to inifile
  8590.         direct_output inifile
  8591.         [seqeof] begin
  8592.             close_output
  8593.             send tell_em to not_done "save to"
  8594.             function_return 0
  8595.         end
  8596.  
  8597.         image_input default_ini
  8598.         move 1 to cimage_number
  8599.         send working "Saving,"
  8600.  
  8601.         [not err] move (accelerator_group * 256) to feature_group
  8602.         [not err] for temp from kprint_screen to kclear_all
  8603.             send write_compare (feature_group + temp - 256) equals ;
  8604.                     (key_value(cua_keys.obj,(temp - 256)))
  8605.         [not err] loop
  8606.         [not err] for temp from kmark to kclose_panel
  8607.             send write_compare (feature_group + temp - 256) equals ;
  8608.                     (key_value(cua_keys.obj,(temp - 256)))
  8609.         [not err] loop
  8610.  
  8611.         [not err] move (ui_color_group * 256) to feature_group
  8612.         [not err] for windowindex from u_desktop to u_help
  8613.             get fg_value of screencolors item windowindex to temp
  8614.             get bg_value of screencolors item windowindex to temp2
  8615.             get pal_value of screencolors item windowindex to temp3
  8616.             send write_compare (feature_group + windowindex) equals ;
  8617.                     temp space temp2 space temp3
  8618.         [not err] loop
  8619.         [not err] for windowindex from u_trace to u_entrylist
  8620.             get fg_value of screencolors item windowindex to temp
  8621.             get bg_value of screencolors item windowindex to temp2
  8622.             get pal_value of screencolors item windowindex to temp3
  8623.             send write_compare (feature_group + windowindex) equals ;
  8624.                     temp space temp2 space temp3
  8625.         [not err] loop
  8626.         [not err] for windowindex from u_radio to u_clipboard
  8627.             get fg_value of screencolors item windowindex to temp
  8628.             get bg_value of screencolors item windowindex to temp2
  8629.             get pal_value of screencolors item windowindex to temp3
  8630.             send write_compare (feature_group + windowindex) equals ;
  8631.                     temp space temp2 space temp3
  8632.         [not err] loop
  8633.  
  8634.         [not err] move (ui_info_group * 256) to feature_group
  8635.         [not err] for temp from 1 to 8
  8636.             for temp2 from 0 to 7
  8637.                 get integer_value of palette_colors item (temp * 8 + temp2) ;
  8638.                         to temp3
  8639.                 send write_compare (feature_group + temp2) equals ;
  8640.                         (temp - 1) space temp3
  8641.             [not err] loop
  8642.         [not err] loop
  8643.         [not err] send write_compare ;
  8644.                 (feature_group + not_checked) equals check_string_deselect
  8645.         [not err] send write_compare ;
  8646.                 (feature_group + checked) equals check_string_select
  8647.         [not err] send write_compare ;
  8648.                 (feature_group + radio_on) equals radio_string_select
  8649.         [not err] send write_compare ;
  8650.                 (feature_group + radio_off) equals radio_string_deselect
  8651.         [not err] send write_compare ;
  8652.                 (feature_group + scbar_ofs) equals scrollbar_offset_option
  8653.         [not err] send write_compare ;
  8654.                 (feature_group + scbar_up) equals scrollbar_up
  8655.         [not err] send write_compare ;
  8656.                 (feature_group + scbar_down) equals scrollbar_down
  8657.         [not err] send write_compare ;
  8658.                 (feature_group + scbar_bar) equals scrollbar_bar
  8659.         [not err] send write_compare ;
  8660.                 (feature_group + hor_scrl) equals scroll_increments_option
  8661.         [not err] send write_compare ;
  8662.                 (feature_group + dbl_click) equals double_click_speed
  8663.  
  8664.         [not err] move (termlist_group * 256) to feature_group
  8665.         [not err] get fg_value of screencolors item u_desktop to temp
  8666.         [not err] get bg_value of screencolors item u_desktop to temp2
  8667.         [not err] begin
  8668.             send write_compare (feature_group + desktop_col) equals ;
  8669.                     temp space temp2 space
  8670.         end
  8671.         [not err] send write_compare (feature_group + auto_ret) equals ;
  8672.                 auto_return_option
  8673.         [not err] send write_compare (feature_group + date_form) equals ;
  8674.                 date_format_option
  8675.         [not err] send write_compare (feature_group + num_form) equals ;
  8676.                 numeric_format_option
  8677.         [not err] send write_compare (feature_group + pwr_fail) equals ;
  8678.                 power_fail_option
  8679.         [not err] send write_compare (feature_group + crncy) equals ;
  8680.                 currency_string
  8681.         [not err] send write_compare (feature_group + wfill) equals ;
  8682.                 window_fill_char
  8683.         [not err] send write_compare (feature_group + gr_adapter) equals ;
  8684.                 (if((graphics_path > ""),(graphics_path + separator),"")) ;
  8685.                 graphics_driver
  8686.         [not err] send write_compare (feature_group + gr_mode) equals ;
  8687.                 graphics_mode
  8688.         [not err] send write_compare (feature_group + gr_printer) equals ;
  8689.                 (if((printer_path > ""),(printer_path + separator),"")) ; 
  8690.                 printer_driver
  8691.  
  8692.         [not err] send write_compare (feature_group + exit_col) equals ;
  8693.                 exit_color_value
  8694.  
  8695.  
  8696.         [not err] move (keymap_group * 256) to feature_group
  8697.         [not err] for temp from 0 to 255
  8698.                 get upcase_value of key_map item temp to temp2
  8699.                 send write_compare (feature_group + upcase_feature) equals ;
  8700.                         ((temp * 65536) + temp2)
  8701.         [not err] loop
  8702.         [not err] for temp from 0 to 255
  8703.             get locase_value of key_map item temp to temp2
  8704.             send write_compare (feature_group + locase_feature) equals ;
  8705.                     ((temp * 65536) + temp2)
  8706.         [not err] loop
  8707.         [not err] for temp from 0 to 255
  8708.             get attrib_value of key_map item temp to temp2
  8709.             send write_compare (feature_group + attrib_feature) equals ;
  8710.                     ((temp * 65536) + temp2)
  8711.         [not err] loop
  8712.         [not err] for temp from 0 to 255
  8713.             get remap_value of key_map item temp to temp2
  8714.             send write_compare (feature_group + remap_feature) equals ;
  8715.                     ((temp * 65536) + temp2)
  8716.         [not err] loop
  8717.  
  8718.         [not err] move (misc_group * 256) to feature_group
  8719.         [not err] send write_compare (feature_group + date_sep) equals ;
  8720.                 date_separator
  8721.         [not err] send write_compare (feature_group + any_key_msg) ;
  8722.                 equals (trim(press_any_key_string)) ' '
  8723.         [not err] send write_compare (feature_group + page_end) equals ;
  8724.                 pageend_option
  8725.         [not err] if formfeed_option eq 0 send write_compare ;
  8726.                 (feature_group + page_feed) equals -1
  8727.         [not err] else if formfeed_option eq 1 send write_compare ;
  8728.                 (feature_group + page_feed) equals 0
  8729.         [not err] else send write_compare ;
  8730.                 (feature_group + page_feed) equals pagefeed_option
  8731.         [not err] send write_compare ;
  8732.                 (feature_group + default_error_cant_open) equals error_cant_open
  8733.         [not err] send write_compare ;
  8734.                 (feature_group + default_error_no_text) equals error_no_text
  8735.         [not err] send write_compare ;
  8736.                 (feature_group + default_error_out_of_range) equals error_out_of_range
  8737.  
  8738.         [not err] send write_compare ;
  8739.                 (feature_group + default_spool_dfprinter_cfg_str) equals ;
  8740.                 spooler_dfprinter_string
  8741.         [not err] send write_compare ;
  8742.                 (feature_group + default_spool_nodfprinter_cfg_str) equals ;
  8743.                 spooler_nodfprinter_string
  8744.  
  8745.  
  8746.         [not err] move (critical_error_group * 256) to feature_group
  8747.         [not err] send write_compare ;
  8748.                 (feature_group + criterr_header_msg) equals phrase_1
  8749.         [not err] send write_compare ;
  8750.                 (feature_group + criterr_abort_msg) equals option_1
  8751.         [not err] send write_compare ;
  8752.                 (feature_group + criterr_retry_msg) equals option_2
  8753.         [not err] send write_compare ;
  8754.                 (feature_group + criterr_fail_msg) equals option_3
  8755.         [not err] send write_compare ;
  8756.                 (feature_group + criterr_drive) equals phrase_2
  8757.         [not err] send write_compare ;
  8758.                 (feature_group + criterr_device) equals phrase_3
  8759.         [not err] send write_compare ;
  8760.                 (feature_group + criterr_dflt1) equals criterr_default1
  8761.         [not err] send write_compare ;
  8762.                 (feature_group + criterr_retry) equals criterr_retries
  8763.         [not err] send write_compare ;
  8764.                 (feature_group + criterr_dflt2) equals criterr_default2
  8765.         [not err] begin
  8766.             if canrespond eq 0 move (-criterr_timeout) to criterr_timeout
  8767.             send write_compare (feature_group + criterr_timeout_secs) ;
  8768.                     equals criterr_timeout
  8769.             if canrespond eq 0 move (-criterr_timeout) to criterr_timeout
  8770.         end
  8771.         [not err] send write_compare ;
  8772.                 (feature_group + criterr_abort_chars) equals reply_1
  8773.         [not err] send write_compare ;
  8774.                 (feature_group + criterr_retry_chars) equals reply_2
  8775.         [not err] send write_compare ;
  8776.                 (feature_group + criterr_fail_chars) equals reply_3
  8777.         [not err] begin
  8778.                 move ((canfail * $01) + (canabort * $02) + (canretry * $04)) ;
  8779.                 to temp
  8780.             send write_compare ;
  8781.                     (feature_group + criterr_user_mask) equals temp
  8782.         end
  8783.         [not err] for temp from criterr_first_diagnostic to ;
  8784.                 criterr_last_diagnostic
  8785.             get string_value of crit_error_diagnostics item ;
  8786.                     (temp - criterr_first_diagnostic) to token
  8787.             send write_compare (feature_group + temp) equals (trim(token))
  8788.         [not err] loop
  8789.         [not err] if (item_count(unused_ini.obj)) gt 0 begin
  8790.             for temp from 0 to (item_count(unused_ini.obj) - 1)
  8791.                 writeln (string_value(unused_ini.obj,temp))
  8792.            loop
  8793.         end
  8794.       
  8795.         close_input
  8796.         close_output
  8797.         send done
  8798.  
  8799.         [err] send tell_em to not_done "save to"
  8800.  
  8801.         function_return (not(err))
  8802.     end_function
  8803.  
  8804.     procedure load_it
  8805.         send activate to (main_action_bar(current_object))
  8806.         send reset_defaults 1
  8807.         send done
  8808.         [err] begin
  8809.             send tell_em to not_done "open or read"
  8810.             indicate err false
  8811.         end
  8812.         send done
  8813.  
  8814.         send show_status
  8815.     end_procedure
  8816.  
  8817.     procedure save_it
  8818.         local integer result
  8819.  
  8820.         send activate to (main_action_bar(current_object))
  8821.         get save_ini to result
  8822.         [changes_made] indicate changes_made as (result = false)
  8823.  
  8824.         send show_status
  8825.     end_procedure
  8826.  
  8827.     function colorname integer colornum returns string
  8828.         if colornum eq 0 function_return "Inherit"
  8829.         if colornum eq 1 function_return "Desktop win"
  8830.         if colornum eq 2 function_return "Desktop img"
  8831.         function_return (string(colornum))
  8832.     end_function
  8833.  
  8834.     procedure check_page integer want_lines integer hdr_image
  8835.         pagecheck want_lines
  8836.         [pagebreak] output profile_header
  8837.         [not err not pagebreak] output profile_footer
  8838.         [not err] move hdr_image to current_image
  8839.         [not err] output
  8840.     end_procedure
  8841.  
  8842.     procedure print_ini string output_name integer isafile
  8843.         local integer temp temp2 temp3
  8844.         local string stuff stuff2 msg
  8845.  
  8846.         move "Dfconfig failed to print:" to msg
  8847.         direct_output output_name
  8848.         [seqeof] begin
  8849.             if isafile send show_em to not_done msg ;
  8850.                     "file could not be created."
  8851.             else send show_em to not_done msg ;
  8852.                     "printer appears not ready."
  8853.             procedure_return
  8854.         end
  8855.  
  8856.         send working "Printing,"
  8857.         indicate err false
  8858.  
  8859.         if isafile move 0 to pageend
  8860.         else move 60 to pageend
  8861.  
  8862.         move 0 to linecount
  8863.         output profile_header
  8864.         output profile_keys_header
  8865.  
  8866.         for temp from kprint_screen to kclear_all
  8867.             get key_value of cua_keys item (temp - 256) to temp2
  8868.             get name_value of cua_keys item (temp - 256) to stuff
  8869.             send print_key stuff temp2
  8870.         [not err] loop
  8871.         [not err] for temp from kmark to kclose_panel
  8872.             get key_value of cua_keys item (temp - 256) to temp2
  8873.             get name_value of cua_keys item (temp - 256) to stuff
  8874.             send print_key stuff temp2
  8875.         [not err] loop
  8876.  
  8877.         [not err] send check_page (profile_footer.lines + ;
  8878.                 profile_colors_header.lines + (profile_colors.lines * 5)) ;
  8879.                 profile_colors_header.n
  8880.         [not err] get fg_value of screencolors item u_desktop to temp
  8881.         [not err] get bg_value of screencolors item u_desktop to temp2
  8882.         [not err] get pal_value of screencolors item u_desktop to temp3
  8883.         [not err] get name_value of screencolors item u_desktop to stuff
  8884.         [not err] get value of palette_names item temp3 to stuff2
  8885.         [not err] send print_colors (stuff + " (desktop)") temp temp2 stuff2
  8886.  
  8887.         [not err] for windowindex from u_message to u_help
  8888.             get fg_value of screencolors item windowindex to temp
  8889.             get bg_value of screencolors item windowindex to temp2
  8890.             get pal_value of screencolors item windowindex to temp3
  8891.             get name_value of screencolors item windowindex to stuff
  8892.             get value of palette_names item temp3 to stuff2
  8893.             send print_colors (stuff + " class") temp temp2 stuff2
  8894.         [not err] loop
  8895.         [not err] for windowindex from u_trace to u_entrylist
  8896.             get fg_value of screencolors item windowindex to temp
  8897.             get bg_value of screencolors item windowindex to temp2
  8898.             get pal_value of screencolors item windowindex to temp3
  8899.             get name_value of screencolors item windowindex to stuff
  8900.             get value of palette_names item temp3 to stuff2
  8901.             send print_colors (stuff + " class") temp temp2 stuff2
  8902.         [not err] loop
  8903.         [not err] for windowindex from u_radio to u_clipboard
  8904.             get fg_value of screencolors item windowindex to temp
  8905.             get bg_value of screencolors item windowindex to temp2
  8906.             get pal_value of screencolors item windowindex to temp3
  8907.             get name_value of screencolors item windowindex to stuff
  8908.             get value of palette_names item temp3 to stuff2
  8909.             send print_colors (stuff + " class") temp temp2 stuff2
  8910.         [not err] loop
  8911.  
  8912.         [not err] send check_page (profile_footer.lines + ;
  8913.                 profile_palette_colors_header.lines + ;
  8914.                 profile_palette_colors_subheader.lines + ;
  8915.                 profile_palette_colors.lines) profile_palette_colors_header.n
  8916.  
  8917.         [not err] for temp from 1 to 8
  8918.             pagecheck (profile_palette_colors_subheader.lines ;
  8919.                     + profile_palette_colors.lines)
  8920.             [pagebreak] output profile_header
  8921.             [not err pagebreak] output profile_palette_colors_header
  8922.  
  8923.             [not err] get value of palette_names item temp to stuff
  8924.             [not err] print (stuff + " palette") ;
  8925.                     to profile_palette_colors_subheader.1
  8926.             [not err] output profile_palette_colors_subheader
  8927.  
  8928.             [not err] autopage profile_palette_colors
  8929.                     [not err] print (colorname(current_object, ;
  8930.                     integer_value(palette_colors.obj,(temp * 8))))
  8931.             [not err] print (colorname(current_object, ;
  8932.                     integer_value(palette_colors.obj,(temp * 8 + 1))))
  8933.             [not err] print (colorname(current_object, ;
  8934.                     integer_value(palette_colors.obj,(temp * 8 + 2))))
  8935.             [not err] print (colorname(current_object, ;
  8936.                     integer_value(palette_colors.obj,(temp * 8 + 3))))
  8937.             [not err] print (colorname(current_object, ;
  8938.                     integer_value(palette_colors.obj,(temp * 8 + 4))))
  8939.             [not err] print (colorname(current_object, ;
  8940.                     integer_value(palette_colors.obj,(temp * 8 + 6))))
  8941.             [not err] output profile_palette_colors
  8942.         [not err] loop
  8943.  
  8944.         [not err] send check_page (profile_footer.lines + ;
  8945.                 profile_ui_header.lines + profile_ui_body.lines) ;
  8946.                 profile_ui_header.n
  8947.  
  8948.         [not err] autopage profile_ui_body
  8949.         [not err] print check_string_select
  8950.         [not err] print check_string_deselect
  8951.         [not err] print radio_string_select
  8952.         [not err] print radio_string_deselect
  8953.         [not err] print scrollbar_offset_option
  8954.         [not err] print (character(scrollbar_up))
  8955.         [not err] print (character(scrollbar_bar))
  8956.         [not err] print (character(scrollbar_down))
  8957.         [not err] print scroll_increments_option
  8958.         [not err] print (11 - double_click_speed)
  8959.         [not err] output profile_ui_body
  8960.  
  8961.         [not err] send check_page (profile_footer.lines + ;
  8962.                 profile_misc_header.lines + profile_misc_body.lines) ;
  8963.                 profile_misc_header.n
  8964.  
  8965.         [not err] autopage profile_misc_body
  8966.         [not err] print (if(auto_return_option,"yes","no"))
  8967.         [not err] character date_separator to stuff2
  8968.         [not err] if date_format_option eq 0 ;
  8969.                 move ("mm" + stuff2 + "dd" + stuff2 + "yy") to stuff
  8970.         [not err] else if date_format_option eq 1 ;
  8971.                 move ("dd" + stuff2 + "mm" + stuff2 + "yy") to stuff
  8972.         [not err] else move ("yy" + stuff2 + "mm" + stuff2 + "dd") to stuff
  8973.         [not err] print stuff
  8974.         [not err] print (if(numeric_format_option,"1.000,00","1,000.00"))
  8975.         [not err] print (if(power_fail_option,"yes","no"))
  8976.         [not err] print currency_string
  8977.         [not err] print (character(window_fill_char))
  8978.         [not err] if graphics_path gt "" begin
  8979.             trim graphics_path to stuff
  8980.             if (right(stuff,1)) ne separator append stuff separator
  8981.         end
  8982.         [not err] else move "" to stuff
  8983.         [not err] append stuff graphics_driver
  8984.         [not err] print stuff
  8985.         [not err] print graphics_mode
  8986.         [not err] if printer_path gt "" begin
  8987.             trim printer_path to stuff
  8988.             if (right(stuff,1)) ne separator append stuff separator
  8989.         end
  8990.         [not err] else move "" to stuff
  8991.         [not err] append stuff printer_driver
  8992.         [not err] print stuff
  8993.         [not err] print press_any_key_string
  8994.  
  8995.         [not err] print spooler_dfprinter_string
  8996.         [not err] print spooler_nodfprinter_string
  8997.  
  8998.         [not err] output profile_misc_body
  8999.         [not err] send print_misc "Useable page size in lines" ;
  9000.                 pageend_option
  9001.         [not err] begin
  9002.                 move "When the page is full" to stuff
  9003.             if formfeed_option eq 0 send print_misc stuff ;
  9004.                     "Prompt the user for a keystroke"
  9005.             else if formfeed_option eq 1 send print_misc stuff ;
  9006.                     "Output a formfeed character"
  9007.             else send print_misc stuff ;
  9008.                     "Fill remainder with linefeed characters"
  9009.         end
  9010.  
  9011.         [not err] send check_page (profile_footer.lines + ;
  9012.                 profile_mapping_header.lines +(profile_mapping_body.lines *5)) ;
  9013.                 profile_mapping_header.n
  9014.  
  9015.         [not err] for windowindex from 0 to 255
  9016.                 send print_map windowindex
  9017.         [not err] loop
  9018.         [not err] begin
  9019.             pagecheck profile_critical.lines
  9020.             [pagebreak] output profile_header
  9021.         end
  9022.         autopage profile_critical
  9023.         print phrase_1
  9024.         print option_1
  9025.         print option_2
  9026.         print option_3
  9027.         print phrase_2
  9028.         print phrase_3
  9029.         [not err] begin
  9030.             move "" to stuff
  9031.             if canabort gt 0 move "Abort " to stuff
  9032.             if canretry gt 0 append stuff "Retry "
  9033.             if canfail gt 0 append stuff "Fail"
  9034.             if stuff ne "" move "Y" to stuff2
  9035.             else move "N" to stuff2
  9036.             print stuff2
  9037.             print stuff
  9038.         end
  9039.         print criterr_timeout
  9040.         if criterr_default1 eq CRITERR_ABORT_FLAG move "Abort" to stuff
  9041.         if criterr_default1 eq CRITERR_RETRY_FLAG move "Retry" to stuff
  9042.         if criterr_default1 eq CRITERR_FAIL_FLAG move "Fail" to stuff
  9043.         print stuff
  9044.         print criterr_retries
  9045.         if criterr_default2 eq CRITERR_ABORT_FLAG move "Abort" to stuff
  9046.         if criterr_default2 eq CRITERR_RETRY_FLAG move "Retry" to stuff
  9047.         if criterr_default2 eq CRITERR_FAIL_FLAG move "Fail" to stuff
  9048.         print stuff
  9049.         print reply_1
  9050.         print reply_2
  9051.         print reply_3
  9052.         writeln
  9053.         output profile_critical
  9054.         
  9055.         pagecheck (item_count(crit_error_diagnostics.obj))
  9056.         [pagebreak] output profile_header
  9057.         writeln
  9058.         writeln "Critical error diagnostic messages"
  9059.         writeln
  9060.         [not err] begin
  9061.             for temp from criterr_first_diagnostic to criterr_last_diagnostic
  9062.                 get string_value of crit_error_diagnostics item ;
  9063.                         (temp - criterr_first_diagnostic) to token
  9064.                     writeln (trim(token))
  9065.            [not err] loop
  9066.         end
  9067.         writeln
  9068.         writeln "Default error text"
  9069.         writeln
  9070.         writeln "No error text: Can't open  = " error_cant_open
  9071.         writeln "No error text available    = " error_no_text
  9072.         writeln "Error number out of range  = " error_out_of_range
  9073.         
  9074.         close_output
  9075.  
  9076.         send done
  9077.  
  9078.         [err] begin
  9079.             if isafile begin
  9080.                 send show_em to not_done msg "not enough room for file."
  9081.                 erasefile output_name
  9082.             end
  9083.             else send show_em to not_done msg;
  9084.                 "printer reports an error."
  9085.  
  9086.             indicate err false
  9087.         end
  9088.     end_procedure
  9089.  
  9090.     procedure body_check
  9091.         pagecheck profile_body.lines
  9092.         [not err pagebreak] output profile_header
  9093.     end_procedure
  9094.  
  9095.     procedure print_key string descr integer thekey
  9096.         send body_check
  9097.         [not err pagebreak] output profile_keys_header
  9098.         [err] procedure_return
  9099.         print descr to profile_body.1
  9100.         print (map_sequence(desktop,thekey,1)) to profile_body.2
  9101.         output profile_body
  9102.     end_procedure
  9103.  
  9104.     procedure print_misc string descr string val
  9105.         send body_check
  9106.         [err] procedure_return
  9107.         print descr to profile_body.1
  9108.         print val to profile_body.2
  9109.         output profile_body
  9110.     end_procedure
  9111.  
  9112.     procedure print_colors string descr integer fg integer bg ;
  9113.         string palette_name
  9114.  
  9115.         pagecheck profile_colors.lines
  9116.         [pagebreak] output profile_header
  9117.         [err] procedure_return
  9118.         [pagebreak] output profile_colors_header
  9119.         [err] procedure_return
  9120.         print descr to profile_colors.1
  9121.         print (colorname(current_object,fg)) to profile_colors.2
  9122.         print (colorname(current_object,bg)) to profile_colors.3
  9123.         print palette_name to profile_colors.4
  9124.         output profile_colors
  9125.     end_procedure
  9126.  
  9127.     procedure print_map integer thekey
  9128.         local integer temp
  9129.  
  9130.         send body_check
  9131.         [not err pagebreak] output profile_mapping_header
  9132.         [err] procedure_return
  9133.         blankform profile_mapping_body
  9134.         autopage profile_mapping_body
  9135.         print (dec2hex(desktop,thekey))
  9136.         get upcase_value of key_map item thekey to temp
  9137.         print (dec2hex(desktop,temp))
  9138.         get locase_value of key_map item thekey to temp
  9139.         print (dec2hex(desktop,temp))
  9140.         get remap_value of key_map item thekey to temp
  9141.         print (dec2hex(desktop,temp))
  9142.         get attrib_value of key_map item thekey to temp
  9143.         if ((temp iand $040) = $040) print 'X'
  9144.         if ((temp iand $008) = $008) print 'X'
  9145.         if ((temp iand $002) = $002) print 'X'
  9146.         if ((temp iand $001) = $001) print 'X'
  9147.         if ((temp iand $010) = $010) print 'X'
  9148.         if ((temp iand $020) = $020) print 'X'
  9149.         if ((temp iand $100) = $100) print 'X'
  9150.         if ((temp iand $200) = $200) print 'X'
  9151.         if ((temp iand $400) = $400) print 'X'
  9152.         output profile_mapping_body
  9153.     end_procedure
  9154.  
  9155.     procedure reload_it
  9156.         local integer result
  9157.         local string myself
  9158.  
  9159.         [changes_made] begin
  9160.             get tell_em of (not_saved(current_object)) "resetting?" to result
  9161.             if result eq msg_ok send save_it
  9162.             else if result eq msg_negative indicate changes_made false
  9163.         end
  9164.         [not changes_made] begin
  9165.             send working "Resetting,"
  9166.             get module_name to myself
  9167.             append myself ' ' inifile
  9168.  
  9169.             send destroy_object to desktop 1
  9170.  
  9171.             reset_ini inifile
  9172.             
  9173.             chain myself
  9174.         end
  9175.     end_procedure
  9176.  
  9177.     procedure quitting
  9178.         local integer result
  9179.  
  9180.         indicate ok_to_exit as [not changes_made]
  9181.         [not ok_to_exit] begin
  9182.             get tell_em of (not_saved(current_object)) "exiting?" to result
  9183.             if result eq msg_ok begin
  9184.                 send save_it
  9185.                 indicate ok_to_exit true
  9186.             end
  9187.             else if result eq msg_negative indicate ok_to_exit true
  9188.         end
  9189.         [ok_to_exit] send exit_application to desktop
  9190.     end_procedure
  9191.  
  9192.     procedure check_changes returns integer
  9193.         local integer result
  9194.  
  9195.         indicate ok_to_exit as [not changes_made]
  9196.         [not ok_to_exit] begin
  9197.             get tell_em of (not_saved(current_object)) "exiting?" to result
  9198.             if result eq msg_ok begin
  9199.                 send save_it
  9200.                 indicate ok_to_exit true
  9201.             end
  9202.             else if result eq msg_negative indicate ok_to_exit true
  9203.         end
  9204.         [ok_to_exit] procedure_return 0
  9205.         procedure_return 1
  9206.     end_procedure
  9207.  
  9208.     procedure show_status
  9209.         send show_status to (main_status(current_object))
  9210.     end_procedure
  9211.  
  9212.     procedure activate
  9213.         forward send activate
  9214.         clearscreen 
  9215.         send done
  9216.     end_procedure
  9217.  
  9218.     on_key key_alt+key_f4 send quitting to main_object
  9219. end_object
  9220.  
  9221. procedure check_memory for desktop
  9222.     local integer mem_left
  9223.  
  9224.     memory mem_left
  9225.     set value of (main_footer(main_object.obj)) item 2 to mem_left
  9226. end_procedure
  9227.  
  9228. procedure activating for desktop
  9229.     send check_memory
  9230. end_procedure
  9231.  
  9232. procedure deactivating for desktop
  9233.     send check_memory
  9234. end_procedure
  9235.  
  9236. cmdline inifile
  9237. send reset_defaults (inifile <> "")
  9238. [err] begin
  9239.     send tell_em to not_done "open or read"
  9240.     indicate err false
  9241. end
  9242.  
  9243. send show_status to main_object
  9244.  
  9245. start_ui main_object
  9246. clearscreen
  9247. set_argument_size old_Size
  9248. abort
  9249.  
  9250.