home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1998 October A / Pcwk10a98.iso / Corel / Ventura8 / Ventura / Scripts / HyphenationEditor.csc < prev    next >
Text File  |  1998-07-08  |  12KB  |  321 lines

  1. REM Edits the Hyphenation Exception List[CorelSCRIPT 8]
  2. REM HyphenationEditor.csc  February 4, 1998
  3. REM ⌐ 1998 Corel Corporation. All rights reserved.
  4.  
  5. REM *****************************************************************************
  6. REM This script helps edit the VENTURA Hyphenation Exception List (HyphUser.dic).
  7. REM VENTURA must be closed in order for the edit to take effect.
  8. REM Note - This script can be compiled as an executable, then launched from 
  9. REM Explorer or a shortcut on the desktop.
  10. REM *****************************************************************************
  11.  
  12. ' Create a temporary folder to provide a path for the include files
  13. '  -this enables the include files to be located 
  14. #addfol "..\..\Scripts"
  15. #include "ScpConst.csi"
  16. #include "VPConst.csi"
  17.  
  18. ' Embed bitmaps if script is to be compiled into exe or csb formats
  19. ' -this will eliminate the need to include these files
  20. #ADDRESBMP Step2BMP "Bitmaps\Step2BMP.bmp"
  21. #ADDRESBMP Step3BMP "Bitmaps\Step3BMP.bmp"
  22.  
  23. 'Constants for Dialog Return Values
  24. GLOBAL CONST DIALOG_RETURN_CANCEL% = 2
  25. GLOBAL CONST DIALOG_RETURN_NEXT% = 3
  26. GLOBAL CONST DIALOG_RETURN_BACK% = 4
  27. GLOBAL CONST DIALOG_RETURN_BROWSE% = 5
  28.  
  29.  
  30. '/////FUNCTION & SUBROUTINE DECLARATIONS/////////////////////////////////////////////////
  31. DECLARE FUNCTION FindWindow LIB "user32" (BYVAL lpClassName AS STRING, BYVAL lpWindowName AS LONG) AS LONG ALIAS "FindWindowA"
  32. DECLARE SUB RegQuery()
  33. DECLARE FUNCTION GetEditOption%()
  34. DECLARE FUNCTION GetEdit%()
  35. DECLARE FUNCTION PerformEdit%()
  36. DECLARE FUNCTION IsVPRunning() AS BOOLEAN
  37.  
  38. '/////GLOBAL VARIABLES & CONSTANTS////////////////////////////////////////////////////////
  39. GLOBAL VenturaRoot$            'root directory where Ventura is 
  40. GLOBAL HyphFile$            'name of hyphenation exception list file to edit
  41. GLOBAL TempFile$            'temporary file containing edit information
  42.  
  43. '/////LOCAL DECLARATIONS//////////////////////////////////////////////////////////////////
  44. CONST MAXSTEP% = 3            'maximum number of pages in the Wizard
  45. DIM DialogReturn%             'identifies user's selection for next step in Wizard
  46. DIM NextStep%                'specifies which page appears next in the Wizard
  47.  
  48. '/////MAIN////////////////////////////////////////////////////////////////////////////////
  49. ON ERROR GOTO ErrorHandler
  50.  
  51. RegQuery                                        'get root directory where Ventura is 
  52. TempFile$ = GETTEMPFOLDER() & "DictTemp.txt"            'temporary file to hold dictionary information
  53. HyphFile$ = VenturaRoot$ & "\Ventura\HyphUser.dic"    'name of file containing hyphenation exception list
  54.  
  55. 'this section controls traversal throught the Wizard pages
  56. NextStep% = 1
  57. DO
  58.     SELECT CASE NextStep%
  59.         CASE 1: DialogReturn% = GetEditOption()        'prompt user for type of edit 
  60.         CASE 2: DialogReturn% = GetEdit()            'prompt user for edit information
  61.         CASE 3: DialogReturn% = PerformEdit()        'write edit information to dictionary file
  62.     END SELECT
  63.     NextStep% = NextStep% + DialogReturn%
  64. LOOP UNTIL NextStep% = MAXSTEP + 1
  65.  
  66. ExitScript:
  67. STOP
  68.  
  69. ErrorHandler:
  70. SELECT CASE ErrNum
  71.     CLOSE
  72.     KILL TempFile$
  73.     CASE 800
  74.         MESSAGE "FATAL ERROR" & CHR(13) & "Script will now exit."
  75.         RESUME AT ExitScript
  76.     CASE ELSE
  77.         MESSAGE "ERROR: " & STR(ErrNum) & CHR(13) & "Script will now exit."
  78.         RESUME AT ExitScript
  79.     END SELECT
  80.  
  81.  
  82. ' *******************************************************************************
  83. ' RegQuery
  84. ' This subroutine queries the Registry to determine the root directory where 
  85. ' Ventura is .
  86. ' *******************************************************************************
  87. SUB RegQuery
  88. ON ERROR GOTO ErrorHandler
  89.     'get Ventura config directory
  90.     VentDir$ = REGISTRYQUERY(HKEY_LOCAL_MACHINE,VENTURA_REGQUERY_CONST, "ConfigDir")     
  91.     
  92.     'isolate Ventura root directory from Ventura config directory
  93.     first% = 1
  94.     pos% = 1
  95.     DO WHILE first <> 0
  96.         first = INSTR(VentDir$, "\", first )
  97.         IF first <> 0 THEN
  98.             pos = first
  99.             first = first + 1
  100.         END IF
  101.     LOOP
  102.     VenturaRoot$ = LEFT(VentDir$, pos - 1)     'root directory where Ventura is 
  103.  
  104. EXIT SUB
  105. ErrorHandler:
  106.     MESSAGE "Error reading registry:" & CHR(13) & RegString$
  107.     ErrNum = 800
  108. END SUB
  109.  
  110.  
  111. ' *******************************************************************************
  112. ' IsVPRunning
  113. ' This function checks to see if Ventura is running.
  114. '
  115. ' PARAMS: None
  116. '
  117. ' RETURNS: IsVPRunning AS BOOLEAN - TRUE if Ventura is running; otherwise FALSE.
  118. ' *******************************************************************************
  119. FUNCTION IsVPRunning() AS BOOLEAN
  120.     WinCount& = FindWindow("Ventura 8.0", 0)
  121.  
  122.     IF WinCount& <> 0 THEN     
  123.         IsVPRunning = TRUE
  124.     ELSE
  125.         IsVPRunning = FALSE
  126.     ENDIF
  127. END FUNCTION
  128.  
  129.  
  130. ' *******************************************************************************
  131. ' GetEditOption
  132. ' This function ensures that VENTURA is not running before beginning the edit.
  133. ' If VENTURA is running, the user is advised to close it before proceeding.
  134. '
  135. ' PARAMS: None
  136. '
  137. ' RETURNS: ShowProgress AS INTEGER - Integer indicating dialog return value.
  138. ' *******************************************************************************
  139. FUNCTION GetEditOption%
  140.  
  141. BEGIN DIALOG OBJECT GetEditOptionDialog 290, 180, "Hyphenation Exception List Editor", SUB GetEditOptionDialogEventHandler
  142.     PUSHBUTTON  181, 160, 46, 14, .NextButton, "&Next >"
  143.     CANCELBUTTON  234, 160, 46, 14, .CancelButton
  144.     PUSHBUTTON  135, 160, 46, 14, .BackButton, "< &Back"
  145.     TEXT  95, 12, 185, 20, .Text3, "This wizard helps you edit the Hyphenation Exception List."
  146.     GROUPBOX  10, 150, 270, 5, .LineGroupBox
  147.     IMAGE  10, 10, 75, 130, .GetEditOptionImage
  148.     TEXT  95, 30, 185, 40, .Text4, "To begin, click Next."
  149.     TEXT  94, 125, 188, 20, .Text5, "NOTE: Ensure that VENTURA is closed before proceeding."
  150. END DIALOG
  151.  
  152.     GetEditOptionDialog.GetEditOptionImage.SetImage "#Step2BMP"
  153.     GetEditOptionDialog.GetEditOptionImage.SetStyle STYLE_IMAGE_CENTERED
  154.     GetEditOptionDialog.SetStyle STYLE_VISIBLE
  155.  
  156.     GetEditOptionRet% = Dialog(GetEditOptionDialog)
  157.     SELECT CASE GetEditOptionRet%
  158.         CASE DIALOG_RETURN_CANCEL    
  159.             STOP
  160.         CASE DIALOG_RETURN_NEXT        
  161.             GetEditOptionDialog.SetVisible FALSE
  162.             COPY HyphFile$, TempFile$, 0
  163.             GetEditOption = 1
  164.     END SELECT
  165. END FUNCTION
  166.  
  167.  
  168. ' *******************************************************************************
  169. ' GetEditOptionDialogEventHandler
  170. ' This subroutine responds to user interface with the get edit option dialog.
  171. ' PARAMS: BYVAL ControlID% - Integer indicating the dialog control that is 
  172. '                            generating a dialog event.
  173. '        BYVAL Event% - Integer indicating the dialog event that has occurred.
  174. ' *******************************************************************************
  175. SUB GetEditOptionDialogEventHandler(BYVAL ControlID%, BYVAL Event%)
  176.     IF Event% = EVENT_INITIALIZATION  THEN        
  177.         GetEditOptionDialog.Text4.SetVisible TRUE
  178.         GetEditOptionDialog.BackButton.Enable FALSE
  179.         GetEditOptionDialog.Text5.SetVisible FALSE
  180.  
  181.         'IF Ventura is running, prompt user to close the app before continuing.
  182.         IF IsVPRunning() = TRUE THEN
  183.             GetEditOptionDialog.Text3.SetText "You cannot run this script when VENTURA is open."
  184.             GetEditOptionDialog.Text4.SetText "To run this script, close VENTURA, navigate to the VENTURA\SCRIPTS folder, and double-click HyphenationEditor.CSC."
  185.             GetEditOptionDialog.NextButton.Enable FALSE
  186.             EXIT SUB
  187.         ENDIF
  188.     ENDIF
  189.  
  190.     IF Event% = EVENT_MOUSE_CLICK THEN        
  191.         SELECT CASE ControlID
  192.             CASE GetEditOptionDialog.NextButton.GetID()
  193.                 GetEditOptionDialog.closedialog DIALOG_RETURN_NEXT
  194.             CASE GetEditOptionDialog.CancelButton.GetID()
  195.                 GetEditOptionDialog.closedialog DIALOG_RETURN_CANCEL
  196.         END SELECT
  197.     ENDIF
  198. END SUB
  199.         
  200.  
  201. ' *******************************************************************************
  202. ' GetEdit
  203. ' This function displays the contents of the user selected dictionary, and prompts
  204. ' the user to add or delete words. The changes are written to the dictionary file
  205. ' when the user selects the 'Save Edit' button.
  206. ' The list is sorted alphabetically.
  207. ' PARAMS: None
  208. '
  209. ' RETURNS: GetEdit AS INTEGER - Integer indicating dialog return value.
  210. ' *******************************************************************************
  211. FUNCTION GetEdit%
  212. BEGIN DIALOG OBJECT GetEditDialog 290, 180, "Hyphenation Exception List Editor", SUB GetEditDialogEventHandler
  213.     TEXTBOX  95, 46, 130, 14, .EditTextBox
  214.     PUSHBUTTON  233, 47, 46, 14, .AcceptPushButton, "&Accept"
  215.     LISTBOX  95, 66, 185, 59, .EditListBox
  216.     PUSHBUTTON  135, 160, 46, 14, .BackButton, "< &Back"
  217.     PUSHBUTTON  181, 160, 46, 14, .NextButton, "&Save Edit"
  218.     CANCELBUTTON  234, 160, 46, 14, .CancelButton
  219.     TEXT  95, 3, 185, 18, .Text2, "To add a new word to the exception list, type the word in the text box and click Accept."
  220.     GROUPBOX  10, 150, 270, 5, .LineGroupBox
  221.     TEXT  130, 130, 150, 12, .StatusText, ""
  222.     TEXT  95, 130, 28, 12, .Text8, "Editing:"
  223.     IMAGE  10, 10, 75, 130, .GetEditImage
  224.     TEXT  94, 21, 184, 19, .Text4, "To edit an existing entry, double-click the word, make the necessary changes in the text box, and click Accept."
  225. END DIALOG
  226.  
  227.     GetEditDialog.GetEditImage.SetImage "#Step3BMP"
  228.     GetEditDialog.GetEditImage.SetStyle STYLE_IMAGE_CENTERED
  229.     GetEditDialog.EditListBox.SetStyle STYLE_SORTING    'sort list alphabetically
  230.     GetEditDialog.StatusText.SetStyle STYLE_SUNKEN
  231.     GetEditRet% = DIALOG(GetEditDialog)
  232.     
  233.     SELECT CASE GetEditRet%
  234.         CASE DIALOG_RETURN_CANCEL    
  235.             KILL TempFile$
  236.             STOP
  237.         CASE DIALOG_RETURN_NEXT        
  238.             GetEdit = 1
  239.         CASE DIALOG_RETURN_BACK         
  240.             KILL TempFile$
  241.             GetEdit = -1
  242.     END SELECT
  243. END FUNCTION
  244.  
  245.  
  246. ' *******************************************************************************
  247. ' GetEditDialogEventHandler
  248. ' This subroutine responds to user interface with the Get Edit dialog.
  249. ' PARAMS:  ControlID% - identifies which dialog control to respond to.
  250. '          Event% - identifies which event to respond to (ie. mouse click, etc.).
  251. ' *******************************************************************************
  252. SUB GetEditDialogEventHandler(BYVAL ControlID%, BYVAL Event%)
  253.     IF Event% = EVENT_INITIALIZATION THEN     
  254.         GetEditDialog.EditTextBox.SetText ""
  255.         GetEditDialog.StatusText.SetText HyphFile$
  256.         OPEN TempFile$ FOR INPUT AS 1
  257.         WHILE NOT EOF(1) 
  258.             LINE INPUT #1, Word$
  259.             GetEditDialog.EditListBox.AddItem Word$
  260.         WEND 
  261.         CLOSE
  262.     ENDIF
  263.  
  264.     IF Event% = EVENT_MOUSE_CLICK THEN     
  265.         SELECT CASE ControlID%
  266.             CASE GetEditDialog.NextButton.GetID()        
  267.                 ItemCount& = GetEditDialog.EditListBox.GetItemCount()
  268.                 OPEN TempFile$ FOR OUTPUT AS 2
  269.                 FOR i% = 1 TO ItemCount&                
  270.                     Word$ = GetEditDialog.EditListBox.GetItem(i%)
  271.                     PRINT #2, Word
  272.                 NEXT i%
  273.                 CLOSE
  274.                 GetEditDialog.closedialog DIALOG_RETURN_NEXT    
  275.  
  276.             CASE GetEditDialog.BackButton.GetID()        
  277.                 GetEditDialog.closedialog DIALOG_RETURN_BACK
  278.  
  279.             CASE GetEditDialog.CancelButton.GetID()            
  280.                 GetEditDialog.closedialog DIALOG_RETURN_CANCEL    
  281.  
  282.             CASE GetEditDialog.AcceptPushButton.GetID()
  283.                 Entry$ = LCASE(GetEditDialog.EditTextBox.GetText())    'need to convert to lowercase as algorithm requires this
  284.                  IF Entry$ <> "" THEN GetEditDialog.EditListBox.AddItem Entry$
  285.                 GetEditDialog.EditTextBox.SetText ""
  286.         END SELECT
  287.     ENDIF
  288.  
  289.     IF Event% = EVENT_DBL_MOUSE_CLICK THEN         
  290.         SELECT CASE ControlID%
  291.             CASE GetEditDialog.EditListBox.GetID()
  292.                 indx% = GetEditDialog.EditListBox.GetSelect()                                    
  293.                 GetEditDialog.EditTextBox.SetText GetEditDialog.EditListBox.GetItem(indx%)
  294.                 GetEditDialog.EditListBox.RemoveItem indx%                            
  295.         END SELECT
  296.     ENDIF
  297. END SUB
  298.  
  299.  
  300. ' *******************************************************************************
  301. ' PerformEdit
  302. ' This function saves the edit to the original dictionary file.
  303. ' A message is displayed indicating the success/failure of the operation.
  304. ' PARAMS: None
  305. ' *******************************************************************************
  306. FUNCTION PerformEdit%
  307.     CopyStatus = COPY(TempFile$, HyphFile$, 0)
  308.     IF CopyStatus = TRUE THEN
  309.         MESSAGE "Your edit was successful."
  310.     ELSE
  311.         MESSAGE "Your edit was not successful."
  312.     ENDIF    
  313.     KILL TempFile$
  314.     PerformEdit% = 1
  315. END FUNCTION
  316.  
  317.