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

  1. REM Sets up guidelines [CorelSCRIPT 8]
  2. REM GuideWizard.csc  February 6, 1998
  3. REM ⌐ 1998 Corel Corporation. All rights reserved.
  4.  
  5. REM **************************************************************************************
  6. REM This script creates guidelines. The user can choose from a selection of pre-defined
  7. REM grids, or create their own custom look.
  8. REM **************************************************************************************
  9.  
  10. ' Create a temporary folder to provide a path for the include files
  11. '  -this enables the include files to be located 
  12. #addfol "..\..\Scripts"
  13. #include "ScpConst.csi"
  14. #include "VPConst.csi"
  15.  
  16. ' Embed bitmaps if script is to be compiled into exe or csb formats
  17. ' -this will eliminate the need to include these files
  18. #ADDRESBMP IntroBMP "Bitmaps\IntroBMP.bmp"
  19. #ADDRESBMP Step2BMP "Bitmaps\Step2BMP.bmp"
  20. #ADDRESBMP Grid1BMP "Bitmaps\Grid1.bmp"
  21. #ADDRESBMP Grid2BMP "Bitmaps\Grid2.bmp"
  22. #ADDRESBMP Grid3BMP "Bitmaps\Grid3.bmp"
  23. #ADDRESBMP Grid4BMP "Bitmaps\Grid4.bmp"
  24. #ADDRESBMP Grid5BMP "Bitmaps\Grid5.bmp"
  25. #ADDRESBMP Grid6BMP "Bitmaps\Grid6.bmp"
  26.  
  27. 'Constants for Dialog Return Values
  28. GLOBAL CONST DIALOG_RETURN_CANCEL% = 2
  29. GLOBAL CONST DIALOG_RETURN_NEXT% = 3
  30. GLOBAL CONST DIALOG_RETURN_BACK% = 4
  31.  
  32. 'Constants for pre-defined grids or style
  33. GLOBAL CONST COLS3_ROWS6% = 0        '3 columns, 5 rows
  34. GLOBAL CONST COLS3_ROWS5% = 1        '3 columns, 5 rows
  35. GLOBAL CONST COLS4_ROWS5% = 2         '4 columns, 5 rows
  36. GLOBAL CONST COLS12_ROWS9% = 3    '12 columns, 9 rows
  37. GLOBAL CONST COLS6_ROWS17% = 4    '6 columns, 17 rows
  38. GLOBAL CONST COLS7_ROWS9% = 5        '7 columns, 9 rows
  39. GLOBAL CONST CUSTOM_GUIDES% = 6    'Custom
  40.  
  41. 'Constants for unit selection
  42. GLOBAL CONST UNITS_INCHES% = 1
  43. GLOBAL CONST UNITS_MILLIMETERS% = 2
  44. GLOBAL CONST UNITS_PICAS_POINTS% = 3
  45. GLOBAL CONST UNITS_POINTS% = 4
  46. GLOBAL CONST UNITS_CICEROS_DIDOTS% = 5
  47. GLOBAL CONST UNITS_DIDOTS% = 6
  48.  
  49. 'Constants for page view
  50. GLOBAL CONST PAGE_CURRENT% = 0
  51. GLOBAL CONST PAGE_MASTER% = 1
  52.  
  53. '/////FUNCTION & SUBROUTINE DECLARATIONS/////////////////////////////////////////
  54. DECLARE SUB RegQuery()
  55. DECLARE SUB MakeGuides()
  56. DECLARE FUNCTION ShowIntro%()
  57. DECLARE FUNCTION GetStyle%()
  58. DECLARE FUNCTION GetCustom%()
  59. DECLARE FUNCTION ShowFinish%()
  60. DECLARE FUNCTION ToCicerosDidots#(Value#)
  61. DECLARE FUNCTION FromCicerosDidots&(Value#)
  62. DECLARE FUNCTION ToPicasPoints#(Value#)
  63. DECLARE FUNCTION FromPicasPoints&(Value#)
  64.  
  65. '/////GLOBAL VARIABLES //////////////////////////////////////////////////////////
  66. GLOBAL VenturaRoot$                'root directory where Ventura is installed
  67. GLOBAL StyleOption&                'identifes which style (or pre-defined grid) to create
  68. GLOBAL Columns%                'number of guide columns
  69. GLOBAL Rows%                    'number of guide rows
  70. GLOBAL LeftMargin#                 'spacing for the left margin
  71. GLOBAL RightMargin#                'spacing for the right margin
  72. GLOBAL TopMargin#                'spacing for the top margin
  73. GLOBAL BottomMargin#            'spacing for the bottom margin
  74. GLOBAL HorzGutter#                'spacing for horizontal gutters
  75. GLOBAL VertGutter#                'spacing for vertical gutters
  76. GLOBAL GutterUnits%                'units specifying gutter spacing
  77. GLOBAL PrevGutterUnits%            'previous units specifying gutter spacing (used for conversions)
  78. GLOBAL SpinDoubleMode AS BOOLEAN    'flag indicating mode of spin box: TRUE enable double mode; FALSE disable double mode
  79. GLOBAL SpinPrecision&            'identifies amount of precision for spin control
  80. GLOBAL SpinIncrement#            'identifes amount of increment for spin control
  81. GLOBAL ShowGuides&                'indicates whether guides are shown: 1-show guides; 0-don't show guides
  82. GLOBAL LockGuides&                'indicates whether guides are locked: 1-lock guides; 0-don't lock guides
  83. GLOBAL PageOption&                'identifies the page view to use: 0-Page Layout; 1-Master Page
  84. GLOBAL UseImage$                'identifies the image to display in dialog box (represents user's selection of pre-defined guide)
  85. GLOBAL RemoveExisting&            'indicates whether existing guides are to be removed: 1-remove existing guides; 0-don't remove existing guides
  86. GLOBAL Units$(6)                'array containing list of available units
  87. Units$(1) = "inches"            
  88. Units$(2) = "millimeters"
  89. Units$(3) = "picas, points"
  90. Units$(4) = "points"
  91. Units$(5) = "ciceros, didots"
  92. Units$(6) = "didots"
  93.  
  94. Rows% = 1                        'initialize number of guide rows to 1
  95. Columns% = 1                    'initialize number of guide columns to 1
  96. GutterUnits% = 1                'initialize units to first element - inches
  97. HorzGutter# = FROMINCHES(0.05)    'initialize horizontal gutter to .05 of an inch
  98. VertGutter# = FROMINCHES(0.05)    'initialize vertical gutter to .05 of an inch
  99. ShowGuides& = 1                'initialize guides to be shown
  100. RemoveExisting& = 1                'initialize existing guides to be removed
  101.  
  102. '////// LOCAL VARIABLES //////////////////////////////////////////////////////////////////////////////
  103. MAXSTEP = 4            'maximum number of pages in the Wizard
  104. DIM DialogReturn%        'identifies user's selection for next step in Wizard                                
  105. DIM NextStep%            'specifies which page appears next in the Wizard
  106.  
  107.  
  108. ' **************************************************************************************
  109. ' MAIN
  110. ' **************************************************************************************
  111. ON ERROR GOTO ErrorHandler
  112. RegQuery            'get root directory where Ventura is installed
  113.  
  114. 'this section controls traversal through the dialog pages
  115. NextStep% = 1
  116. DO
  117.     SELECT CASE NextStep%
  118.         CASE 1: DialogReturn% = ShowIntro()    'Show Intro dialog
  119.         CASE 2: DialogReturn% = GetStyle()        'Get style of grid to apply
  120.         CASE 3: DialogReturn% = GetCustom()    'custom style - get custom information
  121.         CASE 4: DialogReturn%  = ShowFinish()    'Show finish dialog
  122.     END SELECT
  123.     NextStep% = NextStep%+ DialogReturn%
  124. LOOP UNTIL NextStep% = MAXSTEP + 1
  125.  
  126. MakeGuides
  127.  
  128. ExitScript:
  129. STOP
  130.  
  131. ErrorHandler:
  132. SELECT CASE ErrNum
  133.     CASE 800
  134.         MESSAGE "FATAL ERROR" & CHR(13) & "Script will now exit."
  135.         RESUME AT ExitScript
  136.     CASE ELSE
  137.         MESSAGE "ERROR: " & STR(ErrNum) & CHR(13) & "Script will now exit."
  138.         RESUME AT ExitScript
  139.     END SELECT
  140.  
  141.  
  142. ' **************************************************************************************
  143. ' MakeGuides
  144. ' This function creates the guides lines in the selected style (or custom).
  145. ' PARAMS: None
  146. '
  147. ' RETURNS: ShowIntro AS INTEGER - Integer indicating dialog return value(user selection)
  148. ' **************************************************************************************
  149. SUB MakeGuides()
  150. DIM PageOrientation AS BOOLEAN
  151.     'set columns, rows and gutters to appropriate values based on the selected style
  152.     SELECT CASE StyleOption&
  153.         CASE COLS3_ROWS6    '3 columns, 5 rows
  154.             Columns% = 3
  155.             Rows% = 6
  156.             VertGutter# = FROMINCHES(0.05)
  157.             HorzGutter# = FROMINCHES(0.05)
  158.         CASE COLS3_ROWS5    '3 columns, 5 rows
  159.             Columns% = 3
  160.             Rows% = 5
  161.             VertGutter# = FROMINCHES(0.05)
  162.             HorzGutter# = FROMINCHES(0.05)
  163.         CASE COLS4_ROWS5    '4 columns, 5 rows
  164.             Columns% = 3
  165.             Rows% = 5
  166.             VertGutter# = FROMINCHES(0.05)
  167.             HorzGutter# = FROMINCHES(0.05)
  168.         CASE COLS12_ROWS9    '12 columns, 9 rows
  169.             Columns% = 12
  170.             Rows% = 9
  171.             VertGutter# = FROMINCHES(0.05)
  172.             HorzGutter# = FROMINCHES(0.05)
  173.         CASE COLS6_ROWS17    '6 columns, 17 rows
  174.             Columns% = 6
  175.             Rows% = 17
  176.             VertGutter# = FROMINCHES(0.05)
  177.             HorzGutter# = FROMINCHES(0.05)
  178.         CASE COLS7_ROWS9    '7 columns, 9 rows
  179.             Columns% = 7
  180.             Rows% = 9
  181.             VertGutter# = FROMINCHES(0.05)
  182.             HorzGutter# = FROMINCHES(0.05)
  183.         CASE CUSTOM_GUIDES    'Custom"
  184.     END SELECT
  185.  
  186.     WITHOBJECT OBJECT_VENTURA8
  187.         .SetVisible TRUE
  188.         'IF there aren't any open pubs, open one
  189.         IF .CountWindows() = 0 THEN .FileNew
  190.  
  191.         'IF master page is selected, apply to both sides and switch view to MP
  192.         IF PageOption& = PAGE_MASTER THEN
  193.             .ViewMasterPage
  194.             MasterPageName$ = .CurrentMasterPage()
  195.             .ViewGotoMasterPage MasterPageName$, FALSE, 4
  196.             MasterPageFlag = TRUE
  197.         ELSEIF PageOption& = PAGE_CURRENT THEN
  198.             .ViewPageLayout
  199.         ENDIF
  200.  
  201. GuideStart:
  202.         'IF there are existing guides, and the user wants to, remove them
  203.         IF RemoveExisting& = 1 THEN
  204.             .PageFirstLine
  205.             IF .PageGuidelineCount(TRUE)>0 OR .PageGuidelineCount(FALSE)>0  THEN .PageGuidelineDelete , , TRUE
  206.         ENDIF
  207.  
  208.         .FrameFirst TRUE
  209.          .FormatFrameMarginsInsideGet 3, LeftMarg&, RightMarg&, TopMarg&, BottomMarg&
  210.         LeftMargin# = CDBL(LeftMarg&)    :    RightMargin# = CDBL(RightMarg&)    
  211.         TopMargin# = CDBL(TopMarg&)    :    BottomMargin# = CDBL(BottomMarg&)    
  212.         .PageFirstLine
  213.         .FormatMasterPageGet PageOrientation, PaperType&, PageWidth&, PageHeight&
  214.  
  215.         'create Vertical Guides
  216.         ColumnSpace& = (PageWidth& - (LeftMargin#+RightMargin#)-((Columns%-1)*VertGutter#)) / Columns%
  217.         .PageGuideLineAdd LeftMargin#, TRUE
  218.         Guide& = LeftMargin#
  219.         FOR i% = 1 TO Columns%-1
  220.             Guide& = Guide& + ColumnSpace&
  221.             .PageGuideLineAdd Guide&, TRUE
  222.             Guide& = Guide& + VertGutter#
  223.             .PageGuideLineAdd Guide&, TRUE
  224.         NEXT i%
  225.         .PageGuideLineAdd PageWidth&-RightMargin#, TRUE
  226.         IF StyleOption& = COLS4_ROWS5 THEN
  227.             .PageGuideLineAdd (PageWidth&*0.5)-(VertGutter#*0.5), TRUE
  228.             .PageGuideLineAdd (PageWidth&*0.5)+(VertGutter#*0.5), TRUE
  229.         ENDIF
  230.     
  231.         'create Horizontal Guides
  232.         RowSpace& = (PageHeight& - (TopMargin#+BottomMargin#)-((Rows%-1)*HorzGutter#)) / Rows%
  233.         .PageGuideLineAdd TopMargin#, FALSE
  234.         Guide& = TopMargin#
  235.         FOR i% = 1 TO Rows%-1
  236.             Guide& = Guide& + RowSpace&
  237.             .PageGuideLineAdd Guide&, FALSE
  238.             Guide& = Guide& + HorzGutter#
  239.             .PageGuideLineAdd Guide&, FALSE
  240.             IF StyleOption& = COLS7_ROWS9 THEN
  241.                 IF i% = 1 OR i% = 2 THEN 
  242.                     .PageGuidelineDelete Guide&, FALSE
  243.                     .PageGuidelineDelete Guide&- HorzGutter#, FALSE
  244.                 ENDIF
  245.             ENDIF
  246.         NEXT i%
  247.         .PageGuideLineAdd PageHeight&-BottomMargin#, FALSE
  248.         .PageGuideline CBOL(ShowGuides), CBOL(LockGuides&)
  249.  
  250.         'IF master page is selected, draw lines on both sides
  251.         IF PageOption& = PAGE_MASTER AND MasterPageFlag = TRUE THEN
  252.             MasterPageFlag = FALSE 
  253.             .ViewGotoMasterPage MasterPageName$, TRUE, 4
  254.             GOTO GuideStart
  255.         ENDIF
  256.     END WITHOBJECT
  257. END SUB
  258.  
  259.  
  260. ' *******************************************************************************
  261. ' RegQuery
  262. ' This subroutine queries the Registry to determine the root directory where 
  263. ' Ventura is installed.
  264. ' *******************************************************************************
  265. SUB RegQuery
  266. ON ERROR GOTO ErrorHandler
  267.  
  268.     'get Ventura config directory
  269.     VentDir$ = REGISTRYQUERY(HKEY_LOCAL_MACHINE,VENTURA_REGQUERY_CONST,"ConfigDir")     
  270.     
  271.     'isolate Ventura root directory from Ventura config directory
  272.     first% = 1
  273.     pos% = 1
  274.     DO WHILE first <> 0
  275.         first = INSTR(VentDir$, "\", first )
  276.         IF first <> 0 THEN
  277.             pos = first
  278.             first = first + 1
  279.         END IF
  280.     LOOP
  281.     VenturaRoot$ = LEFT(VentDir$, pos - 1)     'root directory where Ventura is installed
  282.  
  283. EXIT SUB
  284. ErrorHandler:
  285.     MESSAGE "Error reading registry:" & CHR(13) & RegString$
  286.     ErrNum = 800
  287. END SUB
  288.  
  289.  
  290. ' *******************************************************************************
  291. ' ShowIntro
  292. ' This function displays the introduction dialog.
  293. ' PARAMS: None
  294. '
  295. ' RETURNS: ShowIntro AS INTEGER - Integer indicating dialog return value.
  296. ' *******************************************************************************
  297. FUNCTION ShowIntro%
  298. BEGIN DIALOG OBJECT IntroDialog 290, 180, "Guidelines Wizard", SUB IntroDialogEventHandler
  299.     PUSHBUTTON  181, 160, 46, 14, .NextButton, "&Next >"
  300.     CANCELBUTTON  234, 160, 46, 14, .CancelButton
  301.     PUSHBUTTON  135, 160, 46, 14, .BackButton, "< &Back"
  302.     TEXT  95, 10, 185, 20, .Text2, "This wizard offers a selection of preset guidelines, or you can create your own custom guidelines."
  303.     TEXT  95, 40, 185, 12, .Text3, "To begin, click Next."
  304.     IMAGE  10, 10, 75, 130, .IntroImage
  305.     GROUPBOX  10, 150, 270, 5, .LineGroupBox
  306. END DIALOG
  307.  
  308.     IntroDialog.IntroImage.SetImage "#IntroBMP"
  309.     IntroDialog.IntroImage.SetStyle STYLE_IMAGE_CENTERED
  310.  
  311.     IntroRet%=DIALOG(IntroDialog)
  312.     IF IntroRet% = DIALOG_RETURN_CANCEL THEN STOP            
  313.     IF IntroRet% = DIALOG_RETURN_NEXT THEN ShowIntro = 1        
  314. END FUNCTION
  315.  
  316. ' *******************************************************************************
  317. ' IntroDialogEventHandler
  318. ' This subroutine responds to user interface with the introduction dialog.
  319. ' PARAMS: BYVAL ControlID% - Integer indicating the dialog control that is 
  320. '                            generating a dialog event.
  321. '        BYVAL Event% - Integer indicating the dialog event that has occurred.
  322. ' *******************************************************************************
  323. SUB IntroDialogEventHandler(BYVAL ControlID%, BYVAL Event%)
  324.     IF Event% = EVENT_INITIALIZATION THEN         
  325.         IntroDialog.BackButton.Enable FALSE 
  326.     ENDIF
  327.     IF Event% = EVENT_MOUSE_CLICK THEN     
  328.         SELECT CASE ControlID%
  329.             CASE IntroDialog.NextButton.GetID()
  330.                 IntroDialog.CloseDialog DIALOG_RETURN_NEXT
  331.             CASE IntroDialog.CancelButton.GetID()
  332.                 IntroDialog.CloseDialog DIALOG_RETURN_CANCEL
  333.         END SELECT
  334.     ENDIF
  335. END FUNCTION
  336.  
  337.  
  338. ' *******************************************************************************
  339. ' GetStyle
  340. ' This function prompts the user to select which style of guides to use: one of 
  341. ' the pre-defined styles, or a user specified custom style.
  342. '
  343. ' PARAMS: None
  344. '
  345. ' RETURNS: GetStyle AS INTEGER - Integer indicating dialog return value.
  346. ' *******************************************************************************
  347. FUNCTION GetStyle
  348. BEGIN DIALOG OBJECT StyleDialog 290, 180, "Guidelines Wizard", SUB StyleDialogEventHandler
  349.     PUSHBUTTON  135, 160, 46, 14, .BackButton, "< &Back"
  350.     PUSHBUTTON  181, 160, 46, 14, .NextButton, "&Next >"
  351.     CANCELBUTTON  234, 160, 46, 14, .CancelButton
  352.     IMAGE  10, 10, 75, 130, .StyleImage
  353.     GROUPBOX  10, 150, 270, 5, .LineGroupBox
  354.     TEXT  95, 10, 185, 12, .Text5, "Select a preset style, or create a customized style."
  355.     OPTIONGROUP .StyleOptionGroup%
  356.         OPTIONBUTTON  115, 25, 100, 12, .Style1OptionButton, "3 columns, 6 rows"
  357.         OPTIONBUTTON  115, 40, 100, 12, .Style2OptionButton, "3 columns, 5 rows"
  358.         OPTIONBUTTON  115, 55, 100, 12, .Style3OptionButton, "4 columns, 5 rows"
  359.         OPTIONBUTTON  115, 70, 100, 12, .Style4OptionButton, "12 columns, 9 rows"
  360.         OPTIONBUTTON  115, 85, 100, 12, .Style5OptionButton, "6 columns, 17 rows"
  361.         OPTIONBUTTON  115, 100, 100, 12, .Style6OptionButton, "7 columns, 7 rows"
  362.         OPTIONBUTTON  115, 115, 100, 12, .CustomOptionButton, "Custom"
  363. END DIALOG
  364.  
  365.     SELECT CASE StyleOption&
  366.         CASE COLS3_ROWS6    '3 columns, 5 rows
  367.             UseImage$ = "#Grid1BMP"
  368.         CASE COLS3_ROWS5    '3 columns, 5 rows
  369.             UseImage$ = "#Grid2BMP"
  370.         CASE COLS4_ROWS5    '4 columns, 5 rows
  371.             UseImage$ = "#Grid3BMP"
  372.         CASE COLS12_ROWS9    '12 columns, 9 rows
  373.             UseImage$ = "#Grid4BMP"
  374.         CASE COLS6_ROWS17    '6 columns, 17 rows
  375.             UseImage$ = "#Grid5BMP"
  376.         CASE COLS7_ROWS9    '7 columns, 9 rows
  377.             UseImage$ = "#Grid6BMP"
  378.         CASE CUSTOM_GUIDES    'Custom"
  379.             UseImage$ = "#Grid1BMP"
  380.     END SELECT
  381.     StyleDialog.StyleImage.SetImage UseImage$
  382.     StyleDialog.StyleImage.SetStyle STYLE_IMAGE_CENTERED
  383.  
  384.     StyleRet%=DIALOG(StyleDialog)
  385.     SELECT CASE StyleRet%
  386.         CASE DIALOG_RETURN_CANCEL    
  387.             STOP
  388.         CASE DIALOG_RETURN_NEXT        
  389.             StyleOption& = StyleDialog.StyleOptionGroup.GetValue()
  390.             IF StyleOption& = CUSTOM_GUIDES THEN 
  391.                 GetStyle = 1
  392.             ELSE
  393.                 GetStyle = 2
  394.             ENDIF
  395.         CASE DIALOG_RETURN_BACK         
  396.             GetStyle = -1
  397.     END SELECT
  398. END FUNCTION
  399.  
  400.  
  401. ' *******************************************************************************
  402. ' StyleDialogEventHandler
  403. ' This subroutine responds to user interface with the style dialog.
  404. '
  405. ' PARAMS: BYVAL ControlID% - Integer indicating the dialog control that is 
  406. '                            generating a dialog event.
  407. '        BYVAL Event% - Integer indicating the dialog event that has occurred.
  408. ' *******************************************************************************
  409. SUB StyleDialogEventHandler(BYVAL ControlID%, BYVAL Event%)
  410.     IF Event% = EVENT_MOUSE_CLICK THEN         
  411.         SELECT CASE ControlID%
  412.             CASE StyleDialog.NextButton.GetID()        
  413.                 StyleDialog.closedialog DIALOG_RETURN_NEXT
  414.             CASE StyleDialog.BackButton.GetID()        
  415.                 StyleDialog.closedialog DIALOG_RETURN_BACK
  416.             CASE StyleDialog.CancelButton.GetID()        
  417.                 StyleDialog.closedialog DIALOG_RETURN_CANCEL    
  418.             CASE StyleDialog.Style1OptionButton.GetID()
  419.                 UseImage$ = "#Grid1BMP"
  420.             CASE StyleDialog.Style2OptionButton.GetID()
  421.                 UseImage$ = "#Grid2BMP"
  422.             CASE StyleDialog.Style3OptionButton.GetID()
  423.                 UseImage$ = "#Grid3BMP"
  424.             CASE StyleDialog.Style4OptionButton.GetID()
  425.                 UseImage$ = "#Grid4BMP"
  426.             CASE StyleDialog.Style5OptionButton.GetID()
  427.                 UseImage$ = "#Grid5BMP"
  428.             CASE StyleDialog.Style6OptionButton.GetID()
  429.                 UseImage$ = "#Grid6BMP"
  430.             CASE StyleDialog.CustomOptionButton.GetID()
  431.                 UseImage$ = "#Step2BMP"
  432.         END SELECT
  433.         StyleDialog.StyleImage.SetImage UseImage$
  434.     ENDIF
  435. END SUB
  436.  
  437.  
  438. ' *******************************************************************************
  439. ' GetCustom
  440. ' This function prompts the user for information for custom guidelines.
  441. '
  442. ' PARAMS: None
  443. '
  444. ' RETURNS: GetCustom AS INTEGER - Integer indicating dialog return value.
  445. ' *******************************************************************************
  446. FUNCTION GetCustom
  447. BEGIN DIALOG OBJECT CustomDialog 290, 180, "Guidelines Wizard", SUB CustomDialogEventHandler
  448.     TEXT  100, 40, 25, 12, .Text1, "R&ows:"
  449.     SPINCONTROL  130, 40, 40, 12, .RowSpin
  450.     TEXT  190, 40, 32, 12, .Text2, "&Columns:"
  451.     SPINCONTROL  230, 40, 40, 12, .ColumnSpin
  452.     TEXT  100, 105, 38, 8, .Text3, "Hori&zontal:"
  453.     SPINCONTROL  145, 102, 50, 12, .HorizontalSpin
  454.     DDLISTBOX  205, 101, 70, 60, .GutterUnitsDDListBox
  455.     TEXT  100, 125, 38, 8, .Text4, "&Vertical:"
  456.     SPINCONTROL  145, 121, 50, 12, .VerticalSpin
  457.     PUSHBUTTON  134, 160, 46, 14, .BackButton, "< &Back"
  458.     PUSHBUTTON  181, 160, 46, 14, .NextButton, "&Next >"
  459.     CANCELBUTTON  234, 160, 46, 14, .CancelButton
  460.     GROUPBOX  10, 150, 270, 5, .LineGroupBox
  461.     GROUPBOX  95, 90, 185, 50, .GroupBox3, "Gutters:"
  462.     TEXT  205, 125, 70, 12, .Text9, ""
  463.     IMAGE  10, 10, 75, 130, .CustomImage
  464.     TEXT  95, 10, 180, 16, .Text13, "Specify the number of rows and columns you would like to insert."
  465.     TEXT  95, 75, 185, 12, .Text7, "Specify the gutter settings that you would like to use."
  466. END DIALOG
  467.  
  468.     CustomDialog.CustomImage.SetImage UseImage$
  469.     CustomDialog.CustomImage.SetStyle STYLE_IMAGE_CENTERED
  470.     CustomDialog.RowSpin.SetMinRange 1
  471.     CustomDialog.RowSpin.SetValue Rows%
  472.     CustomDialog.ColumnSpin.SetMinRange 1
  473.     CustomDialog.ColumnSpin.SetValue Columns%
  474.     CustomDialog.HorizontalSpin.SetMinRange 0
  475.     CustomDialog.VerticalSpin.SetMinRange 0
  476.     
  477.     CustomDialog.GutterUnitsDDListBox.SetArray Units$
  478.     CustomDialog.GutterUnitsDDListBox.SetSelect GutterUnits%
  479.     
  480.     SELECT CASE GutterUnits%
  481.         CASE UNITS_INCHES
  482.             SpinDoubleMode = TRUE
  483.             SpinPrecision& = 5
  484.             CustomDialog.HorizontalSpin.SetValue TOINCHES(HorzGutter#)
  485.             CustomDialog.VerticalSpin.SetValue TOINCHES(VertGutter#)
  486.         CASE UNITS_MILLIMETERS
  487.             SpinDoubleMode = TRUE
  488.             SpinPrecision& = 3
  489.             CustomDialog.HorizontalSpin.SetValue HorzGutter#/10000
  490.             CustomDialog.VerticalSpin.SetValue VertGutter#/10000
  491.         CASE UNITS_PICAS_POINTS
  492.             SpinDoubleMode = TRUE
  493.             SpinPrecision& = 1
  494.             CustomDialog.HorizontalSpin.SetValue ToPicasPoints(HorzGutter#)
  495.             CustomDialog.VerticalSpin.SetValue ToPicasPoints(VertGutter#)
  496.         CASE UNITS_POINTS
  497.             SpinDoubleMode = TRUE
  498.             SpinPrecision& = 3
  499.             CustomDialog.HorizontalSpin.SetValue TOPOINTS(HorzGutter#)
  500.             CustomDialog.VerticalSpin.SetValue TOPOINTS(VertGutter#)
  501.         CASE UNITS_CICEROS_DIDOTS
  502.             SpinDoubleMode = TRUE
  503.             SpinPrecision& = 2
  504.             CustomDialog.HorizontalSpin.SetValue ToCicerosDidots(HorzGutter#)
  505.             CustomDialog.VerticalSpin.SetValue ToCicerosDidots(VertGutter#)
  506.         CASE UNITS_DIDOTS
  507.             SpinDoubleMode = TRUE
  508.             SpinPrecision& = 3
  509.             CustomDialog.HorizontalSpin.SetValue TODIDOTS(HorzGutter#)
  510.             CustomDialog.VerticalSpin.SetValue TODIDOTS(VertGutter#)
  511.     END SELECT
  512.     CustomDialog.HorizontalSpin.SetDoubleMode SpinDoubleMode
  513.     CustomDialog.HorizontalSpin.SetPrecision SpinPrecision&
  514.     CustomDialog.VerticalSpin.SetDoubleMode SpinDoubleMode
  515.     CustomDialog.VerticalSpin.SetPrecision SpinPrecision&
  516.     PrevGutterUnits% = GutterUnits%
  517.  
  518.     CustomRet%=DIALOG(CustomDialog)
  519.     SELECT CASE CustomRet%
  520.         CASE DIALOG_RETURN_CANCEL    
  521.             STOP
  522.         CASE DIALOG_RETURN_NEXT        
  523.             GetCustom = 1
  524.         CASE DIALOG_RETURN_BACK         
  525.             GetCustom = -1
  526.     END SELECT
  527. END FUNCTION
  528.  
  529. ' *******************************************************************************
  530. ' CustomDialogEventHandler
  531. ' This subroutine handles events for the custom dialog.
  532. ' PARAMS: BYVAL ControlID% - Integer indicating the dialog control that is 
  533. '                            generating a dialog event.
  534. '        BYVAL Event% - Integer indicating the dialog event that has occurred.
  535. ' *******************************************************************************
  536. SUB CustomDialogEventHandler(BYVAL ControlID%, BYVAL Event%)
  537.     IF Event% = EVENT_INITIALIZATION THEN         
  538.         GutterUnits% = CustomDialog.GutterUnitsDDListBox.GetSelect()
  539.         CustomDialog.Text9.SetText Units$(GutterUnits%)
  540.     ENDIF
  541.  
  542.     IF Event% = EVENT_CHANGE_IN_CONTENT THEN         
  543.         SELECT CASE ControlID%
  544.             CASE CustomDialog.HorizontalSpin.GetID()        
  545.                 IF GutterUnits% = UNITS_CICEROS_DIDOTS OR GutterUnits% = UNITS_PICAS_POINTS THEN
  546.                     SpinVal# = CustomDialog.HorizontalSpin.GetValue()
  547.                     IF  SpinVal# - INT(SpinVal#) > 0.111  THEN 
  548.                         CustomDialog.HorizontalSpin.SetValue INT(SpinVal#) + 1
  549.                     ENDIF
  550.                     IF SpinVal# - INT(SpinVal#) > 0.90 THEN 
  551.                         CustomDialog.HorizontalSpin.SetValue INT(SpinVal#) + 0.11
  552.                     ENDIF
  553.                 ENDIF
  554.             CASE CustomDialog.VerticalSpin.GetID()        
  555.                 IF GutterUnits% = UNITS_CICEROS_DIDOTS OR GutterUnits% = UNITS_PICAS_POINTS THEN
  556.                     SpinVal# = CustomDialog.VerticalSpin.GetValue()
  557.                     IF  SpinVal# - INT(SpinVal#) > 0.111  THEN 
  558.                         CustomDialog.VerticalSpin.SetValue INT(SpinVal#) + 1
  559.                     ENDIF
  560.                     IF SpinVal# - INT(SpinVal#) > 0.90 THEN 
  561.                         CustomDialog.VerticalSpin.SetValue INT(SpinVal#) + 0.11
  562.                     ENDIF
  563.                 ENDIF
  564.         END SELECT
  565.     ENDIF
  566.  
  567.     IF Event% = EVENT_MOUSE_CLICK THEN         
  568.         SELECT CASE ControlID%
  569.             CASE CustomDialog.NextButton.GetID()        
  570.                 Rows% = CustomDialog.RowSpin.GetValue()
  571.                 Columns% = CustomDialog.ColumnSpin.GetValue()
  572.                 SELECT CASE GutterUnits%
  573.                     CASE UNITS_INCHES
  574.                         VertGutter# = FROMINCHES(CustomDialog.VerticalSpin.GetValue())
  575.                         HorzGutter# = FROMINCHES(CustomDialog.HorizontalSpin.GetValue())
  576.                     CASE UNITS_MILLIMETERS
  577.                         VertGutter# = (CustomDialog.VerticalSpin.GetValue())*10000
  578.                         HorzGutter# = (CustomDialog.HorizontalSpin.GetValue())*10000
  579.                     CASE UNITS_PICAS_POINTS
  580.                         VertGutter# = FromPicasPoints(CustomDialog.VerticalSpin.GetValue())
  581.                         HorzGutter# = FromPicasPoints(CustomDialog.HorizontalSpin.GetValue())
  582.                     CASE UNITS_POINTS
  583.                         VertGutter# = FROMPOINTS(CustomDialog.VerticalSpin.GetValue())
  584.                         HorzGutter# = FROMPOINTS(CustomDialog.HorizontalSpin.GetValue())
  585.                     CASE UNITS_CICEROS_DIDOTS
  586.                         VertGutter# = FromCicerosDidots(CustomDialog.VerticalSpin.GetValue())
  587.                         HorzGutter# = FromCicerosDidots(CustomDialog.HorizontalSpin.GetValue())
  588.                     CASE UNITS_DIDOTS
  589.                         VertGutter# = FROMDIDOTS(CustomDialog.VerticalSpin.GetValue())
  590.                         HorzGutter# = FROMDIDOTS(CustomDialog.HorizontalSpin.GetValue())
  591.                 END SELECT
  592.                 CustomDialog.closedialog DIALOG_RETURN_NEXT
  593.  
  594.             CASE CustomDialog.BackButton.GetID()        
  595.                 CustomDialog.closedialog DIALOG_RETURN_BACK
  596.  
  597.             CASE CustomDialog.CancelButton.GetID()        'Cancel
  598.                 CustomDialog.closedialog DIALOG_RETURN_CANCEL    
  599.  
  600.             CASE CustomDialog.HorizontalSpin.GetID()        
  601.                 IF GutterUnits% = UNITS_CICEROS_DIDOTS OR GutterUnits% = UNITS_PICAS_POINTS THEN
  602.                     SpinVal# = CustomDialog.HorizontalSpin.GetValue()
  603.                     IF  SpinVal# - INT(SpinVal#) > 0.111  THEN 
  604.                         CustomDialog.HorizontalSpin.SetValue INT(SpinVal#) + 1
  605.                     ENDIF
  606.                     IF SpinVal# - INT(SpinVal#) > 0.90 THEN 
  607.                         CustomDialog.HorizontalSpin.SetValue INT(SpinVal#) + 0.11
  608.                     ENDIF
  609.                 ENDIF
  610.  
  611.             CASE CustomDialog.VerticalSpin.GetID()        
  612.                 IF GutterUnits% = UNITS_CICEROS_DIDOTS OR GutterUnits% = UNITS_PICAS_POINTS THEN
  613.                     SpinVal# = CustomDialog.VerticalSpin.GetValue()
  614.                     IF  SpinVal# - INT(SpinVal#) > 0.111  THEN 
  615.                         CustomDialog.VerticalSpin.SetValue INT(SpinVal#) + 1
  616.                     ENDIF
  617.                     IF SpinVal# - INT(SpinVal#) > 0.90 THEN 
  618.                         CustomDialog.VerticalSpin.SetValue INT(SpinVal#) + 0.11
  619.                     ENDIF
  620.                 ENDIF
  621.  
  622.             CASE CustomDialog.GutterUnitsDDListBox.GetID()
  623.                 GutterUnits% = CustomDialog.GutterUnitsDDListBox.GetSelect()
  624.                 CustomDialog.Text9.SetText Units$(GutterUnits%)
  625.                 'get current readings and convert to tenths of a micron
  626.                 SELECT CASE PrevGutterUnits%
  627.                     CASE UNITS_INCHES
  628.                         HorzGutter# = FROMINCHES(CustomDialog.HorizontalSpin.GetValue())
  629.                         VertGutter# = FROMINCHES(CustomDialog.VerticalSpin.GetValue())
  630.                     CASE UNITS_MILLIMETERS
  631.                         HorzGutter# = (CustomDialog.HorizontalSpin.GetValue())*10000
  632.                         VertGutter# = (CustomDialog.VerticalSpin.GetValue())*10000
  633.                     CASE UNITS_PICAS_POINTS
  634.                         HorzGutter# = FromPicasPoints(CustomDialog.HorizontalSpin.GetValue())
  635.                         VertGutter# = FromPicasPoints(CustomDialog.VerticalSpin.GetValue())
  636.                     CASE UNITS_POINTS
  637.                         HorzGutter# = FROMPOINTS(CustomDialog.HorizontalSpin.GetValue())
  638.                         VertGutter# = FROMPOINTS(CustomDialog.VerticalSpin.GetValue())
  639.                     CASE UNITS_CICEROS_DIDOTS
  640.                         HorzGutter# = FromCicerosDidots(CustomDialog.HorizontalSpin.GetValue())
  641.                         VertGutter# = FromCicerosDidots(CustomDialog.VerticalSpin.GetValue())
  642.                     CASE UNITS_DIDOTS
  643.                         HorzGutter# = FROMDIDOTS(CustomDialog.HorizontalSpin.GetValue())
  644.                         VertGutter# = FROMDIDOTS(CustomDialog.VerticalSpin.GetValue())
  645.                 END SELECT
  646.  
  647.                 'display current readings in specified units
  648.                 SELECT CASE GutterUnits%
  649.                     CASE UNITS_INCHES
  650.                         SpinDoubleMode = TRUE
  651.                         SpinPrecision& = 5
  652.                         CustomDialog.HorizontalSpin.SetValue TOINCHES(HorzGutter#)
  653.                         CustomDialog.VerticalSpin.SetValue TOINCHES(VertGutter#)
  654.                     CASE UNITS_MILLIMETERS
  655.                         SpinDoubleMode = TRUE
  656.                         SpinPrecision& = 3
  657.                         CustomDialog.HorizontalSpin.SetValue HorzGutter#/10000
  658.                         CustomDialog.VerticalSpin.SetValue VertGutter#/10000
  659.                     CASE UNITS_PICAS_POINTS
  660.                         SpinDoubleMode = TRUE
  661.                         SpinPrecision& = 1
  662.                         CustomDialog.HorizontalSpin.SetValue ToPicasPoints(HorzGutter#)
  663.                         CustomDialog.VerticalSpin.SetValue ToPicasPoints(VertGutter#)
  664.                     CASE UNITS_POINTS
  665.                         SpinDoubleMode = TRUE
  666.                         SpinPrecision& = 3
  667.                         CustomDialog.HorizontalSpin.SetValue TOPOINTS(HorzGutter#)
  668.                         CustomDialog.VerticalSpin.SetValue TOPOINTS(VertGutter#)
  669.                     CASE UNITS_CICEROS_DIDOTS
  670.                         SpinDoubleMode = TRUE
  671.                         SpinPrecision& = 2
  672.                         CustomDialog.HorizontalSpin.SetValue ToCicerosDidots(HorzGutter#)
  673.                         CustomDialog.VerticalSpin.SetValue ToCicerosDidots(VertGutter#)
  674.                     CASE UNITS_DIDOTS
  675.                         SpinDoubleMode = TRUE
  676.                         SpinPrecision& = 3
  677.                         CustomDialog.HorizontalSpin.SetValue TODIDOTS(HorzGutter#)
  678.                         CustomDialog.VerticalSpin.SetValue TODIDOTS(VertGutter#)
  679.                 END SELECT
  680.                 CustomDialog.HorizontalSpin.SetDoubleMode SpinDoubleMode
  681.                 CustomDialog.HorizontalSpin.SetPrecision SpinPrecision&
  682.                 CustomDialog.VerticalSpin.SetDoubleMode SpinDoubleMode
  683.                 CustomDialog.VerticalSpin.SetPrecision SpinPrecision&
  684.                 PrevGutterUnits% = GutterUnits%
  685.         END SELECT
  686.     ENDIF
  687. END SUB
  688.  
  689.  
  690. ' *******************************************************************************
  691. ' ShowFinish
  692. ' This function displays the finish dialog.
  693. '
  694. ' PARAMS: None
  695. '
  696. ' RETURNS: ShowFinish AS INTEGER - Integer indicating dialog return value.
  697. ' *******************************************************************************
  698. FUNCTION ShowFinish
  699. BEGIN DIALOG OBJECT FinishDialog 290, 180, "Guidelines Wizard", SUB FinishDialogEventHandler
  700.     OPTIONGROUP .PageOptionGroup%
  701.         OPTIONBUTTON  120, 42, 100, 10, .OptionButton1, "Apply to ¤t page only"
  702.         OPTIONBUTTON  120, 55, 111, 10, .OptionButton2, "Apply to &page tag"
  703.     CHECKBOX  120, 98, 90, 12, .ShowGuidesCheckBox, "&Show Guidelines"
  704.     CHECKBOX  120, 114, 89, 12, .LockGuidesCheckBox, "&Lock Guidelines"
  705.     CHECKBOX  119, 129, 128, 12, .RemoveExistingCheckBox, "&Remove existing guidelines"
  706.     PUSHBUTTON  135, 160, 46, 14, .BackButton, "< &Back"
  707.     PUSHBUTTON  181, 160, 46, 14, .NextButton, "&Apply"
  708.     CANCELBUTTON  234, 160, 46, 14, .CancelButton
  709.     IMAGE  10, 10, 75, 130, .FinishImage
  710.     GROUPBOX  10, 150, 270, 5, .LineGroupBox
  711.     TEXT  95, 10, 185, 12, .Text5, "The Guidelines Wizard is now ready to apply guidelines."
  712.     GROUPBOX  100, 34, 175, 36, .GroupBox2
  713.     GROUPBOX  100, 89, 175, 55, .GroupBox3
  714.     TEXT  100, 25, 180, 12, .Text2, "Where do you want the guidelines applied?"
  715.     TEXT  100, 80, 180, 12, .Text3, "Do you want the Guidelines Wizard to:"
  716. END DIALOG
  717.  
  718.     FinishDialog.FinishImage.SetImage UseImage$
  719.     FinishDialog.FinishImage.SetStyle STYLE_IMAGE_CENTERED
  720.     FinishDialog.ShowGuidesCheckBox.SetThreeState FALSE
  721.     FinishDialog.LockGuidesCheckBox.SetThreeState FALSE
  722.     FinishDialog.RemoveExistingCheckBox.SetThreeState FALSE
  723.     FinishDialog.ShowGuidesCheckBox.SetValue ShowGuides&
  724.     FinishDialog.LockGuidesCheckBox.SetValue LockGuides&
  725.     FinishDialog.PageOptionGroup.SetValue PageOption&
  726.     FinishDialog.RemoveExistingCheckBox.SetValue RemoveExisting&
  727.  
  728.     FinishRet%=DIALOG(FinishDialog)
  729.     SELECT CASE FinishRet%
  730.         CASE DIALOG_RETURN_CANCEL    
  731.             STOP
  732.         CASE DIALOG_RETURN_NEXT        
  733.             PageOption& = FinishDialog.PageOptionGroup.GetValue()
  734.             ShowFinish = 1
  735.         CASE DIALOG_RETURN_BACK         
  736.             PageOption& = FinishDialog.PageOptionGroup.GetValue()
  737.             IF StyleOption& = CUSTOM_GUIDES THEN 
  738.                 ShowFinish = -1
  739.             ELSE
  740.                 ShowFinish = -2
  741.             ENDIF
  742.     END SELECT
  743. END FUNCTION
  744.  
  745.  
  746. ' *******************************************************************************
  747. ' FinishDialogEventHandler
  748. ' This subroutine handles events for the finish dialog.
  749. ' PARAMS: BYVAL ControlID% - Integer indicating the dialog control that is 
  750. '                            generating a dialog event.
  751. '        BYVAL Event% - Integer indicating the dialog event that has occurred.
  752. ' *******************************************************************************
  753. SUB FinishDialogEventHandler(BYVAL ControlID%, BYVAL Event%)
  754.     IF Event% = EVENT_MOUSE_CLICK THEN         
  755.         SELECT CASE ControlID%
  756.             CASE FinishDialog.NextButton.GetID()        
  757.                 ShowGuides& = FinishDialog.ShowGuidesCheckBox.GetValue()
  758.                 LockGuides& = FinishDialog.LockGuidesCheckBox.GetValue()
  759.                 RemoveExisting& = FinishDialog.RemoveExistingCheckBox.GetValue()
  760.                 FinishDialog.closedialog DIALOG_RETURN_NEXT
  761.             CASE FinishDialog.BackButton.GetID()        
  762.                 FinishDialog.closedialog DIALOG_RETURN_BACK
  763.             CASE FinishDialog.CancelButton.GetID()        
  764.                 FinishDialog.closedialog DIALOG_RETURN_CANCEL    
  765.         END SELECT
  766.     ENDIF
  767. END SUB
  768.  
  769.  
  770. ' *******************************************************************************
  771. ' ToCicerosDidots
  772. ' This function converts a numeric expression to a double representing ciceros 
  773. ' and didots.
  774. ' *******************************************************************************
  775. FUNCTION ToCicerosDidots#(Value#)
  776.     TempValue# = TOCICEROS(Value#)                    'convert value to ciceros
  777.     CicerosValue& = FIX(TempValue#)                    'obtain ciceros portion
  778.     DidotsValue# = -(CicerosValue& - TempValue#)            'obtain didots portion [remainder of conversion]
  779.     DidotsValue# = INT(LENGTHCONVERT(LC_CICEROS, LC_DIDOTS, DidotsValue#))    'convert remainder to didots
  780.     ToCicerosDidots# = CicerosValue& + (DidotsValue#/100)    'display ciceros as whole number, didots as decimal portion
  781. END FUNCTION
  782.  
  783.  
  784. ' *******************************************************************************
  785. ' FromCicerosDidots
  786. ' This function converts a double representing ciceros, didots to a numeric 
  787. ' expression in tenths of a micron.
  788. ' *******************************************************************************
  789. FUNCTION FromCicerosDidots&(Value#)
  790.     CicerosValue& = FIX(Value#)
  791.     DidotsValue& = -(CicerosValue& - Value#) * 100
  792.     DidotsValueInMicrons& = FROMDIDOTS(DidotsValue&)
  793.     CicerosValueInMicrons& = FROMCICEROS(CicerosValue&) 
  794.     FromCicerosDidots& = CicerosValueInMicrons& + DidotsValueInMicrons&
  795. END FUNCTION
  796.  
  797.  
  798. ' *******************************************************************************
  799. ' ToPicasPoints
  800. ' This function converts a numeric expression to a double representing picas and
  801. ' points.
  802. ' *******************************************************************************
  803. FUNCTION ToPicasPoints#(Value#)
  804.     Value# = Value# + 1.0e-9
  805.     TempValue# = TOPICAS(Value#)                        'convert value to picas
  806.     PicasValue& = FIX(TempValue#)                        'obtain picas portion
  807.     PointsValue# = -(PicasValue& - TempValue#)            'obtain points portion [remainder of conversion]
  808.     PointsValue# = INT(LENGTHCONVERT(LC_PICAS, LC_POINTS, DidotsValue#))    'convert remainder to points
  809.     ToPicasPoints# = PicasValue& + (PointsValue#/100)        'display picas as whole number, points as decimal portion
  810. END FUNCTION
  811.  
  812. ' *******************************************************************************
  813. ' FromPicasPoints
  814. ' This function converts a double representing picas, points to a numeric 
  815. ' expression in tenths of a micron.
  816. ' *******************************************************************************
  817. FUNCTION FromPicasPoints&(Value#)
  818.     PicasValue& = FIX(Value#)
  819.     PointsValue& = -(PicasValue& - Value#) * 100
  820.     FromPicasPoints& = FROMPOINTS(PointsValue&) + FROMPICAS(PicasValue&) 
  821. END FUNCTION
  822.  
  823.  
  824.