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

  1. REM Prints a list of all accelerator keys [CorelSCRIPT 8]
  2. REM KeyboardShortcuts.csc  March, 1998
  3. REM ⌐ 1998 Corel Corporation. All rights reserved.
  4.  
  5. REM *****************************************************************************
  6. REM This script outputs a listing of all Ventura's accelerator keys in a 
  7. REM formatted Ventura publication.
  8. REM The list is written to a temporary file, then imported into Ventura.
  9. REM The user can cancel the operation at any time - the script will complete
  10. REM the listing in progress, then display the partial listing with a message 
  11. REM indicating the script was terminated at the user's request.
  12. REM *****************************************************************************
  13.  
  14. ' Create a temporary folder to provide a path for the include files
  15. '  -this enables the include files to be located 
  16. #addfol "..\..\Scripts"        
  17. #include "ScpConst.csi"        
  18. #include "VPConst.csi"        
  19.  
  20. ' Embed bitmaps if script is to be compiled into exe or csb formats
  21. ' -this will eliminate the need to include these files
  22. #ADDRESBMP IntroBMP "Bitmaps\IntroBMP.bmp"
  23. #ADDRESBMP LastBMP "Bitmaps\LastBMP.bmp"
  24. #ADDRESBMP FullPageBMP "Bitmaps\FullPage.bmp"
  25.  
  26. 'Constants for Dialog Return Values
  27. GLOBAL CONST DIALOG_RETURN_CANCEL% = 2
  28. GLOBAL CONST DIALOG_RETURN_NEXT% = 3
  29. GLOBAL CONST DIALOG_RETURN_BACK% = 4
  30. GLOBAL CONST DIALOG_RETURN_BROWSE% = 5
  31.  
  32. '/////FUNCTION & SUBROUTINE DECLARATIONS/////////////////////////////////////////
  33. DECLARE SUB RegQuery()
  34. DECLARE SUB ShowIntro()
  35. DECLARE SUB ShowProgress()
  36. DECLARE SUB ListingSub(BYVAL MenuIndexValue&)
  37. DECLARE SUB ProgressDialogEventHandler(BYVAL ControlID%, BYVAL Event%)
  38. DECLARE SUB Initialize()
  39.  
  40. '/////GLOBAL VARIABLES //////////////////////////////////////////////////////////
  41. GLOBAL VenturaRoot$                'root directory where Ventura is installed
  42. GLOBAL MenuCount&                'number of menus for which to obtain accelerator keys
  43. GLOBAL MenuIndex&                'index referencing the menu being queried
  44. GLOBAL MenuString$                'expression displayed in progess dialog indicating the name of the menu being queried
  45. GLOBAL MenuName$                'name of the menu in question
  46. GLOBAL ShowFinish AS BOOLEAN        'flag used to open/close progress indicator
  47. GLOBAL TempFile$                'temporary file containing the list of accelerator keys
  48.  
  49.  
  50. ' *******************************************************************************
  51. ' MAIN
  52. ' *******************************************************************************
  53. ON ERROR GOTO ErrorHandler
  54.  
  55. RegQuery                                    'get root directory where Ventura is installed
  56. ShowIntro                                    'display introduction dialog
  57. TempFile$ = GETTEMPFOLDER() & "AccelTmp.txt"        'temporary file containing accelerator information
  58. MenuString$ = "Writing keyboard accelerators...."    'initialize Menu string to first message
  59. ShowProgress                                'display progress dialog
  60. KILL TempFile$                                'remove temporary file
  61.  
  62. STOP
  63.  
  64. ErrorHandler:
  65. KILL TempFile$                                'remove temporary file
  66. SELECT CASE ErrNum
  67.     CASE 302
  68.         RESUME NEXT
  69.     CASE ELSE
  70.         MESSAGE "FATAL ERROR " & STR(ErrNum) & CHR(13) & "Script will now exit"
  71.         STOP
  72.     END SELECT
  73.  
  74.  
  75. ' *******************************************************************************
  76. ' RegQuery
  77. ' This subroutine queries the Registry to determine the root directory where 
  78. ' Ventura is installed.
  79. ' *******************************************************************************
  80. SUB RegQuery
  81. ON ERROR GOTO ErrorHandler
  82.  
  83.     'get Ventura config directory
  84.     VentDir$ = REGISTRYQUERY(HKEY_LOCAL_MACHINE,VENTURA_REGQUERY_CONST,"ConfigDir")     
  85.     
  86.     'isolate Ventura root directory from Ventura config directory
  87.     first% = 1
  88.     pos% = 1
  89.     DO WHILE first <> 0
  90.         first = INSTR(VentDir$, "\", first )
  91.         IF first <> 0 THEN
  92.             pos = first
  93.             first = first + 1
  94.         END IF
  95.     LOOP
  96.     VenturaRoot$ = LEFT(VentDir$, pos - 1)     'root directory where Ventura is installed
  97.  
  98. EXIT SUB
  99. ErrorHandler:
  100.     MESSAGE "Error reading registry:" & CHR(13) & RegString$
  101.     ErrNum = 800
  102. END SUB
  103.  
  104.  
  105. ' *******************************************************************************
  106. ' ShowIntro
  107. ' This subroutine displays the introduction dialog.
  108. ' PARAMS: None
  109. ' *******************************************************************************
  110. SUB ShowIntro
  111. BEGIN DIALOG OBJECT IntroDialog 290, 180, "Keyboard Accelerators Wizard", SUB IntroDialogEventHandler
  112.     PUSHBUTTON  181, 160, 46, 14, .NextButton, "&Next >"
  113.     CANCELBUTTON  234, 160, 46, 14, .CancelButton
  114.     PUSHBUTTON  135, 160, 46, 14, .BackButton, "< &Back"
  115.     TEXT  95, 10, 185, 20, .Text2, "This wizard produces a list of all keyboard accelerator keys."
  116.     TEXT  95, 40, 185, 18, .Text3, "To begin listing accelerator keys, click Next."
  117.     IMAGE  10, 10, 75, 130, .IntroImage
  118.     GROUPBOX  10, 150, 270, 5, .LineGroupBox
  119. END DIALOG
  120.     IntroDialog.IntroImage.SetImage "#IntroBMP"
  121.     IntroDialog.IntroImage.SetStyle STYLE_IMAGE_CENTERED
  122.  
  123.     IntroRet% = DIALOG(IntroDialog)
  124.     IF IntroRet% = DIALOG_RETURN_CANCEL THEN STOP    
  125. END SUB
  126.  
  127. ' *******************************************************************************
  128. ' IntroDialogEventHandler
  129. ' This subroutine responds to user interface with the introduction dialog.
  130. ' PARAMS: BYVAL ControlID% - Integer indicating the dialog control that is 
  131. '                            generating a dialog event.
  132. '        BYVAL Event% - Integer indicating the dialog event that has occurred.
  133. ' *******************************************************************************
  134. SUB IntroDialogEventHandler(BYVAL ControlID%, BYVAL Event%)
  135.     IF Event% = EVENT_INITIALIZATION THEN         
  136.         IntroDialog.BackButton.Enable FALSE 
  137.         IF ShowFinish = TRUE THEN IntroDialog.CancelButton.Enable FALSE
  138.     ENDIF
  139.     IF Event% = EVENT_MOUSE_CLICK THEN     
  140.         SELECT CASE ControlID%
  141.             CASE IntroDialog.NextButton.GetID()
  142.                 IntroDialog.CloseDialog DIALOG_RETURN_NEXT
  143.             CASE IntroDialog.CancelButton.GetID()
  144.                 IntroDialog.CloseDialog DIALOG_RETURN_CANCEL
  145.         END SELECT
  146.     ENDIF
  147. END FUNCTION
  148.  
  149.  
  150.  
  151. ' *******************************************************************************
  152. ' ShowProgress
  153. ' This function displays a progress bar indicating the progress of the operation.
  154. ' PARAMS: None
  155. '
  156. ' RETURNS: ShowProgress AS INTEGER - Integer indicating dialog return value.
  157. ' *******************************************************************************
  158. SUB ShowProgress
  159. BEGIN DIALOG OBJECT ProgressDialog 260, 60, "Custom Keyboard Accelerators", SUB ProgressDialogEventHandler
  160.     CANCELBUTTON  203, 42, 46, 16, .CancelButton
  161.     PROGRESS 54, 28, 195, 8, .Progress1
  162.     IMAGE  9, 8, 34, 30, .ProgressImage
  163.     TEXT  57, 12, 190, 12, .ProgressText, MenuString$
  164. END DIALOG
  165.  
  166.     ProgressDialog.SetTimer(1)        
  167.     ProgressDialog.Progress1.SetMinRange(1)
  168.     ProgressDialog.Progress1.SetMaxRange(1200)
  169.     ProgressDialog.Progress1.SetIncrement(1)
  170.     ProgressDialog.Progress1.SetValue(2)
  171.     ProgressDialog.ProgressImage.SetImage "#FullPageBMP"
  172.     ProgressDialog.ProgressText.SetText MenuString$
  173.     ProgressDialog.ProgressText.SetStyle STYLE_SUNKEN 
  174.     MenuIndex& = 1
  175.  
  176.     IntroDialog.IntroImage.SetImage "#LastBMP"
  177.     IntroDialog.NextButton.SetText "Exit" 
  178.  
  179.     ProgressDialogRet% = DIALOG(ProgressDialog)
  180.     IF ProgressDialogRet% = DIALOG_RETURN_CANCEL THEN 
  181.         IntroDialog.Text2.SetText "Wizard has been terminated at the user's request."
  182.         IntroDialog.Text3.SetText "Listing is incomplete."
  183.     ELSE
  184.         IntroDialog.Text2.SetText "Wizard has completed successfully"
  185.         IntroDialog.Text3.SetText "Listing is complete."
  186.     ENDIF
  187.     ShowFinish = TRUE
  188.     WITHOBJECT OBJECT_VENTURA8
  189.         .FileNew
  190.         .FrameFirst TRUE
  191.         .FileImportText TempFile$
  192.     END WITHOBJECT
  193.  
  194.     IntroRet% = DIALOG(IntroDialog)
  195.     IF IntroRet% = DIALOG_RETURN_CANCEL THEN STOP
  196. END FUNCTION
  197.  
  198.  
  199. ' *******************************************************************************
  200. ' ProgressDialogEventHandler
  201. ' This subroutine responds to user interface with the progress dialog.
  202. ' PARAMS:  ControlID% - identifies which dialog control to respond to.
  203. '          Event% - identifies which event to respond to (ie. mouse click, etc.).
  204. ' *******************************************************************************
  205. SUB ProgressDialogEventHandler(BYVAL ControlID%, BYVAL Event%)
  206.     IF Event% = EVENT_INITIALIZATION THEN 
  207.         Initialize
  208.     ENDIF
  209.     
  210.     IF Event% = EVENT_MOUSE_CLICK THEN
  211.          IF ControlID% = ProgressDialog.CancelButton.GetID() THEN ProgressDialog.CloseDialog(DIALOG_RETURN_CANCEL)
  212.     ENDIF
  213.  
  214.     IF Event = EVENT_TIMER_EVENT THEN    
  215.          ListingSub MenuIndex
  216.     ENDIF
  217. END SUB
  218.  
  219.  
  220. ' *******************************************************************************
  221. ' Initialize
  222. ' This subroutine creates a new publication and sets paragraph tags.
  223. ' PARAMS:  None
  224. ' *******************************************************************************
  225. SUB Initialize
  226. ON ERROR GOTO ErrorHandler
  227.     BEGINWAITCURSOR
  228.     WITHOBJECT OBJECT_VENTURA8
  229.     ENDWAITCURSOR
  230.         .SetVisible TRUE
  231.         MenuCount& = .CustomGetMenuCount()
  232.     END WITHOBJECT    
  233. EXIT SUB
  234. ErrorHandler:
  235.     MESSAGE "ERROR: " & STR(ErrNum) & CHR(13) & "Could not format paragraph tags."
  236.     ErrNum = 800
  237. END SUB
  238.  
  239.  
  240. ' *******************************************************************************
  241. ' ListingSub
  242. ' This subroutine lists the accelerator keys for each menu.
  243. ' PARAMS: MenuIndexValue&  - The index identifying the menu for which to print 
  244. '                            accelerator keys.
  245. ' *******************************************************************************
  246. SUB ListingSub(BYVAL MenuIndexValue&)
  247.     IF MenuIndex& > MenuCount& THEN 
  248.         ProgressDialog.CloseDialog(1)
  249.     ELSE
  250.         OPEN TempFile$ FOR APPEND AS 1
  251.         WITHOBJECT OBJECT_VENTURA8
  252.  
  253.             'list menu title - formatting with Minor Heading tag
  254.             .CustomGetMenuAt MenuIndex&, MenuName$, CmdCount&
  255.             MenuString$ = "Accelerators for " & MenuName$ &  " Menu" 
  256.             ProgressDialog.ProgressText.SetText MenuString$
  257.             PRINT #1, "@Minor Heading = " & MenuString$
  258.             
  259.             'list each menu item and its accelerator key - formatting with Bullet tag
  260.             CmdIndex& = 1
  261.             DO WHILE CmdIndex& <= CmdCount&
  262.                 .CustomGetCommandAt MenuIndex&, CmdIndex&, CmdName$, Accel$
  263.                 IF CmdName$ = "" THEN 
  264.                     CmdString$ = "----------------" & CHR(13) & CHR(10)
  265.                 ELSE
  266.                     CmdString$ = CmdName$ & CHR(9) & " ["  & Accel$ & "]" & CHR(13) & CHR(10)
  267.                 ENDIF
  268.                 PRINT #1,
  269.                 PRINT #1, "@Bullet = " &  CmdString$
  270.                 CmdIndex& = CmdIndex& + 1
  271.                 ProgressDialog.Progress1.step
  272.             LOOP
  273.             MenuIndex& = MenuIndex& + 1
  274.             PRINT #1,
  275.         END WITHOBJECT
  276.         CLOSE(1)
  277.     ENDIF
  278. END SUB
  279.  
  280.