home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1998 October A / Pcwk10a98.iso / Corel / Ventura8 / Ventura / Scripts / PrintOnePage.csc < prev    next >
Text File  |  1998-02-20  |  10KB  |  208 lines

  1. REM TEACHING SCRIPT - Prints each page to separate file [CorelSCRIPT 8]
  2. REM PrintOnePage.csc  February 5, 1998
  3. REM ⌐ 1998 Corel Corporation. All rights reserved.
  4.  
  5. REM ************************************************************************************
  6. REM  This script prints the active Ventura publication to a file, one page at a time,
  7. REM  using the default Ventura print style. To customize this script for your own 
  8. REM  use, edit the predefined GLOBAL CONST variables that follow this comment.
  9. REM  Note - There is no error checking implemented in this script. It is assumed that you
  10. REM         have an open publication, and provide valid values for the variables.
  11. REM *************************************************************************************
  12.  
  13. REM  Edit this value to reflect the name of the printer you wish to use.
  14. GLOBAL CONST PRINTER_NAME$ = "HP LaserJet 4M Plus,LPT1:"    ' Complete name and path of printer (get this from the Ventura print dialog, or by recording the .FilePRint command)
  15.  
  16. REM  Edit this value to specify the print style you wish to use.
  17. GLOBAL CONST PRINT_STYLE$ = "CorelVentura 8.0 Defaults"    ' Complete name and path of printer (get this from the Ventura print dialog, or by recording the .FilePRint command)
  18.  
  19. REM  Edit this value to specify the directory in which to place the print files.
  20. GLOBAL CONST DEFAULT_DIRECTORY$ = "C:\Temp\"                ' Directory in which to place Print files
  21.  
  22. REM  Edit this variable to specify the root name of the print file.
  23. GLOBAL CONST PRINT_FILE$ = "PrintFile"                    ' Root name of print file (eg. PrintFile -> PrintFile1.prn)
  24.  
  25. ' This section declares the subroutines used within the script
  26. ' Note - The EventHandler subroutine is not declared here, as it is defined after being called. 
  27. DECLARE SUB GetPrintInfo        
  28. DECLARE SUB PrintPub
  29. DECLARE SUB PrintPages
  30.  
  31. ' This section defines some values that will be used further down into the script
  32. #DEFINE PRINT_SPECIFIED_PAGES        3                ' Used by FilePrint command to indicate the range of pages to print
  33. #DEFINE OBJECT_VENTURA "CorelVentura.Automation.8"    ' For ease of porting to VP8
  34.  
  35. ' Constants for Dialog Return Values
  36. GLOBAL CONST DIALOG_RETURN_CANCEL% = 2
  37. GLOBAL CONST DIALOG_RETURN_NEXT% = 3
  38.  
  39. ' Constants for Dynamic Dialog Events
  40. #DEFINE EVENT_INITIALIZATION       0
  41. #DEFINE EVENT_CHANGE_IN_CONTENT     1
  42. #DEFINE EVENT_MOUSE_CLICK          2
  43.  
  44. ' Constants for Dynamic Dialog Styles
  45. #DEFINE STYLE_SUNKEN  &h0100
  46.  
  47. ' Constants for print range
  48. GLOBAL CONST PRINT_PUB% = 0    ' variable indicating print range as entire publication
  49. GLOBAL CONST PRINT_PAGE% = 1    ' variable indicating print range as specified pages
  50.  
  51. ' Global variables(need to be global to be used by Event Handler)
  52. GLOBAL StartPage$    ' the first page in range (used if pages is the selected range)
  53. GLOBAL EndPage$    ' the last page in range (used if pages is the selected range)
  54. StartPage$="1"
  55. EndPage$="1"
  56.  
  57. '//// MAIN //////////////////////////////////////////////////////////////////
  58. GetPrintInfo
  59.  
  60.  
  61.  
  62. ' **************************************************************************************
  63. ' PrintPub
  64. ' This subroutine prints the entire publication, one page at a time.
  65. ' PARAMS: None
  66. ' **************************************************************************************
  67. SUB PrintPub
  68.     WITHOBJECT OBJECT_VENTURA
  69.         ' Repeat for every chapter in the publication
  70.         NumberOfChapters& = .ChapterCount()        ' get the number of chapters
  71.         FOR CurrentChapter& = 1 TO NumberOfChapters&
  72.             ' repeat for every page in the chapter
  73.             NumberOfPages& = .ChapterPageCount()    ' get the number of pages
  74.             FOR CurrentPage& = 1 TO NumberOfPages&
  75.                 PrintFileName$ = DEFAULT_DIRECTORY$ & PRINT_FILE$ & CurrentPage& & ".prn"        ' create a file name for the print file
  76.                 .FilePrint PRINT_SPECIFIED_PAGES, CurrentPage&, CurrentPage&, .PrinterName = PRINTER_NAME, .PrintToFile = PrintFileName$, .PrintStyleName = PRINT_STYLE
  77.             NEXT CurrentPage&
  78.         NEXT CurrentChapter&
  79.     END WITHOBJECT
  80. END SUB
  81.  
  82.  
  83. ' **************************************************************************************
  84. ' PrintPages
  85. ' This subroutine prints the specified range of pages, one page at a time.
  86. ' PARAMS: None
  87. ' **************************************************************************************
  88. SUB PrintPages
  89.     WITHOBJECT OBJECT_VENTURA
  90.         ' repeat for the specified range of pages
  91.         FOR CurrentPage& = INT(StartPage$) TO INT(EndPage$)
  92.             PrintFileName$ = DEFAULT_DIRECTORY$ & PRINT_FILE$ & CurrentPage& & ".prn"        ' create a file name for the print file
  93.             .FilePrint PRINT_SPECIFIED_PAGES, CurrentPage&, CurrentPage&, .PrinterName = PRINTER_NAME, .PrintToFile = PrintFileName$, .PrintStyleName = PRINT_STYLE
  94.         NEXT CurrentPage&
  95.     END WITHOBJECT
  96. END SUB
  97.  
  98.  
  99. ' **************************************************************************************
  100. ' GetPrintInfo
  101. ' This subroutine displays the PrintInfo dialog and obtains the range of pages to be printed.
  102. ' PARAMS: None
  103. ' **************************************************************************************
  104. SUB GetPrintInfo
  105. ' this section (from BEGIN to END DIALOG) defines the dialog, but does not show it or enable it.
  106. BEGIN DIALOG OBJECT PrintInfoDialog 200, 125, "Page Print Wizard", SUB PrintInfoDialogEventHandler
  107.     OPTIONGROUP .PrintRangeOptionGroup%
  108.         OPTIONBUTTON  25, 39, 60, 10, .PublicationOptionButton, "Pu&blication"
  109.         OPTIONBUTTON  25, 55, 50, 10, .PagesOptionButton, "Pa&ges"
  110.     TEXT  105, 40, 20, 10, .Text3, "&Start:"     ' position label before control to enable accelerator key
  111.     TEXTBOX  132, 38, 35, 13, .StartPageText
  112.     TEXT  105, 56, 20, 10, .Text4, "&End:"          ' position label before control to enable accelerator key
  113.     TEXTBOX  132, 54, 35, 13, .EndPageText
  114.     TEXT  13, 81, 25, 10, .Text6, "&Printer:"
  115.     PUSHBUTTON  176, 79, 14, 14, .HelpButton, "?"
  116.     PUSHBUTTON  89, 107, 46, 14, .OKButton, "OK"
  117.     PUSHBUTTON  144, 107, 46, 14, .CancelButton, "Cancel"
  118.     TEXT  10, 5, 180, 20, .Text1, "This script prints the active Ventura publication, one page at a time."
  119.     GROUPBOX  10, 25, 180, 48, .GroupBox1, "Print Range:"
  120.     TEXT  45, 80, 132, 12, .PrinterText, PRINTER_NAME$
  121.     GROUPBOX  8, 99, 182, 5, .GroupBox2
  122. END DIALOG
  123.  
  124.     ' this section enables the dialog 
  125.     PrintInfoDialog.PrinterText.SetStyle STYLE_SUNKEN    ' set text displaying printer to sunken (for appearance purposes only)
  126.     PrintInfoRet% = DIALOG(PrintInfoDialog)            ' show the print info dialog
  127.     SELECT CASE PrintInfoRet% 
  128.         CASE DIALOG_RETURN_CANCEL         ' dialog return is Cancel, so stop script execution
  129.             STOP
  130.         CASE DIALOG_RETURN_NEXT            ' dialog return is OK, so continue script execution
  131.             PrintRange& = PrintInfoDialog.PrintRangeOptionGroup.GetValue()
  132.             IF PrintRange& = PRINT_PUB THEN 
  133.                 PrintPub                ' user selected to print entire publication
  134.             ELSE
  135.                 PrintPages            ' user selected to print a range of pages
  136.             ENDIF
  137.     END SELECT
  138. END SUB
  139.  
  140.  
  141. ' **************************************************************************************
  142. ' PrintInfoDialogEventHandler
  143. ' This subroutine handles events for the PrintInfo dialog.
  144. ' PARAMS: BYVAL ControlID% - Integer indicating the dialog control that is generating a dialog event.
  145. '        BYVAL Event% - Integer indicating the dialog event that has occurred in the dialog box
  146. ' **************************************************************************************
  147. SUB PrintInfoDialogEventHandler(BYVAL ControlID%, BYVAL Event%)
  148.     ' initialize dialog controls, disabling the start and end page controls, unless user selects to print a page range
  149.     IF Event% = EVENT_INITIALIZATION THEN
  150.         PrintRange& = PrintInfoDialog.PrintRangeOptionGroup.GetValue()
  151.         IF PrintRange& = PRINT_PUB THEN 
  152.             PrintInfoDialog.StartPageText.Enable FALSE
  153.             PrintInfoDialog.EndPageText.Enable FALSE
  154.             PrintInfoDialog.Text3.Enable FALSE
  155.             PrintInfoDialog.Text4.Enable FALSE
  156.         ELSE
  157.             PrintInfoDialog.StartPageText.Enable TRUE
  158.             PrintInfoDialog.EndPageText.Enable TRUE
  159.             PrintInfoDialog.StartPageText.SetText StartPage$
  160.             PrintInfoDialog.EndPageText.SetText EndPage$
  161.             PrintInfoDialog.Text3.Enable TRUE
  162.             PrintInfoDialog.Text4.Enable TRUE
  163.         ENDIF
  164.     ENDIF
  165.     
  166.     ' obtain values for start and end page controls if user enters values in them (only valid if enabled)
  167.     IF Event% = EVENT_CHANGE_IN_CONTENT THEN
  168.         SELECT CASE ControlID%
  169.             CASE PrintInfoDialog.StartPageText.GetID()
  170.                 StartPage$ = PrintInfoDialog.StartPageText.GetText()
  171.             CASE PrintInfoDialog.EndPageText.GetID()
  172.                 EndPage$ = PrintInfoDialog.EndPageText.GetText()
  173.         END SELECT
  174.     ENDIF
  175.  
  176.     ' respond to user mouse-clicking on a control 
  177.     IF Event% = EVENT_MOUSE_CLICK THEN
  178.         SELECT CASE ControlID%
  179.             CASE PrintInfoDialog.CancelButton.GetID()
  180.                 PrintInfoDialog.CloseDialog DIALOG_RETURN_CANCEL
  181.             CASE PrintInfoDialog.OKButton.GetID()
  182.                 StartPage$ = PrintInfoDialog.StartPageText.GetText()
  183.                 IF StartPage$ = "" THEN StartPage$ = "0"
  184.                 EndPage$ = PrintInfoDialog.EndPageText.GetText()
  185.                 IF EndPage$ = "" THEN EndPage$ = StartPage$
  186.                 PrintInfoDialog.CloseDialog DIALOG_RETURN_NEXT
  187.             CASE PrintInfoDialog.HelpButton.GetID()
  188.                 MESSAGE "To specify a different printer, edit the script."
  189.         END SELECT
  190.         ' disable the start and end page controls, unless user selects to print a page range in which case the controls are enabled    
  191.         PrintRange& = PrintInfoDialog.PrintRangeOptionGroup.GetValue()
  192.         IF PrintRange& = PRINT_PUB THEN 
  193.             PrintInfoDialog.StartPageText.Enable FALSE
  194.             PrintInfoDialog.EndPageText.Enable FALSE
  195.             PrintInfoDialog.Text3.Enable FALSE
  196.             PrintInfoDialog.Text4.Enable FALSE
  197.         ELSE
  198.             PrintInfoDialog.StartPageText.Enable TRUE
  199.             PrintInfoDialog.EndPageText.Enable TRUE
  200.             PrintInfoDialog.StartPageText.SetText StartPage$
  201.             PrintInfoDialog.EndPageText.SetText EndPage$
  202.             PrintInfoDialog.Text3.Enable TRUE
  203.             PrintInfoDialog.Text4.Enable TRUE
  204.         ENDIF
  205.     ENDIF
  206. END SUB
  207.  
  208.