home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / WordProcessors / PAGESTREAM3,0-1.DMS / in.adf / Macros.LHA / OpenTemplate.rexx < prev    next >
Encoding:
OS/2 REXX Batch file  |  1994-05-27  |  7.4 KB  |  266 lines

  1. /* OpenTemplate.rexx */
  2. /* Copyright 1994 Soft-Logik Publishing Corporation */
  3. /* May not be distributed without Soft-Logik Publishing Corporation's express written permission */
  4. /* $VER: 1.0 alpha 1 */
  5.  
  6. OPTIONS RESULTS
  7.  
  8. /*TRACE ?i*/
  9. ADDRESS 'PAGESTREAM'
  10.  
  11. /* Make sure rexx support is opened */
  12. IF ~SHOW('L','rexxsupport.library') THEN
  13.    CALL ADDLIB('rexxsupport.library',0,-30)
  14.  
  15. /*open('console', 'CON:0/11/700/200/IndexEntryFeedback/SCREEN PageStream3', 'W')*/
  16.  
  17. /* Build the template list */
  18. dPath="PageStream3:Macros/TemplateData"
  19. Files=showdir(dPath,file,'|')
  20. fLength=length(Files)
  21.  
  22. /* Check for valid template data files. Only .data are listed */
  23. nList=0
  24. DO WHILE fLength>0
  25.     cLength=pos('|',Files)
  26.     IF cLength=0 then DO
  27.         cLength=FLength+1
  28.         fLength=0
  29.     END
  30.     cFile=left(Files,cLength-1)
  31.     eFile=right(cFile,cLength-lastpos('.',cFile))
  32.     IF eFile='.data' THEN DO
  33.         cFile=left(cFile,cLength-6)
  34.         nList=nList+1
  35.         List.nList=cFile
  36.     END
  37.     IF FLength~=0 THEN Files=right(Files,fLength-cLength)
  38.     fLength=fLength-cLength
  39. END
  40.  
  41. /* If there aren't any data files, alert the user and exit */
  42. IF nList=0 THEN DO
  43.     allocarexxrequester '"Open Template Alert"' 358 65
  44.         alerthandle=result
  45.     addarexxgadget alerthandle EXIT 276 48 70 label "_Exit"
  46.         cancelhandle=result
  47.     addarexxgadget alerthandle TEXT 8 8 346 string '"There are no template data files in the"'
  48.     addarexxgadget alerthandle TEXT 8 22 346 string '"PageStream3:Macros/TemplateData directory."'
  49.     doarexxrequester alerthandle
  50.         choice=result
  51.     freearexxrequester alerthandle
  52.     EXIT
  53. END
  54.  
  55. /* Sort the list alphabetically */
  56. DO tick = 1 to nList - 1
  57.     nexttick = tick + 1
  58.     IF List.tick > list.nexttick THEN
  59.         DO
  60.         store = List.nexttick
  61.         List.nexttick = List.tick
  62.  
  63.         DO bubpos = tick-1 to 1 by -1 WHILE (store < list.bubpos)
  64.             nexttick = bubpos + 1
  65.             List.nexttick = List.bubpos
  66.             END bubpos
  67.  
  68.         bubpos = bubpos + 1
  69.         List.bubpos = store
  70.         END
  71.     END tick
  72.  
  73. /* Allocate and fill the template list */
  74. allocarexxlist
  75.     tlisthandle=result
  76. i=1
  77. DO WHILE i<nList+1
  78.     addarexxlist tlisthandle List.i
  79.     i=i+1
  80. END
  81.  
  82. /* Allocate template list requester */
  83. allocarexxrequester '"Open Template"' 266 201
  84.     reqhandle=result
  85.  
  86. /* Add gadgets */
  87. addarexxgadget reqhandle EXIT 12 184 70 label "_Open"
  88.     openhandle=result
  89. addarexxgadget reqhandle EXIT 184 184 70 label "_Cancel"
  90.     cancelhandle=result
  91. addarexxgadget reqhandle SCROLLIST 12 8 242 label list tlisthandle current 0 height 166
  92.     templatehandle=result
  93.  
  94. /*********************************
  95. ** Show template list requester **
  96. *********************************/
  97.  
  98. doarexxrequester reqhandle
  99.     choice=result
  100.  
  101. /* Get list status */
  102. getarexxgadget reqhandle templatehandle current
  103. i=result+1
  104. tFile=dPath||'/'||List.i||'.data'
  105. docname='Untitled_'||List.i
  106.  
  107. /* set a flag so we know if it's avery labels */
  108. avery=0
  109. if List.i='AveryLabels' then avery=1
  110.  
  111. /* Unallocate requester and list */
  112. freearexxlist tlisthandle
  113. freearexxrequester reqhandle
  114.  
  115. /* If Cancel, then exit */
  116. if choice=cancelhandle then signal CLEANUP
  117.  
  118. /* Open the template data file */
  119. open(tfHandle, tFile, 'R')
  120.  
  121. /* Find out how many page sizes there are */
  122. line=readln(tfHandle)
  123.  
  124. parse var line numsizes .
  125.  
  126. /* Build a list of page sizes */
  127. allocarexxlist
  128.     slisthandle=result
  129. i=0
  130. DO WHILE i<numsizes
  131.     line=readln(tfHandle)
  132.     addarexxlist slisthandle line
  133.     i=i+1
  134. END
  135.  
  136. /*******************
  137. ** Page Size Loop **
  138. *******************/
  139. /* Why is this all in a loop? Because even though you can allocate a
  140.    requester, show a different one, then show the first one again, the size
  141.    of the first one changes to the size of the second one. Thus, it's best
  142.    to unallocate the requester after use and then re-allocate it. */
  143. choice=morehandle
  144. DO WHILE choice=morehandle
  145.  
  146.     /* Allocate page size list requester */
  147.     if avery=0 then DO
  148.         allocarexxrequester '"Choose a page size"' 266 201
  149.             sizereqhandle=result
  150.         END
  151.     else DO
  152.         allocarexxrequester '"Choose an Avery® label style"' 266 201
  153.             sizereqhandle=result
  154.     END
  155.  
  156.     /* Add gadgets */
  157.     addarexxgadget sizereqhandle EXIT 12 184 70 label "_Ok"
  158.         okhandle=result
  159.     addarexxgadget sizereqhandle EXIT 184 184 70 label "_Cancel"
  160.         cancelhandle=result
  161.     if avery=1 then DO
  162.         addarexxgadget sizereqhandle EXIT 98 184 70 label "_More"
  163.             morehandle=result
  164.     END
  165.     addarexxgadget sizereqhandle SCROLLIST 12 8 242 label list slisthandle current 0 height 166
  166.         pagesizehandle=result
  167.  
  168.     /**********************************
  169.     ** Show page size list requester **
  170.     **********************************/
  171.     doarexxrequester sizereqhandle
  172.         choice=result
  173.  
  174.     /* Get list status */
  175.     getarexxgadget sizereqhandle pagesizehandle current
  176.     skipahead=result
  177.  
  178.     /* Unallocate requester */
  179.     freearexxrequester sizereqhandle
  180.  
  181.     if choice=morehandle then DO
  182.         allocarexxrequester '"Other label sizes"' 400 101
  183.             morereqhandle=result
  184.         addarexxgadget morereqhandle EXIT 318 84 70 label "_Ok"
  185.         addarexxgadget morereqhandle TEXT 8 8 384 border none string "'If you need a label size which is not listed'"
  186.         addarexxgadget morereqhandle TEXT 8 18 384 border none string "'here, send one sheet of the label to us and'"
  187.         addarexxgadget morereqhandle TEXT 8 28 384 border none string "'we will update this macro for you. Send to:'"
  188.         addarexxgadget morereqhandle TEXT 8 44 384 border none string "'Soft-Logik Publishing: Product Development'"
  189.         addarexxgadget morereqhandle TEXT 8 54 384 border none string "'11131F South Towne Square'"
  190.         addarexxgadget morereqhandle TEXT 8 64 384 border none string "'St. Louis, MO  63123  USA'"
  191.         doarexxrequester morereqhandle
  192.     END
  193. END
  194.  
  195. /* Unallocate list */
  196. freearexxlist slisthandle
  197.  
  198. /* If Cancel, then exit */
  199. if choice=cancelhandle then signal CLEANUP
  200.  
  201. /* Skip extra page size lines in data file */
  202. i=0
  203. DO WHILE i<skipahead
  204.     line=readln(tfHandle)
  205.     i=i+1
  206. END
  207.  
  208. /* Get the page size info */
  209. line=readln(tfHandle)
  210. parse var line dum horz vert orient face margin.l margin.r margin.t margin.b columns gutter msys guides inc .
  211.  
  212. /* Skip extra page size lines in data file */
  213. i=0
  214. DO WHILE i<(numsizes-skipahead-1)
  215.     readln(tfHandle)
  216.     i=i+1
  217. END
  218.  
  219. /* build the list of guides to create */
  220. i=0
  221. tempos=margin.t
  222. horzguides=""
  223. vertguides=""
  224. DO WHILE i<guides
  225.     tempos=tempos+inc
  226.     horzguides=horzguides||' '||tempos
  227.     i=i+1
  228. END
  229. /* now add custom guide positions to the list */
  230. hpos=pos('*h',line)
  231. vpos=pos('*v',line)
  232. horzguides=horzguides||substr(line,(hpos+2),(vpos-hpos-3))
  233. vertguides=vertguides||right(line,(length(line)-vpos-1))
  234.  
  235. /************************
  236. ** Create the document **
  237. ************************/
  238. 'newdocument '||docname
  239. 'newmasterpage "Default Master Page" '||horz vert orient face
  240. 'setmeasurementdefaults coordinate '||msys mysys||' relative '||msys
  241. 'setmarginguides '||margin.l margin.r margin.t margin.b
  242. 'setcolumnguides '||columns gutter
  243. if horzguides~="" then 'setguides mpg right horizontal at'||horzguides
  244. if vertguides~="" then 'setguides mpg right vertical at'||vertguides
  245.  
  246. /************************
  247. ** Open the window     **
  248. ************************/
  249. 'openwindow View.1 page 1'
  250. 'displayguides ruler page show'
  251. 'displaygrid hide'
  252. 'snaptogrid off'
  253. 'snaptoguides on'
  254. 'setdocumentstatus unchanged'
  255.  
  256. signal cleanup
  257.  
  258.  
  259.  
  260. /**********************
  261. ** Clean up and exit **
  262. **********************/
  263. CLEANUP:
  264. exit
  265. return 0
  266.