home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Exec 3 / CD_Magazyn_EXEC_nr_3.iso / Recent / biz / swood / FW_AllInOne.lha / Makros / ObjAusrichten < prev    next >
Text File  |  1998-01-18  |  9KB  |  428 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 open('Hilfe',"S:FW_Paket.prefs","R") then;do
  17. HilfeVerz=readln('Hilfe')
  18. Call Close('Hilfe')
  19. End
  20. else HilfeVerz=''
  21. If FW='' then;do
  22. Address='FinalW'
  23. Options results
  24. STATUS PORTNAME
  25. FW=result
  26. End
  27. address(FW)
  28. hor.0=4
  29. hor.1="Ohne"
  30. hor.2="Oben"
  31. hor.3="Zentriert"
  32. hor.4="Unten"
  33. ver.0=4
  34. ver.1="Ohne"
  35. ver.2="Links"
  36. ver.3="Zentriert"
  37. ver.4="Rechts"
  38. rel.0=3
  39. rel.1="Zueinander"
  40. rel.2="Zur Seite"
  41. rel.3="Zum Editierbereich"
  42. undos=1
  43. apptags='TRCA_Name     AOO',
  44. 'TRCA_LongName "Objekte ausrichten"',
  45. 'TRCA_Info     "für FinalWriter"',
  46. 'TRCA_Version  "3.0 registered"',
  47. 'TRCA_Release  "3"',
  48. 'TRCA_Date     "09.01.98"',
  49. 'TAG_END'
  50. windowtags=WindowID(1),
  51. WindowPosition('TRWP_CENTERDISPLAY'),
  52. PubScreenName('FinalWriterPubScreen'),
  53. WindowTitle("Objekte ausrichten"),
  54. WindowFlags('TRWF_NOMINTEXTWIDTH|TRWF_NOSIZEGADGET'),
  55. BeginMenu('Projekt'),
  56. MenuItem('Q_Verlassen',104),
  57. BeginMenu('?'),
  58. MenuItem('?_Info',101),
  59. MenuItem('H_Hilfe',103),
  60. 'VertGroupAC',
  61. 'Space',
  62. 'HorizGroupEC',
  63. 'SpaceS',
  64. NamedFrameBox('_Vertikal') 'TRAT_ID 2',
  65. 'VertGroupA',
  66. 'SpaceS',
  67. 'HorizGroup',
  68. 'SpaceS',
  69. FWListSelC('ver',2,0) 'TRAT_Flags TRLV_ShowSelected TRAT_MINWIDTH 13',
  70. 'SpaceS',
  71. 'EndGroup',
  72. 'SpaceS',
  73. 'EndGroup',
  74. 'Space',
  75. NamedFrameBox('_Horizontal') 'TRAT_ID 1',
  76. 'VertGroupA',
  77. 'SpaceS',
  78. 'HorizGroup',
  79. 'SpaceS',
  80. FWListSelC('hor',1,0) 'TRAT_Flags TRLV_ShowSelected TRAT_MINWIDTH 13',
  81. 'SpaceS',
  82. 'EndGroup',
  83. 'SpaceS',
  84. 'EndGroup',
  85. 'SpaceS',
  86. 'EndGroup',
  87. 'Space',
  88. 'HorizGroupEC',
  89. 'SpaceS',
  90. NamedFrameBox('Zwischenraum'),
  91. 'VertGroupA',
  92. 'SpaceS',
  93. 'HorizGroupC',
  94. 'SpaceS',
  95. TextNR('=='),
  96. 'SpaceS',
  97. StringGadget('',4),
  98. TextN(' cm'),
  99. 'SpaceB',
  100. TextNR('| |'),
  101. 'SpaceS',
  102. StringGadget('',5),
  103. TextN(' cm'),
  104. 'SpaceS',
  105. 'EndGroup',
  106. 'SpaceS',
  107. 'EndGroup',
  108. 'SpaceS',
  109. 'EndGroup',
  110. 'SpaceS',
  111. 'HorizGroupEC',
  112. 'SpaceS',
  113. NamedFrameBox('_Relativ') 'TRAT_ID 3',
  114. 'HorizGroupEC',
  115. 'SpaceS',
  116. 'VertGroupAC',
  117. 'SpaceS',
  118. FWListSelC('rel',3,0) 'TRAT_Flags TRLV_ShowSelected TRAT_MINHeight 3',
  119. 'SpaceS',
  120. 'EndGroup',
  121. 'SpaceS',
  122. 'EndGroup',
  123. 'SpaceS',
  124. 'EndGroup',
  125. 'Space',
  126. 'HorizGroupEC',
  127. 'SpaceS',
  128. Button('_Anwenden',7),
  129. 'SpaceS',
  130. Button('_Undo',9) 'TRAT_DISABLED 1',
  131. 'SpaceS',
  132. Button('Ab_bruch',8),
  133. 'SpaceS',
  134. 'EndGroup',
  135. 'Space',
  136. 'EndGroup',
  137. 'EndProject'
  138. app=TR_CREATEAPP('TRCA_Name AOO')
  139. IF app ~='00000000'x THEN;DO
  140. window1=TR_OPENPROJECT(app,windowtags)
  141. IF window1 ~='00000000'x THEN;DO
  142. ende=0
  143. DO WHILE ~ende
  144. CALL TR_WAIT(app,'')
  145. DO WHILE TR_HANDLEMSG(app,'event')
  146. IF event.trm_class='TRMS_CLOSEWINDOW' THEN ende=1
  147. IF event.trm_class='TRMS_NEWVALUE' THEN;DO
  148. SELECT
  149. WHEN event.trm_id=3 THEN what=event.trm_data+1
  150. OTHERWISE NOP
  151. END
  152. END
  153. IF event.trm_class='TRMS_ACTION' THEN;DO
  154. SELECT
  155. WHEN event.trm_id=7 THEN;Do
  156. horiz=TR_GETATTRIBUTE(window1,2,'TRAT_VALUE')
  157. verti=TR_GETATTRIBUTE(window1,1,'TRAT_VALUE')
  158. relat=TR_GETATTRIBUTE(window1,3,'TRAT_VALUE')
  159. offhoriz=TR_GETATTRIBUTE(window1,4,'TROB_STRING')
  160. offverti=TR_GETATTRIBUTE(window1,5,'TROB_STRING')
  161. Call program
  162. END
  163. WHEN event.trm_id=9 THEN Call programUndo
  164. WHEN event.trm_id=8 THEN ende=1
  165. WHEN event.trm_id=101 THEN Call rtezrequest("Aus dem Makro-Paket:"||R||R||"Objekte ausrichten V3.0 für FW"||R||"© 1998 Heiko Schröder","Danke für Ihre Registrierung.","Info","rt_pubscrname=FinalWriterPubScreen")
  166. WHEN event.trm_id=103 THEN address command "run Multiview PUBSCREEN=FinalWriterPubScreen "||d2c(34)||HilfeVerz||"ObjAusrichten.guide"||d2c(34)
  167. WHEN event.trm_id=104 THEN ende=1
  168. OTHERWISE NOP
  169. END
  170. END
  171. END
  172. END
  173. CALL TR_CLOSEPROJECT(window1)
  174. END
  175. CALL TR_DELETEAPP(app)
  176. END
  177. ELSE
  178. CALL quit('Kann das Fenster nicht öffnen',10)
  179. Call Fini
  180. Exit
  181. program:
  182. address(FW)
  183. GetDocItemPrefs Decimal
  184. Punkt=Result
  185. If Punkt="Comma" then DocItemPrefs Decimal Period
  186. GraphicTool
  187. nr=1
  188. Select
  189. When relat=0 then;do
  190. CurrentObject
  191. ID=result
  192. Objekt.0=nr;Objekt.nr=ID
  193. If Objekt.1="0" then;do
  194. ret=rtezrequest("Kein Objekt ausgewählt...","_Achso","Fehler!","rt_pubscrname=FinalWriterPubScreen")
  195. Return
  196. End
  197. end
  198. When (relat=1|relat=2) then;do
  199. ID=-1
  200. Objekt.0=nr;Objekt.nr=ID
  201. CurrentObject
  202. ID=result
  203. If ID=0 then;do
  204. ret=rtezrequest("Kein Objekt ausgewählt...","_Achso","Fehler!","rt_pubscrname=FinalWriterPubScreen")
  205. Return
  206. End
  207. end
  208. Otherwise NOP
  209. end
  210. RedrawOff
  211. FirstObject Selected
  212. ID=result
  213. Call Zaehlen
  214. Do While 1
  215. NextObject ID Selected
  216. ID=result
  217. If ID=0 then Leave
  218. Call Zaehlen
  219. End
  220. address "REXX"
  221. Call TR_SETATTRIBUTE(window1,9,'TRAT_DISABLED',0)
  222. address(FW)
  223. Menge=0
  224. Do i=1 to Objekt.0
  225. if ((i=1)&(relat~=0)) then;do
  226. GetPageSetup Width Height
  227. Parse Var result weite.i hoehe.i
  228. Status Page
  229. seite.i=result
  230. if relat=1 then;do
  231. left.i=0;top.i=0
  232. end
  233. if relat=2 then;do
  234. GetSectionSetup Top Bottom Inside Outside
  235. Parse Var result top.i bott left.i outs
  236. weite.i=weite.i-left.i-outs
  237. hoehe.i=hoehe.i-top.i-bott
  238. end
  239. end
  240. else;do
  241. GetObjectCoords Objekt.i
  242. Parse Var result seite.i left.i top.i weite.i hoehe.i
  243. undomenge=i
  244. undoid.i=Objekt.i
  245. undoseite.i=seite.i
  246. undoleft.i=left.i
  247. undotop.i=top.i
  248. undoweite.i=weite.i
  249. undohoehe.i=hoehe.i
  250. Call UndoWrite i
  251. GetObjectType Objekt.i
  252. typ=result
  253. if typ=2|typ=3|typ=7|typ=10 then;do
  254. menge=menge+1
  255. copy
  256. Paste
  257. CurrentObject
  258. ID=result
  259. SetObjectCoords ID seite.i left.i top.i weite.i hoehe.i
  260. SelectObject Objekt.i MULTIPLE
  261. Group
  262. weg.0=menge
  263. weg.menge=ID
  264. CurrentObject
  265. ID=result
  266. gruppe.0=menge
  267. gruppe.menge=ID
  268. GetObjectCoords ID
  269. Parse Var result seite.i left.i top.i weite.i hoehe.i
  270. altStelle.0=menge
  271. altStelle.menge=i
  272. altID.0=menge
  273. altID.menge=Objekt.i
  274. Objekt.i=ID
  275. end
  276. end
  277. End
  278. If verti="1" then
  279. Do i=2 to Objekt.0
  280. top.i=top.1
  281. seite.i=seite.1
  282. End
  283. If verti="2" then;do
  284. mitte=top.1+(hoehe.1/2)
  285. Do i=2 to Objekt.0
  286. top.i=mitte-(hoehe.i/2)
  287. seite.i=seite.1
  288. End
  289. End
  290. If verti="3" then;do
  291. unten=top.1+hoehe.1
  292. Do i=2 to Objekt.0
  293. top.i=unten-hoehe.i
  294. seite.i=seite.1
  295. End
  296. End
  297. If horiz="1" then
  298. Do i=2 to Objekt.0
  299. left.i=left.1
  300. End
  301. If horiz="2" then;do
  302. mitte=left.1+(weite.1/2)
  303. Do i=2 to Objekt.0
  304. left.i=mitte-(weite.i/2)
  305. end
  306. End
  307. If horiz="3" then;do
  308. rechts=left.1+weite.1
  309. Do i=2 to Objekt.0
  310. left.i=rechts-weite.i
  311. End
  312. End
  313. If offverti~="" then;do
  314. If relat=1 then weite.1=0-offverti
  315. If relat=2 then weite.1=0-offverti
  316. Do i=2 to Objekt.0
  317. mass=0
  318. Do y=1 to i-1
  319. mass=mass+weite.y+offverti
  320. end
  321. left.i=left.1+mass
  322. End
  323. End
  324. If offhoriz~="" then;do
  325. If relat=1 then hoehe.1=0-offhoriz
  326. If relat=2 then hoehe.1=0-offhoriz
  327. Do i=2 to Objekt.0
  328. mass=0
  329. Do y=1 to i-1
  330. mass=mass+hoehe.y+offhoriz
  331. end
  332. top.i=top.1+mass
  333. End
  334. End
  335. Do a=2 to Objekt.0
  336. SetObjectCoords Objekt.a seite.a left.a top.a weite.a hoehe.a
  337. End
  338. Redraw
  339. Do a=1 to menge
  340. SelectObject gruppe.a
  341. ungroup
  342. DeleteObject weg.a
  343. i=altStelle.a
  344. Objekt.i=altID.a
  345. end
  346. Do a=2 to Objekt.0
  347. SelectObject Objekt.a MULTIPLE
  348. End
  349. if relat=0 then SelectObject Objekt.1 MULTIPLE
  350. RedrawOn
  351. Redraw
  352. undos=undos+1
  353. Return
  354. Zaehlen:
  355. If ID~=Objekt.1 then;do
  356. nr=nr+1
  357. Objekt.0=nr;Objekt.nr=ID
  358. End
  359. Return
  360. programUndo:
  361. Call UndoRead
  362. TextTool
  363. GraphicTool
  364. Do i=1 to undomenge-1
  365. SetObjectCoords undoid.i undoseite.i undoleft.i undotop.i undoweite.i undohoehe.i
  366. end
  367. Do a=2 to undomenge-1
  368. SelectObject undoid.a MULTIPLE
  369. End
  370. SelectObject undoid.1 MULTIPLE
  371. Redraw
  372. If undos=1 then;do
  373. address "REXX"
  374. Call TR_SETATTRIBUTE(window1,9,'TRAT_DISABLED',1)
  375. end
  376. Return
  377. UndoWrite:
  378. Parse ARG i
  379. address "REXX"
  380. speicher="Ram:Undo."||undos
  381. If exists(speicher) then Call Open("FWUndo",speicher,"A")
  382. else Call Open("FWUndo",speicher,"W")
  383. lein=undoid.i undoseite.i undoleft.i undotop.i undoweite.i||undohoehe.i
  384. WriteLn("FWUndo",lein)
  385. Call Close("FWUndo")
  386. Return
  387. UndoRead:
  388. address "REXX"
  389. undos=undos-1
  390. speicher="Ram:Undo."||undos
  391. Call Open("FWUndo",speicher,'R')
  392. i=0
  393. Do Until eof("FWUndo")
  394. i=i+1
  395. lein=ReadLn("FWUndo")
  396. undomenge=i
  397. Parse Var lein undoid.i undoseite.i undoleft.i undotop.i undoweite.i undohoehe.i
  398. end
  399. Call Close("FWUndo")
  400. address command "delete "||d2c(34)||speicher||d2c(34)" QUIET"
  401. Return
  402. Fini:
  403. Do i=1 to undos
  404. speicher="Ram:Undo."
  405. if exists(speicher||i) then address command "delete "||d2c(34)||speicher||i||d2c(34)" QUIET"
  406. end
  407. Return
  408. syntax:
  409. address "REXX"
  410. CALL quit('Fehler' rc 'in Zeile' sigl '-' ERRORTEXT(rc)||R||SOURCELINE(sigl)||R||'Bitte informieren Sie den Autor...',20)
  411. quit:
  412. PARSE ARG message,rcode
  413. IF app ~='00000000'x THEN;DO
  414. IF message ~='' THEN
  415. ret=rtezrequest(message,"_Okay","ACHTUNG!","rt_pubscrname=FinalWriterPubScreen")
  416. CALL TR_DELETEAPP(app)
  417. END
  418. ELSE;DO
  419. IF message ~='' THEN;DO
  420. SAY message
  421. SAY
  422. OPTIONS PROMPT 'Bitte <RETURN> drücken'
  423. PULL taste
  424. END
  425. END
  426. Call Fini
  427. address command "flushtrx all"
  428. EXIT(rcode)