home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 3 / PDCD_3.iso / tex / semtex / !SemTeX / Source (.txt) < prev    next >
RISC OS BBC BASIC V Source  |  1994-12-18  |  29KB  |  1,255 lines

  1.  ><SemTeX$Dir>.!RunImage
  2.  This application is FreeWare. (c) 1994 Dick Alstein
  3. Appl$="SemTeX"
  4. #ApplVersion$="1.00 (17-Dec-94)"
  5. error
  6. quit%=
  7.     5mask%=(1<<0)+(1<<4)+(1<<5)+(1<<7)+(1<<11)+(1<<12)
  8.  "Wimp_Poll",mask%,blk% 
  9.  reason%
  10.  reason% 
  11.        
  12.  blk%!0=controlwin% 
  13. 4        
  14. control_openpane(blk%!28,blk%!4,blk%!8)
  15.          blk%!28=controlpane%
  16.       
  17. $      
  18.  "Wimp_OpenWindow",,blk%
  19.        
  20.  blk%!0=controlwin% 
  21. 4        
  22. control_openpane(blk%!28,blk%!4,blk%!8)
  23.       
  24. "    
  25.  3 : 
  26. closewindow(blk%!0)
  27. ?    
  28.  6 : 
  29. mouseclick(blk%!0,blk%!4,blk%!8,blk%!12,blk%!16)
  30.      
  31.  7 : 
  32. startsavedialogue
  33. *    
  34.  8 : 
  35.  "Wimp_ProcessKey",blk%!24
  36.  9 : 
  37. menuselect(blk%)
  38. 1    
  39.  17,18 : 
  40. receive(blk%!4,blk%!8,blk%!16)
  41. 1    
  42.  19 : 
  43. receiveack(blk%!4,blk%!8,blk%!16)
  44.  quit%
  45. msg_exit
  46.  "Wimp_CloseDown"
  47.  errblk% &100
  48.  msglist% 64
  49. msglist%!0=3
  50. msglist%!4=5
  51. msglist%!8=&502
  52. msglist%!12=&400C1
  53. msglist%!16=2
  54. msglist%!20=4
  55. msglist%!24=10
  56. msglist%!28=0
  57.  "Wimp_Initialise",300,&4B534154,Appl$,msglist% 
  58.  osversion%,thistask%
  59. error
  60.  scrapblk% &100
  61.  scrapblk2% &100
  62.  blk% &700
  63. indsize%=&400
  64.  indir% indsize%
  65. indirend%=indir%+indsize%
  66.  ptrinfo% 24
  67. 7&ApplDir$=
  68. readvarval("SemTeX$Dir")
  69. msg_init
  70. scrapblk%!0=-1
  71. :!scrapblk%!4=0 : scrapblk%!8=0
  72. ;%scrapblk%!12=68 : scrapblk%!16=68
  73. scrapblk%!20=&7000301A
  74. $(scrapblk%+24)="!semtex"
  75.  "Wimp_CreateIcon",,scrapblk% 
  76.  baricon%
  77.  "Wimp_OpenTemplate",,ApplDir$+".Templates"
  78. @"infowin%=
  79. loadtemplate("Info")
  80. A%$(blk%!(92+7*32+20))=ApplVersion$
  81. B%savewin%=
  82. loadtemplate("SaveBox")
  83. C savefname%=blk%!(92+0*32+20)
  84. D(choiceswin%=
  85. loadtemplate("Choices")
  86.  actionstr%(4)
  87. F#actionstr%(1)=blk%!(92+6*32+20)
  88. G#actionstr%(2)=blk%!(92+9*32+20)
  89. H$actionstr%(3)=blk%!(92+12*32+20)
  90. I$actionstr%(4)=blk%!(92+15*32+20)
  91. J(controlwin%=
  92. loadtemplate("Control")
  93. K-controlpane%=
  94. loadtemplate("ControlPane")
  95. cpane_width%=blk%!12-blk%!4
  96. M cpane_height%=blk%!16-blk%!8
  97. N(convertwin%=
  98. loadtemplate("Convert")
  99. O#convertfname%=blk%!(92+0*32+20)
  100. P$convertsprite%=blk%!(92+1*32+20)
  101. Q%convertremtxt1%=blk%!(92+3*32+20)
  102. R%convertremtxt2%=blk%!(92+4*32+20)
  103.  "Wimp_CloseTemplate"
  104. readscreenvars
  105. nrofactions%=5
  106.  action$(nrofactions%),action%(4)
  107. action$(1)="Ignore"
  108. action$(2)="Open Control"
  109. action$(3)="Edit"
  110. action$(4)="Run LaTeX"
  111. action$(5)="Run TeX"
  112. initmenus
  113. ]-historysize%=
  114. msg_lookup0("LIST_SIZE"))
  115.  historysize%<1 
  116. complain(
  117. msg_lookup0("IVLS"))
  118.   historysize%=16
  119.  docs% 256*historysize%
  120.  doc%(historysize%)
  121. scrapblk%!0=controlwin%
  122. scrapblk%!4=0
  123.  "Wimp_GetIconState",,scrapblk%
  124. g control_line_x%=scrapblk%!16
  125. h#control_line_y%=-(scrapblk%!12)
  126. i control_line_f%=scrapblk%!24
  127. j control_line_v%=scrapblk%!32
  128.  "Wimp_DeleteIcon",,scrapblk%
  129.  i%=1 
  130.  historysize%
  131.   doc%(i%)=docs%+256*(i%-1)
  132.   $(doc%(i%))=""
  133. nrofdocs%=0
  134. currentdoc%=0
  135. control_setextent
  136. convertfnsize%=32
  137.  convertfn$(convertfnsize%)
  138. nrofconvertfns%=0
  139. choices_load
  140. choices_set
  141. choices_read
  142.  i%,j%
  143.  i%=1 
  144.  j%=1 
  145.  nrofactions%
  146. ~8    
  147.  $(actionstr%(i%))=action$(j%) 
  148.  action%(i%)=j%
  149. choices_set
  150.  i%=1 
  151. ,  $(actionstr%(i%))=action$(action%(i%))
  152. redrawicon(choiceswin%,3+3*i%)
  153. choices_default
  154. action%(1)=3
  155. action%(2)=3
  156. action%(3)=2
  157. action%(4)=2
  158. choices_load
  159.  (ApplDir$+".Choices")
  160.  f%=0 
  161. choices_default
  162.  #f% : 
  163. error : 
  164. choices_default : 
  165. #f%,action%(1),action%(2),action%(3),action%(4)
  166. choices_save
  167.  (ApplDir$+".Choices")
  168.  f%<>0 
  169.  #f% : 
  170. error : 
  171. #f%,action%(1),action%(2),action%(3),action%(4)
  172. closewindow(handle%)
  173. scrapblk%!0=handle%
  174.  "Wimp_CloseWindow",,scrapblk%
  175.  handle%=controlwin% 
  176.   scrapblk%!0=controlpane%
  177.  "Wimp_CloseWindow",,scrapblk%
  178. complain(text$)
  179.  dummy%
  180. dummy%=
  181. errbox(text$,16)
  182. control_open
  183.  dx%,dy%,offs%
  184. scrapblk%!0=controlwin%
  185.  "Wimp_GetWindowState",,scrapblk%
  186.  (scrapblk%!16-scrapblk%!8)>control_extent% 
  187. .  scrapblk%!16=scrapblk%!8+control_extent%
  188.     dx%=0
  189.     dy%=0
  190.  open window 'on top of' iconbar icon (if not already open)
  191.  ((scrapblk%!32 
  192.  (1<<16))=0) 
  193.  "Wimp_GetPointerInfo",,ptrinfo%
  194. 3  dx%=ptrinfo%!0-(scrapblk%!12+scrapblk%!4) 
  195.   dy%=96-scrapblk%!8
  196. scrapblk%!4=scrapblk%!4+dx%
  197. scrapblk%!8=scrapblk%!8+dy%
  198. !scrapblk%!12=scrapblk%!12+dx%
  199. !scrapblk%!16=scrapblk%!16+dy%
  200.  ensure that selected line is visible
  201.  nrofdocs%>0 
  202. *  offs%=-(control_line_y%*currentdoc%)
  203.  scrapblk%!24 < (offs%+control_line_y%) 
  204. *    scrapblk%!24=offs%+control_line_y%
  205.  scrapblk%!24-(scrapblk%!16-scrapblk%!8-cpane_height%) > offs% 
  206. C    scrapblk%!24=offs%+(scrapblk%!16-scrapblk%!8-cpane_height%)
  207. scrapblk%!28=-1
  208. control_openpane(scrapblk%!28,scrapblk%!4,scrapblk%!8)
  209. scrapblk%!28=controlpane%
  210.  "Wimp_OpenWindow",,scrapblk%
  211. control_openpane(scrapblk%!28,scrapblk%!4,scrapblk%!8)
  212. control_openpane(behind%,pxmin%,pymin%)
  213.  dx%,dy%
  214. scrapblk2%!0=controlpane%
  215.  "Wimp_GetWindowState",,scrapblk2%
  216.     dx%=0
  217.     dy%=0
  218. scrapblk2%!4=pxmin%+dx%
  219. scrapblk2%!8=pymin%+dy%
  220. )scrapblk2%!12=pxmin%+cpane_width%+dx%
  221. *scrapblk2%!16=pymin%+cpane_height%+dy%
  222. scrapblk2%!28=behind%
  223.  "Wimp_OpenWindow",,scrapblk2%
  224. control_add(file$)
  225.  nrofdocs%>0 
  226. selecticon(controlwin%,currentdoc%-1,0)
  227.  (i%<nrofdocs%) 
  228.  ($doc%(i%)<>file$)
  229.   i%+=1
  230.  $doc%(i%)=file$ 
  231.   currentdoc%=i%
  232.  nrofdocs%<historysize% 
  233. !    
  234.  create new icon in list
  235.     nrofdocs%+=1
  236.     i%=nrofdocs%
  237.     scrapblk%!0=controlwin%
  238.     scrapblk%!4=0
  239. )    scrapblk%!8=-(control_line_y%*i%)
  240. $    scrapblk%!12=control_line_x%
  241. .    scrapblk%!16=-(control_line_y%*(i%-1))
  242. $    scrapblk%!20=control_line_f%
  243.     scrapblk%!24=doc%(i%)
  244. $    scrapblk%!28=control_line_v%
  245.     scrapblk%!32=256
  246. '    
  247.  "Wimp_CreateIcon",,scrapblk%
  248. control_setextent
  249.  shift lines in history
  250.  i%>1
  251.     $doc%(i%)=$doc%(i%-1)
  252. %    
  253. redrawicon(controlwin%,i%-1)
  254.     i%-=1
  255.   $doc%(1)=file$
  256.   currentdoc%=1
  257. redrawicon(controlwin%,0)
  258. selecticon(controlwin%,currentdoc%-1,1)
  259. control_remove(nr%)
  260.  shift lines in history
  261. i%=nr%
  262.  i%<nrofdocs%
  263.   $doc%(i%)=$doc%(i%+1)
  264. redrawicon(controlwin%,i%-1)
  265.   i%+=1
  266.  (currentdoc%>nr%) 
  267.  (currentdoc%=nrofdocs%) 
  268. selecticon(controlwin%,currentdoc%-1,0)
  269.   currentdoc%-=1
  270. selecticon(controlwin%,currentdoc%-1,1)
  271. $doc%(nrofdocs%)=""
  272. redrawicon(controlwin%,nrofdocs%-1)
  273. scrapblk%!0=controlwin%
  274. scrapblk%!4=nrofdocs%-1
  275.  "Wimp_DeleteIcon",,scrapblk%
  276. nrofdocs%-=1
  277. control_setextent
  278. control_setextent
  279. l%=nrofdocs%
  280.  l%<5 
  281.  l%=5
  282. scrapblk2%!0=0
  283. +4scrapblk2%!4=-(control_line_y%*l%)-cpane_height%
  284. , scrapblk2%!8=control_line_x%
  285. scrapblk2%!12=0
  286.  "Wimp_SetExtent",controlwin%,scrapblk2%
  287. /!control_extent%=-scrapblk2%!4
  288.  check if visible area is not beyond new work area
  289. scrapblk%!0=controlwin%
  290.  "Wimp_GetWindowState",,scrapblk%
  291.  (scrapblk%!32 
  292.  (1<<16)) 
  293.  (scrapblk%!16-scrapblk%!8)>control_extent% 
  294. 50    scrapblk%!8=scrapblk%!16-control_extent%
  295. 6'    
  296.  "Wimp_OpenWindow",,scrapblk%
  297. 7?    
  298. control_openpane(scrapblk%!28,scrapblk%!4,scrapblk%!8)
  299. convert(todir$)
  300.  opts$,name$,leaf$,ext$,s%,cmd$
  301. opts$=
  302. msg_lookup0("COPT")
  303.  converttype% 
  304. A*    
  305.  convert "FILE/EXT" to "file.ext"
  306.  (nrofconvertfns%>0)
  307. C+      name$=convertfn$(nrofconvertfns%)
  308. D)      leaf$=
  309. leafname(
  310. locase(name$))
  311.       s%=
  312. leaf$,"/")
  313.       ext$=
  314. leaf$,s%+1)
  315.       leaf$=
  316. leaf$,s%-1)
  317. HB      
  318.  "OS_File",8,todir$+"."+leaf$ : 
  319.  make sure dir exists
  320. I       cmd$="Copy "+name$+" "
  321. J3      cmd$+=todir$+"."+leaf$+"."+ext$+" "+opts$
  322. K"      
  323.  "Wimp_StartTask",cmd$
  324.       nrofconvertfns%-=1
  325. M        
  326. O+    
  327.  convert "file.ext" to "FILE/EXT" 
  328.  (nrofconvertfns%>0)
  329. Q+      name$=convertfn$(nrofconvertfns%)
  330.       ext$=
  331. leafname(name$)
  332. S,      
  333.  truncate to 8 chars (=DOS style)
  334. T/      leaf$=
  335. leafname(
  336. dirname(name$)),8) 
  337. U       cmd$="Copy "+name$+" "
  338. V3      cmd$+=todir$+"."+leaf$+"/"+ext$+" "+opts$
  339. W"      
  340.  "Wimp_StartTask",cmd$
  341.       nrofconvertfns%-=1
  342. Y        
  343. convert_add(dir$,leaf$)
  344.  o%,r%
  345.  nrofconvertfns%=convertfnsize% 
  346. complain(
  347. msg_lookup1("TMFC",
  348. (convertfnsize%)))
  349.  converttype% 
  350.       nrofconvertfns%+=1
  351. e4      convertfn$(nrofconvertfns%)=dir$+"."+leaf$
  352. f'      $(convertsprite%)="directory"
  353.       
  354.  leaf$="*" 
  355. i(        
  356.  add all files in directory
  357.         o%=0
  358.         
  359. lD          
  360.  "OS_GBPB",10,dir$,scrapblk%,1,o%,256,"*" 
  361.  ,,,r%,o%
  362. m4          
  363.  (r%>0) 
  364.  ((scrapblk%!16 
  365.  1) <> 0) 
  366. n"            nrofconvertfns%+=1
  367. oG            convertfn$(nrofconvertfns%)=dir$+"."+
  368. str(scrapblk%+20)
  369.           
  370. q8        
  371.  (o%=-1) 
  372.  (nrofconvertfns%=convertfnsize%)
  373.         
  374.  o%<>-1 
  375. s?          
  376. complain(
  377. msg_lookup1("TMFC",
  378. (convertfnsize%)))
  379.         
  380.       
  381.         nrofconvertfns%+=1
  382. w