home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Exec 3 / CD_Magazyn_EXEC_nr_3.iso / Recent / biz / swood / FW_AllInOne.lha / Makros / Fu゚noten < prev    next >
Text File  |  1998-01-18  |  20KB  |  843 lines

  1. /* Optimized with RexxOpt 1.7 */
  2.  
  3. Parse ARG FW
  4. if ~show('L',"rexxreqtools.library") then
  5. if ~addlib('rexxreqtools.library',0,-30,0) then;do
  6. ShowMessage 1 1 '"Fehler...." "Benötige Libs:rexxreqtools.library" " A B B R U C H ! !" "Okay" "" ""'
  7. exit
  8. end
  9. IF ~show('L','tritonrexx.library') then
  10. IF ~ADDLIB('tritonrexx.library',10,-30,0) THEN;DO
  11. ShowMessage 2 1 '"Fehler...." "Benötige Libs:tritonrexx.library" "" "Abbruch" "" ""'
  12. exit
  13. END
  14. R='0A'X
  15. SIGNAL ON SYNTAX
  16. If FW='' then;do
  17. Address='FinalW'
  18. Options results
  19. STATUS PORTNAME
  20. FW=result
  21. End
  22. address(FW)
  23. CtrlUp
  24. ShiftUp
  25. AltUp
  26. GetSectionList "¤"
  27. IF Pos("FN¤",Result)=0 THEN Disi=1
  28. Else Disi=0
  29. address "REXX"
  30. If open('Hilfe',"S:FW_Paket.prefs","R") then;do
  31. HilfeVerz=readln('Hilfe')
  32. Call Close('Hilfe')
  33. End
  34. else HilfeVerz=''
  35. wie.0=2
  36. wie.1="seitenweise"
  37. wie.2="durchgehend"
  38. speed.0=2
  39. speed.1="normal"
  40. speed.2="schnell"
  41. If ~exists("s:FW_Fussnote.prefs") then;do
  42. wie=1
  43. fo="SoftSans"
  44. si="12"
  45. ausgabe="%F)"
  46. Linie=1.5
  47. GetDocItemPrefs Decimal
  48. Punkt=Result
  49. If Punkt="Comma" then DocItemPrefs DECIMAL Period
  50. GetDocItemPrefs Tabs
  51. Einzug=result
  52. SText=0
  53. speed=1
  54. end
  55. else;do
  56. Call Open("prefs","S:FW_Fussnote.prefs","R")
  57. wie=Readln('prefs')
  58. fo=Readln('prefs')
  59. si=Readln('prefs')
  60. ausgabe=Readln('prefs')
  61. Linie=Readln('prefs')
  62. Einzug=Readln('prefs')
  63. SText=ReadLn('prefs')
  64. speed=ReadLn('prefs')
  65. Call Close("prefs")
  66. end
  67. pos=max(index(fo,':'),lastpos('/',fo))
  68. If pos~=0 then fond=Delstr(fo,1,pos)
  69. else fond=fo
  70. If SText=1 then fond="Cursorposition"
  71. o1="Schrift: "||fond||", Größe: "||si
  72. o2="Numerierung: "||wie.wie||", Ausgabe: "||ausgabe
  73. o3="Linie: "||Linie||" cm, Einzug: "||Einzug||" cm"
  74. o4="Geschwindigkeit: "||speed.speed
  75. oldfond=fond;oldfo=fo
  76. oldspeed=speed;oldwie=wie;oldSText=SText
  77. apptags='TRCA_Name     Fußnote',
  78. 'TRCA_LongName "Fußnote"',
  79. 'TRCA_Info     "für FinalWriter"',
  80. 'TRCA_Version  "1.0 registered"',
  81. 'TRCA_Release  "1"',
  82. 'TRCA_Date     "09.01.98"',
  83. 'TAG_END'
  84. windowtags=WindowID(1),
  85. WindowPosition('TRWP_CENTERDISPLAY'),
  86. WindowFlags('TRWF_NOMINTEXTWIDTH'),
  87. PubScreenName('FinalWriterPubScreen'),
  88. WindowTitle("Fußnotenverwaltung"),
  89. BeginMenu('Projekt'),
  90. MenuItem('Voreinsteller...',102),
  91. 'ItemBarlabel',
  92. MenuItem('Q_Verlassen',104),
  93. BeginMenu('?'),
  94. MenuItem('?_Info',101),
  95. MenuItem('H_Hilfe',103),
  96. 'VertGroupAC SpaceS',
  97. 'HorizGroupAC SpaceS',
  98. 'VertGroupAC SpaceS',
  99. Button('Fußnote _setzen',1),
  100. 'SpaceS',
  101. TextN('Fußnotentext:'),
  102. StringGadget("",9) 'TRAT_DISABLED 1 TRAT_VALUE 999',
  103. 'Space',
  104. Button('Fußnote _löschen',2) 'TRAT_Disabled' Disi,
  105. 'SpaceS',
  106. Button('Fußnoten _erstellen',3) 'TRAT_Disabled' Disi,
  107. 'SpaceS',
  108. 'HorizSeparator',
  109. 'SpaceS',
  110. TextH(o1) 'TRAT_ID 5',
  111. TextH(o2) 'TRAT_ID 6',
  112. TextH(o3) 'TRAT_ID 7',
  113. TextH(o4) 'TRAT_ID 8',
  114. 'SpaceS',
  115. 'EndGroup SpaceS',
  116. 'EndGroup SpaceS',
  117. 'EndGroup SpaceS',
  118. 'EndProject'
  119. app=TR_CREATEAPP('TRCA_Name Fußnote')
  120. IF app ~='00000000'x THEN;DO
  121. window1=TR_OPENPROJECT(app,windowtags)
  122. IF window1 ~='00000000'x THEN;DO
  123. ende=0
  124. DO WHILE ~ende
  125. CALL TR_WAIT(app,'')
  126. DO WHILE TR_HANDLEMSG(app,'event')
  127. IF event.trm_class='TRMS_CLOSEWINDOW' THEN ende=1
  128. IF event.trm_class='TRMS_NEWVALUE' THEN;DO
  129. SELECT
  130. WHEN event.trm_id=9 THEN;Do
  131. FNText=TR_GETATTRIBUTE(window1,9,'TROB_String')
  132. FNText=FNText||" "
  133. If FNText~="" then Call FNsetzen
  134. Call TR_SETATTRIBUTE(window1,9,'TRAT_DISABLED',1)
  135. Call TR_SETATTRIBUTE(window1,1,'TRAT_DISABLED',0)
  136. Call TR_SETATTRIBUTE(window1,2,'TRAT_DISABLED',Disi)
  137. Call TR_SETATTRIBUTE(window1,3,'TRAT_DISABLED',Disi)
  138. END
  139. OTHERWISE NOP
  140. END
  141. END
  142. IF event.trm_class='TRMS_ACTION' THEN;DO
  143. SELECT
  144. WHEN event.trm_id=1 THEN;Do
  145. Call TR_SETATTRIBUTE(window1,9,'TRAT_DISABLED',0)
  146. Call TR_SETATTRIBUTE(window1,1,'TRAT_DISABLED',1)
  147. Call TR_SendMessage(window1,9,'TROM_ACTIVATE',0)
  148. END
  149. WHEN event.trm_id=2 THEN Call FNloeschen
  150. WHEN event.trm_id=3 THEN Call FNerstellen
  151. WHEN event.trm_id=101 THEN Call rtezrequest("Aus dem Makro-Paket:"||R||R||"Fußnotenverwaltung V1.0 für FW"||R||"© 1998 Heiko Schröder","Danke für Ihre Registrierung.","Info","rt_pubscrname=FinalWriterPubScreen")
  152. WHEN event.trm_id=102 THEN Call Voreinstellung
  153. WHEN event.trm_id=103 THEN address command "run Multiview PUBSCREEN=FinalWriterPubScreen "||d2c(34)||HilfeVerz||"Fußnoten.guide"||d2c(34)
  154. WHEN event.trm_id=104 THEN ende=1
  155. OTHERWISE NOP
  156. END
  157. Call TR_SETATTRIBUTE(window1,2,'TRAT_DISABLED',Disi)
  158. Call TR_SETATTRIBUTE(window1,3,'TRAT_DISABLED',Disi)
  159. END
  160. END
  161. END
  162. CALL TR_CLOSEPROJECT(window1)
  163. END
  164. CALL TR_DELETEAPP(app)
  165. END
  166. ELSE
  167. CALL quit('Kann das Fenster nicht öffnen',10)
  168. Call Fini
  169. Exit
  170. FNsetzen:
  171. address(FW)
  172. STATUS FileName
  173. xyz=Result
  174. IF POS(".FNote",Result)~=0 THEN;DO
  175. ShowMessage 1 1 '"Hier kann ich keine Fußnoten mehr erstellen!"   "Bitte benutzen Sie die Datei ohne die Endung: .FNOTE"   ""   "Klick" "" ""'
  176. Call Fini
  177. Return
  178. End
  179. GetSectionSetup Name
  180. Abschnitt=Result
  181. IF Pos("FN¤",Result)~=0 then;do
  182. ShowMessage 1 1 '"In diesem Abschnitt werden keine Fußnoten gesetzt."   "Hier dürfen Sie überhaupt nichts ändern!!!"   "Ansonsten können bei der Fußnotenerstellung Fehler auftreten."   "Klick" "" ""'
  183. Call Fini
  184. Return
  185. End
  186. STATUS ParaPos
  187. IF Words(Result)=4 THEN;DO
  188. ShowMessage 1 1 '"Leider ist Text markiert!"   "Bitte stellen Sie den Cursor hinter das betreffende Wort." ""   "Ach ja" "" ""'
  189. Call Fini
  190. Return
  191. END
  192. Do ForEver
  193. Cursor Left
  194. Extract
  195. IF Result~=" " THEN LEAVE
  196. END
  197. Cursor Right
  198. STATUS ParaPos
  199. pos=Result
  200. Cursor Right
  201. GetSectionList "¤"
  202. IF Pos("FN¤"||Abschnitt,Result)=0 THEN;DO
  203. Disi=0
  204. NewSection Text Name "FN¤"||Abschnitt
  205. SectionSetup Top 0 Bottom 0 Inside 2 Outside 0
  206. SectionSetup Header 2.4
  207. EditRightMaster
  208. FontSize 18
  209. Style UnderLine
  210. Type "Fußnoten für den Abschnitt: "||Abschnitt||"."
  211. Style Normal;NewParagraph
  212. Type "Bitte NICHTS verändern!!!"
  213. EditBody
  214. SetTab "2" Left
  215. LeftMargin "2"
  216. TYPE "¤"
  217. END
  218. ELSE GoToSection "FN¤"||Abschnitt
  219. AltDown;CtrlDown
  220. cursor down
  221. CtrlUp;AltUp
  222. cursor Left
  223. STATUS ParaPos
  224. Line=Word(result,1)
  225. If Line>1 then;do
  226. Cursor Up
  227. EXTRACT
  228. DO WHILE RESULT~="¤"
  229. Line=Line-1
  230. If Line<1 then Leave
  231. MoveToPara Line 0
  232. Extract
  233. END
  234. Cursor Right
  235. Nummer=0
  236. Extract
  237. DO WHILE ((RESULT<":")&(RESULT>"/"))
  238. Nummer=Nummer*10+Result
  239. cursor Right
  240. Extract
  241. END
  242. End
  243. Else Nummer=0
  244. Nummer=Nummer+1
  245. AltDown;CtrlDown
  246. cursor down
  247. CtrlUp;AltUp
  248. IF Nummer<10 THEN TYPE 0||Nummer
  249. ELSE TYPE Nummer
  250. TYPE X2C(09)||FNText;NewParagraph
  251. TYPE "¤"
  252. cursor Up
  253. AltDown;CtrlDown
  254. cursor Right
  255. CtrlUp;AltUp
  256. GoToSection Abschnitt
  257. MoveToPara Word(pos,1) Word(pos,2)
  258. Position SuperScript
  259. Type "¤"
  260. IF Nummer<10 THEN TYPE "0"||Nummer
  261. ELSE TYPE Nummer
  262. Position Normal
  263. EXTRACT
  264. next=result
  265. IF (next~=" "&next~=d2c(9)&next~=x2c(0A)) THEN
  266. IF Pos(next,". ,   )")=0 THEN TYPE " "
  267. ELSE NOP
  268. IF (next=" "|next=d2c(9)) then Cursor Right
  269. Nummer=0
  270. Return
  271. FNloeschen:
  272. address(FW)
  273. STATUS Filename
  274. IF POS(".FNote",Result)~=0 THEN;DO
  275. ShowMessage 1 1 '"Hier kann ich keine Fußnoten löschen!"   "Bitte benutzen Sie die Datei ohne die Endung: .FNOTE"   ""   "Klick" "" ""'
  276. Return
  277. End
  278. GetSectionSetup Name
  279. Abschnitt=Result
  280. STATUS ParaPos
  281. pos=result
  282. IF (Pos("FN¤",Abschnitt)=0&Words(pos)=2) THEN;DO
  283. ShowMessage 2 1 '"Um eine Fußnote zu löschen, muß diese markiert sein."   "Oder möchten Sie ALLE Fußnoten dieses Abschnitts LÖSCHEN?" ""   "Ja" "Nein" ""'
  284. If result=2 then Return
  285. Else;Do
  286. ShowMessage 2 1 '"Sollen wirklich ALLE Fußnoten"       "in diesem Abschnitt gelöscht werden?"      ""      "Ja" "Nein" ""'
  287. If result=2 then Return
  288. Else;Do
  289. GetSectionSetup Name
  290. RemoveSection "FN¤"||result FORCE
  291. MoveToLine 1 0
  292. SetFind WRAP NO
  293. FIND "¤"
  294. Do ForEver
  295. Find "¤"
  296. If RC~=0 then Break
  297. Delete
  298. ShiftDown
  299. EXTRACT
  300. DO WHILE ((RESULT<":")&(RESULT>"/"))
  301. Cursor Right
  302. Delete
  303. Extract
  304. END
  305. ShiftUp
  306. END
  307. ShowMessage 1 1 '"Alle Fußnoten dieses Abschnitts wurden gelöscht!"         "Bitte schließen Sie das Fenster: Suchen"         ""         "Klick" "" ""'
  308. Return
  309. End
  310. End
  311. END
  312. Extract
  313. If pos("¤",result)=0 then;do
  314. ShowMessage 1 1 '"Dies ist keine Fußnote!"    ""   ""   "Klick" "" ""'
  315. Return
  316. END
  317. MoveToPara Word(Pos,1) Word(Pos,2)+1
  318. Nummer=0
  319. EXTRACT
  320. DO WHILE ((RESULT<":")&(RESULT>"/"))
  321. Nummer=Nummer*10+Result
  322. Cursor Right
  323. Extract
  324. END
  325. MoveToPara Word(Pos,1) Word(Pos,2)
  326. ShiftDown
  327. MoveToPara Word(Pos,3) Word(Pos,4)
  328. ShiftUp
  329. If Nummer=0 then;do
  330. ShowMessage 1 1 '"Diese Fußnote existiert nicht mehr!"    "Somit kann nichts gelöscht werden."   ""   "Klick" "" ""'
  331. Return
  332. END
  333. If Nummer<10 then Nummer="0"||Nummer
  334. ShowMessage 1 1 '"Die Fußnote ¤'Nummer' wird jetzt gelöscht!""""Sind Sie sich sicher?""Ja" "Abbrechen" ""'
  335. IF Result=2 then;do
  336. Call Fini
  337. Return
  338. End
  339. else Delete
  340. GotoSection "FN¤"||Abschnitt
  341. SetFind WRAP NO
  342. FIND
  343. MoveToPara 1 0
  344. FIND ("¤"Nummer)
  345. STATUS ParaPos
  346. Pos=word(result,1) word(result,2)
  347. AltDown
  348. DO WHILE RESULT~="¤"
  349. Cursor Down
  350. Extract
  351. END
  352. AltUp;ShiftDown
  353. MoveToPara Pos
  354. ShiftUp
  355. Delete
  356. CtrlDown;AltDown;Cursor Down;AltUp;CtrlUp
  357. STATUS ParaPos
  358. If Result="1 1" then RemoveSection "FN¤"||Abschnitt FORCE
  359. GetSectionList "¤"
  360. IF Pos("FN¤",Result)=0 THEN Disi=1
  361. GotoSection Abschnitt
  362. ShowMessage 1 1 '"Die Fußnote wurde gelöscht!"   "Bitte schließen Sie das Fenster: Suchen"   ""   "Klick" "" ""'
  363. Return
  364. FNerstellen:
  365. address(FW)
  366. a=pos("%F",ausgabe)
  367. If a=0 then;do
  368. ShowMessage 1 1 '"Die Ausgabe: 'ausgabe' ist nicht korrekt."   "Es fehlt die Nummernkennung: %F"   "Bitte schauen Sie noch einmal in die Hilfe."   "Ende" "" ""'
  369. CALL Fini
  370. Return
  371. End
  372. else;do
  373. ausgabe1=Left(ausgabe,a-1)
  374. ausgabe2=Right(ausgabe,Length(ausgabe)-a-1)
  375. end
  376. STATUS View
  377. Zoom=result
  378. STATUS LinePos
  379. Zurueck=result
  380. STATUS FileName
  381. IF POS(".FNote",Result)=0 THEN;DO
  382. ShowMessage 1 1 '"Die Datei wird jetzt abgespeichert!"   "Es wird eine neue Datei mit dem Zusatz .FNote erstellt!"   "Nur in dieser werden die Fußnoten unten auf die Seiten geschrieben."   "Weiter" "Abbrechen" ""'
  383. IF Result=2 THEN;do
  384. CALL Fini
  385. Return
  386. End
  387. SAVE
  388. STATUS PathName
  389. DokName=result
  390. END
  391. Else;do
  392. ShowMessage 1 1 '"Die Fußnoten sind schon erstellt worden!"   "Bitte benutzen Sie die Datei ohne die Endung: .FNOTE"   ""   "Klick" "" ""'
  393. Return
  394. End
  395. Numerierung=wie
  396. GetSectionList "ð"
  397. Liste=result
  398. Anz=0
  399. temp=Liste
  400. Do ForEver
  401. a=pos("ð",temp)
  402. If a~=0 then FNTemp=Delstr(temp,a)
  403. else FNTemp=temp
  404. If pos("FN¤",FNTemp)=0 then;do
  405. Anz=Anz+1
  406. Abschnitte.Anz=FNTemp
  407. End
  408. If a=0 then Break
  409. temp=Right(temp,Length(temp)-a)
  410. End
  411. Abschnitte.0=Anz
  412. If speed=2 then Call AnfView
  413. AnzTemp=0
  414. Do i=1 to Anz
  415. a=pos("FN¤"Abschnitte.i,Liste)
  416. If a~=0 then;do
  417. AnzTemp=AnzTemp+1
  418. FNAbschnitt.AnzTemp="FN¤"Abschnitte.i
  419. Abschnitt.AnzTemp=Abschnitte.i
  420. End
  421. End
  422. FNAbschnitt.0=AnzTemp;Abschnitt.0=AnzTemp;Abschnitte.0=0
  423. SetFind WRAP NO
  424. FIND "¤"
  425. LinePrefs TextFlow None LineWt .5 LineColor Schwarz
  426. FramePrefs TextFlow Right FlowDist 0.1 LineWt None Fill Transparent
  427. SVA=0
  428. Do h=1 to FNAbschnitt.0
  429. g=0
  430. CtrlUp;AltUp;ShiftUp
  431. GotoSection Abschnitt.h
  432. GetPageSetup Height
  433. DokHoehe=result
  434. GetSectionSetup Top Bottom Header Footer
  435. DS=result
  436. DokHoehe=DokHoehe-Word(DS,1)-Word(DS,2)-Word(DS,3)-Word(DS,4)
  437. MoveToLine 1 0
  438. i=0
  439. DO ForEver
  440. Find "¤"
  441. If RC~=0 then Break
  442. i=i+1
  443. Cursor Right
  444. FNote.i=0
  445. EXTRACT
  446. DO WHILE ((RESULT<":")&(RESULT>"/"))
  447. FNote.i=FNote.i*10+Result
  448. Cursor Right
  449. Extract
  450. END
  451. IF FNote.i=0 THEN i=i-1
  452. END
  453. IF i=0 THEN;DO
  454. ShowMessage 1 1 '"In diesem Abschnitt gibt es keine Fußnoten!"      "Bitte gehe in den nächsten oder übernächsten oder ..."      "Und schließen Sie bitte das Fenster: Suchen"      "Klick" "" ""'
  455. Call Fini
  456. Return
  457. END
  458. FNote.0=i
  459. GoToSection FNAbschnitt.h
  460. TextTool
  461. DO i=1 TO FNote.0
  462. MoveToLine 1 0
  463. OK=0
  464. DO ForEver
  465. IF FNote.i<10 THEN FIND ("¤0"FNote.i)
  466. ELSE FIND ("¤"FNote.i)
  467. STATUS LinePos
  468. pos=Result
  469. IF Words(pos)=2 THEN LEAVE
  470. MoveToLine Word(pos,3) Word(pos,4)
  471. Extract
  472. IF ((RESULT<0)|(RESULT>9)) THEN Break
  473. END
  474. CtrlDown
  475. DO WHILE RESULT~="¤"
  476. Cursor Down
  477. Extract
  478. END
  479. CtrlUp
  480. Cursor Left
  481. ShiftDown
  482. MoveToLine Word(pos,3) Word(pos,4)
  483. ShiftUp
  484. Extract
  485. VText.i=Result
  486. END
  487. STATUS FontCase
  488. SCase=result
  489. address(FW)
  490. GoToSection Abschnitt.h
  491. i=1;Frame=false
  492. FNPos=1 0
  493. MoveToLine 1 0
  494. Merke_i=0
  495. DO WHILE i<=FNote.0
  496. MoveToLine Word(FNPos,1) Word(FNPos,2)
  497. IF FNote.i<10 THEN FIND ("¤0"FNote.i)
  498. ELSE FIND ("¤"FNote.i)
  499. If RC~=0 then Break
  500. STATUS LinePos
  501. FNPos=Result
  502. STATUS Page "Insert"
  503. FNSeite=RESULT
  504. If (FNSeite~=MerkeSeite&Frame=true&Merke_i~=i-1) then;do
  505. GraphicTool
  506. DrawLine MerkeSeite-SVA LRand oben LRand+Linie oben
  507. Lock
  508. neu=0
  509. End
  510. If (FNSeite~=MerkeSeite&Frame=true) then;do
  511. SelectObject ObjectID
  512. Lock
  513. Frame=false
  514. Merke_i=i
  515. If Numerierung=1 then g=i-1
  516. End
  517. IF Frame=false THEN;DO
  518. GetSectionSetup Inside OutSide
  519. Parse Var result LRand RRand
  520. GetPageSetup Width
  521. weite=result-LRand-RRand
  522. NewFrame FNSeite-SVA LRand DokHoehe weite
  523. Frame=true
  524. neu=1
  525. Call Einsetzen
  526. Name="FN-Seite"||FNSeite-SVA
  527. SetObjectTitle ObjectID Name
  528. End
  529. Else;Do
  530. GraphicTool
  531. SelectObject ObjectID
  532. MakeFrameActive
  533. Call Einsetzen
  534. End
  535. MerkeSeite=FNSeite
  536. i=i+1
  537. End
  538. GraphicTool
  539. DrawLine FNSeite-SVA LRand oben LRand+Linie oben
  540. Lock
  541. STATUS Pages
  542. SVA=SVA+result
  543. RemoveSection FNAbschnitt.h FORCE
  544. End
  545. If Punkt="Comma" then DocItemPrefs DECIMAL Comma
  546. MoveToLine Zurueck
  547. If speed=2 then Call EndView
  548. SAVE DokName".FNote"
  549. ShowMessage 1 1 '"Die Fußnoten wurden erstellt.""Bitte schließen Sie das Fenster: Suchen""""Klick" "" ""'
  550. ShowMessage 1 1 '"Sollten Sie an diesem Dokument weiterarbeiten wollen""oder möchten Sie Fußnoten bearbeiten, so benutzen Sie bitte""die Datei ohne die Endung: .FNOTE""Klick" "" ""'
  551. Disi=1
  552. Return
  553. Einsetzen:
  554. NewParagraph
  555. STATUS LinePos
  556. FrameAnfPos=Result
  557. FONT fo
  558. FontSize si
  559. Case Normal
  560. Position SuperScript
  561. Select
  562. When Numerierung=1 then TYPE ausgabe1||i-g||ausgabe2
  563. When Numerierung=2 then TYPE ausgabe1||i||ausgabe2
  564. Otherwise Nop
  565. End
  566. Position Normal
  567. If neu=1 then;do
  568. SetTab Einzug Left
  569. LeftMargin Einzug
  570. End
  571. Type VText.i
  572. BackSpace
  573. STATUS LinePos
  574. FrameEndPos=Result
  575. Call Check
  576. If Saite~=FNSeite then;do
  577. GraphicTool
  578. SelectObject ObjectID
  579. MakeFrameActive
  580. MoveToLine FrameAnfPos
  581. ShiftDown
  582. MoveToLine FrameEndPos
  583. ShiftUp
  584. BackSpace;BackSpace
  585. Do ForEver
  586. MoveToLine 1 0
  587. NewParagraph
  588. Call Check
  589. If Saite~=FNSeite then Break
  590. GraphicTool
  591. SelectObject ObjectID
  592. MakeFrameActive
  593. End
  594. oben=MerkeHoehe
  595. i=i-1
  596. End
  597. TextTool
  598. If Saite=FNSeite then;do
  599. MoveToLine Word(FNPos,1) Word(FNPos,2)
  600. ShiftDown
  601. MoveToLine Word(FNPos,3) Word(FNPos,4)
  602. ShiftUp
  603. Delete
  604. Position SuperScript
  605. Select
  606. When Numerierung=1 then TYPE ausgabe1||i-g||ausgabe2
  607. When Numerierung=2 then TYPE ausgabe1||i||ausgabe2
  608. Otherwise Nop
  609. End
  610. End
  611. GraphicTool
  612. MerkeHoehe=oben
  613. Return
  614. Check:
  615. GraphicTool
  616. CurrentObject
  617. ObjectID=Result
  618. GetObjectCoords ObjectID
  619. Parse var result . . . . frhoehe
  620. oben=DokHoehe+Word(DS,1)+Word(DS,3)-frhoehe
  621. SelectObject ObjectID
  622. SetObjectCoords 0 FNSeite-SVA LRand oben weite frhoehe
  623. TextTool
  624. MoveToLine Word(FNPos,3) Word(FNPos,4)
  625. STATUS Page "Insert"
  626. Saite=Result
  627. Return
  628. Voreinstellung:
  629. windowtags=WindowID(2),
  630. WindowPosition('TRWP_CENTERDISPLAY'),
  631. WindowFlags('TRWF_NOMINTEXTWIDTH'),
  632. PubScreenName('FinalWriterPubScreen'),
  633. WindowTitle('Fußnoten-Voreinsteller'),
  634. 'HorizGroupAC SpaceS',
  635. 'VertGroupA SpaceS',
  636. 'HorizGroupAC',
  637. TextID('Art der _Numerierung:',4),
  638. 'SpaceS',
  639. CycleGadget('wie',wie-1,4) 'TRAT_Flags TRCY_RIGHTLABELS',
  640. 'EndGroup',
  641. 'HorizGroupAC',
  642. TextID('S_chriftart:',5),
  643. 'SpaceS',
  644. CheckBox(2) 'TRAT_Value 'SText,
  645. GetEntryButton(5) 'TRAT_DISABLED 'SText,
  646. StringGadget(fond,6) 'TRAT_DISABLED 'SText,
  647. 'EndGroup',
  648. 'HorizGroupAC',
  649. TextID('Schrift_größe:',7),
  650. 'SpaceS',
  651. StringGadget(si,7),
  652. 'Space',
  653. TextID('A_usgabe:',8),
  654. 'SpaceS',
  655. StringGadget(ausgabe,8),
  656. 'EndGroup',
  657. 'HorizGroupAC',
  658. TextID('_Linienlänge:',1),
  659. 'SpaceS',
  660. StringGadget(Linie,1),
  661. 'Space',
  662. TextID('_Einzug:',3),
  663. 'SpaceS',
  664. StringGadget(Einzug,3),
  665. 'EndGroup',
  666. 'HorizGroupAC',
  667. TextID('Gesch_windigkeit:',9),
  668. 'SpaceS',
  669. CycleGadget('speed',speed-1,9) 'TRAT_Flags TRCY_RIGHTLABELS',
  670. 'EndGroup',
  671. 'SpaceS',
  672. 'HorizGroupEC',
  673. Button('_Sichern',15),
  674. 'SpaceS',
  675. Button('_Anwenden',10),
  676. 'SpaceS',
  677. Button('Ab_bruch',20),
  678. 'EndGroup SpaceS',
  679. 'EndGroup SpaceS',
  680. 'EndGroup SpaceS',
  681. 'EndProject'
  682. app2=TR_CREATEAPP('TRCA_Name Fußnote2')
  683. IF app2 ~='00000000'x THEN;DO
  684. window2=TR_OPENPROJECT(app2,windowtags)
  685. IF window2 ~='00000000'x THEN;DO
  686. ende2=0
  687. DO WHILE ~ende2
  688. CALL TR_WAIT(app2,'')
  689. DO WHILE TR_HANDLEMSG(app2,'event')
  690. IF event.trm_class='TRMS_CLOSEWINDOW' THEN ende2=1
  691. IF event.trm_class='TRMS_NEWVALUE' THEN;DO
  692. SELECT
  693. WHEN event.trm_id=2 THEN;Do
  694. oldSText=SText
  695. SText=event.trm_data
  696. address(FW)
  697. Status FontName
  698. oldfo=fo;oldfond=fond
  699. fo=result
  700. If SText=1 then fond="Cursorposition"
  701. else fond=fo
  702. Status FontSize
  703. si=result
  704. CALL TR_SETATTRIBUTE(window2,7,'TROB_String',si)
  705. CALL TR_SETATTRIBUTE(window2,6,'TROB_String',fond)
  706. CALL TR_SETATTRIBUTE(window2,6,'TRAT_DISABLED',event.trm_data)
  707. CALL TR_SETATTRIBUTE(window2,5,'TRAT_DISABLED',event.trm_data)
  708. END
  709. WHEN event.trm_id=4 THEN;Do
  710. oldwie=wie
  711. wie=event.trm_data+1
  712. END
  713. WHEN event.trm_id=9 THEN;Do
  714. oldspeed=speed
  715. speed=event.trm_data+1
  716. END
  717. OTHERWISE NOP
  718. END
  719. END
  720. IF event.trm_class='TRMS_ACTION' THEN;DO
  721. SELECT
  722. WHEN event.trm_id=5 THEN;Do
  723. fond=rtfilerequest("FWFonts/SWOLFonts",,"Font auswählen...",,"rt_pubscrname=FinalWriterPubScreen")
  724. if fond~='' then;do
  725. fo=fond
  726. pos=max(index(fond,':'),lastpos('/',fond))
  727. If pos~=0 then fond=Delstr(fond,1,pos)
  728. CALL TR_SETATTRIBUTE(window2,6,'TROB_String',fond)
  729. End
  730. END
  731. WHEN event.trm_id=10 THEN;Do
  732. Call Auslesen
  733. if okay=1 then Call Schreiben
  734. END
  735. WHEN event.trm_id=15 THEN;Do
  736. Call Auslesen
  737. If okay=1 then;do
  738. Call Open("prefs","s:FW_Fussnote.prefs","W")
  739. Writeln('prefs',wie)
  740. Writeln('prefs',fo)
  741. Writeln('prefs',si)
  742. Writeln('prefs',ausgabe)
  743. Writeln('prefs',Linie)
  744. Writeln('prefs',Einzug)
  745. Writeln('prefs',SText)
  746. Writeln('prefs',speed)
  747. Call Close("prefs")
  748. Call Schreiben
  749. End
  750. END
  751. WHEN event.trm_id=20 THEN;Do
  752. SText=oldSText;fo=oldfo;fond=oldfond
  753. wie=oldwie;speed=oldspeed
  754. ende2=1
  755. END
  756. OTHERWISE NOP
  757. END
  758. END
  759. END
  760. END
  761. CALL TR_CLOSEPROJECT(window2)
  762. END
  763. CALL TR_DELETEAPP(app2)
  764. END
  765. ELSE
  766. CALL quit('Kann das Fenster nicht öffnen',10)
  767. Return
  768. Auslesen:
  769. okay=0
  770. si=TR_GETATTRIBUTE(window2,7,'TROB_String')
  771. If Datatype(si,'W')=0 then;do
  772. x=rtezrequest("Die SCHRIFTGRÖßE bitte ganzzahlig angeben!","_Achso","Eingabe-Fehler","rt_pubscrname=FinalWriterPubScreen")
  773. Call TR_SendMessage(window2,7,'TROM_ACTIVATE',0)
  774. return
  775. end
  776. If si<4 then si=4
  777. If si>360 then si=360
  778. ausgabe=TR_GETATTRIBUTE(window2,8,'TROB_String')
  779. Linie=TR_GETATTRIBUTE(window2,1,'TROB_String')
  780. If Datatype(Linie,'N')=0 then;do
  781. x=rtezrequest("Die LINIENLÄNGE bitte mit (.) angeben!","_Achso","Eingabe-Fehler","rt_pubscrname=FinalWriterPubScreen")
  782. Call TR_SendMessage(window2,1,'TROM_ACTIVATE',0)
  783. return
  784. end
  785. Einzug=TR_GETATTRIBUTE(window2,3,'TROB_String')
  786. If Datatype(Einzug,'N')=0 then;do
  787. x=rtezrequest("Den EINZUG bitte mit (.) angeben!","_Achso","Eingabe-Fehler","rt_pubscrname=FinalWriterPubScreen")
  788. Call TR_SendMessage(window2,3,'TROM_ACTIVATE',0)
  789. return
  790. end
  791. GetDocItemPrefs Tabs
  792. If Einzug<Result then Einzug=Result
  793. okay=1
  794. Return
  795. Schreiben:
  796. o1="Schrift: "||fond||", Größe: "||si
  797. o2="Numerierung: "||wie.wie||", Ausgabe: "||ausgabe
  798. o3="Linie: "||Linie||" cm, Einzug: "||Einzug||" cm"
  799. o4="Geschwindigkeit: "||speed.speed
  800. Call TR_SETATTRIBUTE(window1,5,'TRAT_TEXT',o1)
  801. Call TR_SETATTRIBUTE(window1,6,'TRAT_TEXT',o2)
  802. Call TR_SETATTRIBUTE(window1,7,'TRAT_TEXT',o3)
  803. Call TR_SETATTRIBUTE(window1,8,'TRAT_TEXT',o4)
  804. ende2=1
  805. Return
  806. Fini:
  807. If Punkt="Comma" then DocItemPrefs DECIMAL Comma
  808. CtrlUp;ShiftUp;AltUp
  809. If speed=2 then Call EndView
  810. Return
  811. AnfView:
  812. GetDisplayPrefs PageTabs SectionTabs
  813. Zungen=result
  814. DisplayPrefs PageTabs Off SectionTabs Off
  815. STATUS View
  816. Zoom=result
  817. View 20
  818. Return
  819. EndView:
  820. View Zoom
  821. do i=1 to 1000
  822. NOP
  823. End
  824. DisplayPrefs PageTabs word(Zungen,1) SectionTabs word(Zungen,2)
  825. Return
  826. SYNTAX:
  827. CALL quit('Fehler' rc 'in Zeile' sigl '-' ERRORTEXT(rc)||R||SOURCELINE(sigl)||R||'Bitte informieren Sie den Autor...',20)
  828. quit:
  829. PARSE ARG message,rcode
  830. IF app ~='00000000'x THEN;DO
  831. IF message ~='' THEN
  832. ret=rtezrequest(message,"_Okay","ACHTUNG!","rt_pubscrname=FinalWriterPubScreen")
  833. CALL TR_DELETEAPP(app)
  834. END
  835. ELSE
  836. IF message ~='' THEN;DO
  837. SAY message
  838. SAY
  839. OPTIONS PROMPT 'Bitte <RETURN> drücken'
  840. PULL taste
  841. END
  842. address command "flushtrx all"
  843. EXIT(rcode)