/* Optimized with RexxOpt 1.7 */ Parse ARG FW if ~show('L',"rexxreqtools.library") then if ~addlib('rexxreqtools.library',0,-30,0) then;do ShowMessage 1 1 '"Fehler...." "Benötige Libs:rexxreqtools.library" " A B B R U C H ! !" "Okay" "" ""' exit end IF ~show('L','tritonrexx.library') then IF ~ADDLIB('tritonrexx.library',10,-30,0) THEN;DO ShowMessage 2 1 '"Fehler...." "Benötige Libs:tritonrexx.library" "" "Abbruch" "" ""' exit END R='0A'X SIGNAL ON SYNTAX If FW='' then;do Address='FinalW' Options results STATUS PORTNAME FW=result End address(FW) CtrlUp;ShiftUp;AltUp address "REXX" If open('Hilfe',"S:FW_Paket.prefs","R") then;do HilfeVerz=readln('Hilfe') Call Close('Hilfe') End else HilfeVerz='' If exists("S:FW_Verweise.prefs") then;do Call open("prefs","S:FW_Verweise.prefs","R") Schablone=Readln("prefs") Call close("prefs") end else Schablone="(siehe Kapitel %k, Abschnitt %a, Seite %s)" address(FW) GetSectionList "¤" IF Pos("Verweise",Result)=0 THEN;do Disi=1;VN=1 End else;do Disi=0;VN=0 end apptags='TRCA_Name Verweise', 'TRCA_LongName "Verweise"', 'TRCA_Info "für FinalWriter"', 'TRCA_Version "1.0 registered"', 'TRCA_Release "1"', 'TRCA_Date "09.01.98"', 'TAG_END' windowtags=WindowID(1), WindowPosition('TRWP_CENTERDISPLAY'), WindowFlags('TRWF_NOMINTEXTWIDTH'), PubScreenName('FinalWriterPubScreen'), WindowTitle("Verweise"), BeginMenu('Projekt'), MenuItem('Q_Verlassen',104), BeginMenu('?'), MenuItem('?_Info',101), MenuItem('H_Hilfe',103), 'HorizGroupAC SpaceS', 'VertGroupAC SpaceS', Button('Verweis_name setzen',1), 'SpaceS', TextN('Verweisname:'), StringGadget("",9) 'TRAT_DISABLED 1', 'Space', Button('Verweisname _löschen',2) 'TRAT_DISABLED' Disi, 'SpaceS', Button('Verweis _setzen',3) 'TRAT_DISABLED' VN, 'SpaceS', TextID('_Format:',8), 'SpaceS', StringGadget(Schablone,8), 'Space', Button('Verweise _aktualisieren',4) 'TRAT_DISABLED' Disi, 'SpaceS', Button('Verweise _erstellen',10) 'TRAT_DISABLED' Disi, 'SpaceS', 'EndGroup SpaceS', 'EndGroup SpaceS', 'EndProject' app=TR_CREATEAPP('TRCA_Name Verweise') IF app ~='00000000'x THEN;DO window1=TR_OPENPROJECT(app,windowtags) IF window1 ~='00000000'x THEN;DO ende=0 DO WHILE ~ende CALL TR_WAIT(app,'') DO WHILE TR_HANDLEMSG(app,'event') IF event.trm_class='TRMS_CLOSEWINDOW' THEN ende=1 IF event.trm_class='TRMS_NEWVALUE' THEN;DO SELECT WHEN event.trm_id=9 THEN;Do VText=TR_GETATTRIBUTE(window1,9,'TROB_String') VText=VText||" " Call TR_SETATTRIBUTE(window1,9,'TRAT_DISABLED',1) If VText~=" " then Call VNsetzen END OTHERWISE NOP END END IF event.trm_class='TRMS_ACTION' THEN;DO SELECT WHEN event.trm_id=1 THEN;Do address(FW) status ParaPos VPos=Result IF Words(VPos)=2 THEN;DO ShowMessage 1 1 '"Leider ist kein Text markiert!" "Bitte markieren Sie den Text auf den später Bezug genommen werden soll." "" "Klick" "" ""' END else;do Call TR_SETATTRIBUTE(window1,9,'TRAT_DISABLED',0) Call TR_SendMessage(window1,9,'TROM_ACTIVATE',0) End END WHEN event.trm_id=2 THEN Call Vloeschen WHEN event.trm_id=3 THEN;do akt=0 Call Vsetzen End WHEN event.trm_id=4 THEN;do akt=1 Call Vsetzen End WHEN event.trm_id=10 THEN Call Verstellen WHEN event.trm_id=101 THEN Call rtezrequest("Aus dem Makro-Paket:"||R||R||"Verweise V1.0 für FW"||R||"© 1998 Heiko Schröder","Danke für Ihre Registrierung.","Info","rt_pubscrname=FinalWriterPubScreen") WHEN event.trm_id=103 THEN address command "run Multiview PUBSCREEN=FinalWriterPubScreen "||d2c(34)||HilfeVerz||"Verweise.guide"||d2c(34) WHEN event.trm_id=104 THEN ende=1 OTHERWISE NOP END END END END Schablone=TR_GETATTRIBUTE(window1,8,'TROB_String') CALL TR_CLOSEPROJECT(window1) END CALL TR_DELETEAPP(app) END ELSE CALL quit('Kann das Fenster nicht öffnen',10) address "REXX" Call open("prefs","S:FW_Verweise.prefs","W") Writeln('prefs',Schablone) Call close("prefs") Exit VNSetzen: address(FW) GetSectionSetup Name Abschnitt=result IF Abschnitt="Verweise" THEN;DO ShowMessage 1 1 '"Sie befinden sich im Abschnitt: VERWEISE." "Hier können keine Verweisnamen gesetzt werden!" "" "Klick" "" ""' Return End GetDocItemPrefs Decimal Punkt=Result If Punkt="Comma" then DocItemPrefs DECIMAL Period VName=TR_GETATTRIBUTE(window1,9,'TROB_String') Copy GetSectionList "¤" IF Pos("Verweise",Result)=0 THEN;DO NewSection Text Name "Verweise" SectionSetup Top 0 Bottom 0 Inside 2 Outside 0 SectionSetup Header 2.4 EditRightMaster FontSize 20 Style UnderLine Type "Abschnitt für die Verweise" Style Normal;NewParagraph Type "Bitte NICHTS verändern." EditBody SetTab "0.5" Left SetTab "3" Left SetTab "6" Left LeftMargin "6" FontSize 4 TYPE "ð" END ELSE GoToSection "Verweise" AltDown;CtrlDown;Cursor Down;CtrlUp;AltUp Cursor Left Status LinePos Line=Word(result,1) If Line>1 then;do Cursor Up EXTRACT DO WHILE RESULT~="ð" Line=Line-1 If Line=0 then Leave MoveToLine Line 0 Extract END Cursor Right Nummer=0 Extract DO WHILE ((RESULT<":")&(RESULT>"/")) Nummer=Nummer*10+Result cursor Right Extract END End Else Nummer=0 Nummer=Nummer+1 AltDown;CtrlDown;Cursor Down;CtrlUp;AltUp IF Nummer<10 THEN TYPE 0||Nummer ELSE TYPE Nummer TYPE X2C(09);NewParagraph TYPE "ð" cursor Up AltDown;CtrlDown;Cursor Right;CtrlUp;AltUp Type Abschnitt TYPE X2C(09) FontSize 12 Type VName TYPE X2C(09) Status ParaPos Merke=result Paste ShiftDown;MoveToPara Merke;ShiftUp FontSize 4 GoToSection Abschnitt MoveToPara Word(VPos,3) Word(VPos,4) Status FontWidth OldWidth=result STATUS FontColor OldColor=result Width 4 FontColor "Weiß" Type "ð" IF Nummer<10 THEN TYPE "0"||Nummer ELSE TYPE Nummer FontColor OldColor Width OldWidth EXTRACT IF Result~=" " THEN IF Pos(Result,".,!?)")~=0 THEN TYPE " " ELSE NOP ELSE Cursor Right Disi=0 Call TR_SETATTRIBUTE(window1,2,'TRAT_DISABLED',0) Call TR_SETATTRIBUTE(window1,4,'TRAT_DISABLED',0) Call TR_SETATTRIBUTE(window1,10,'TRAT_DISABLED',0) Call TR_SETATTRIBUTE(window1,3,'TRAT_DISABLED',0) Return Vsetzen: CtrlUp;ShiftUp;AltUp Status ParaPos Zurueck=result GetSectionSetup Name MerkeAbschnitt=Result RedrawOff call Time('R') Schablone=TR_GETATTRIBUTE(window1,8,'TROB_String') MerkeSchablone=Schablone SetFind WRAP NO FIND "ð" loeschen=0 Call VerweiseSuchen If akt=0 then;do Call Fenster If Nummer=0 then return EXTRACT IF Pos(Result,".,!?)")~=0 THEN NOP ELSE;DO Cursor Left EXTRACT IF Result~=" " THEN Cursor Right Cursor Right End Status FontSize OldSize=Result linken=1;loeschen=0 Call SchabloneAuswerten End If akt=1 then;do GetSectionList "ð" Anz=0 temp=result Do ForEver a=pos("ð",temp) Anz=Anz+1 If a=0 then;do Abschnitte.Anz=temp Leave End Abschnitte.Anz=Left(temp,a-1) temp=Delstr(temp,1,a) End Abschnitte.0=Anz Do i=1 to Abschnitte.0 GotoSection Abschnitte.i MoveToLine 1 0 Do ForEver Find "æ" If RC~=0 then Break Status ParaPos Anfpos=Word(result,1) Word(result,2) Cursor Right VKennung.i=0 EXTRACT DO WHILE ((RESULT<":")&(RESULT>"/")) VKennung.i=VKennung.i*10+Result Cursor Right Extract END Do Nummer=1 to Verweis.0 If Verweis.Nummer=VKennung.i then Break End IF VKennung.i<10 THEN FIND ("æ0"VKennung.i) ELSE FIND ("æ"VKennung.i) Status ParaPos EndPos=Word(result,3) Word(result,4) MoveToPara AnfPos Status FontSize OldSize=Result ShiftDown MoveToPara EndPos ShiftUp linken=1;loeschen=1 Call SchabloneAuswerten End End End GotoSection MerkeAbschnitt RedrawOn Redraw say Time('E') Return Vloeschen: Status ParaPos Zurueck=result GetSectionSetup Name MerkeAbschnitt=Result GotoSection "Verweise" If RC~=0 then;do ShowMessage 1 1 '"Keine Verweisnamen vorhanden!" "" "" "Klick" "" ""' Return end RedrawOff call Time('R') GetSectionList "ð" Anz=0 temp=result Do ForEver a=pos("ð",temp) Anz=Anz+1 If a=0 then;do Abschnitte.Anz=temp Leave End Abschnitte.Anz=Left(temp,a-1) temp=Delstr(temp,1,a) End Abschnitte.0=Anz SetFind WRAP NO FIND "ð" loeschen=1 Call VerweiseSuchen GotoSection MerkeAbschnitt Call Fenster loeschen=0 If Nummer=0 then;do MoveToPara Zurueck Return End CtrlUp;AltUp;ShiftUp Schongefragt=0 Do i=1 to Abschnitte.0 GotoSection Abschnitte.i Do ForEver MoveToLine 1 0 IF Verweis.Nummer<10 THEN FIND ("æ0"Verweis.Nummer) ELSE FIND ("æ"Verweis.Nummer) If RC~=0 then Break If (RC=0&SchonGefragt=0) then;do ShowMessage 1 1 '"Es sind schon Verweise gesetzt, die sich" "auf den Verweisnamen - ' VName.Nummer '- beziehen!" "Soll der Verweisname trotzdem gelöscht werden?" "Ja" "Nein" ""' IF Result=2 then;do MoveToPara Zurueck Return End SchonGefragt=1 End Status ParaPos AnfPos=Word(result,1) Word(result,2) Cursor Right FindNext Status ParaPos EndPos=Word(result,3) Word(result,4) MoveToPara AnfPos;ShiftDown;MoveToPara EndPos;ShiftUp Delete End End GotoSection Abschnitt.Nummer MoveToLine 1 0 IF Verweis.Nummer<10 THEN FIND ("ð0"Verweis.Nummer) ELSE FIND ("ð"Verweis.Nummer) If RC=0 then Delete Call RemoveVerweise GotoSection MerkeAbschnitt MoveToPara Zurueck Return Verstellen: CtrlUp;ShiftUp;AltUp ShowMessage 1 1 '"Verweise endgültig erstellen..." "Hiermit werden nochmals alle Verweise aktualisiert." "und danach sämtliche Verweiskennungen gelöscht." "Weiter" "Abbrechen" ""' IF Result=2 THEN Return Status ParaPos Zurueck=result Schablone=TR_GETATTRIBUTE(window1,8,'TROB_String') MerkeSchablone=Schablone Status FileName IF POS(".VW",Result)=0 THEN;DO ShowMessage 1 1 '"Die Datei wird jetzt abgespeichert!" "Es wird eine neue Datei mit dem Zusatz .VW erstellt!" "In dieser befinden sich keine Verweiskennungen mehr." "Weiter" "Abbrechen" ""' IF Result=2 THEN Return SAVE Status PathName DokName=result If DokName="" then Return END Else;do ShowMessage 1 1 '"Die Verweiskennungen sind schon gelöscht worden!" "Bitte benutzen Sie die Datei ohne die Endung: .VW" "" "Klick" "" ""' return End GetSectionSetup Name MerkeAbschnitt=Result RedrawOff call Time('R') SetFind WRAP NO FIND "ð" loeschen=1 Call VerweiseSuchen RemoveSection "Verweise" FORCE GetSectionList "ð" Anz=0 temp=result Do ForEver a=pos("ð",temp) Anz=Anz+1 If a=0 then;do Abschnitte.Anz=temp Leave End Abschnitte.Anz=Left(temp,a-1) temp=Delstr(temp,1,a) End Abschnitte.0=Anz Do i=1 to Abschnitte.0 GotoSection Abschnitte.i MoveToLine 1 0 Do ForEver Find "æ" If RC~=0 then Break Status ParaPos Anfpos=Word(result,1) Word(result,2) Cursor Right VKennung.i=0 EXTRACT DO WHILE ((RESULT<":")&(RESULT>"/")) VKennung.i=VKennung.i*10+Result Cursor Right Extract END Do Nummer=1 to Verweis.0 If Verweis.Nummer=VKennung.i then Break End IF VKennung.i<10 THEN FIND ("æ0"VKennung.i) ELSE FIND ("æ"VKennung.i) Status ParaPos EndPos=Word(result,3) Word(result,4) MoveToPara AnfPos ShiftDown Status FontSize OldSize=Result MoveToPara EndPos ShiftUp linken=0 Call SchabloneAuswerten End End RedrawOn Redraw GotoSection MerkeAbschnitt MoveToPara Zurueck say Time('E') SAVE DokName".VW" ShowMessage 1 1 '"Die Verweiskennungen wurden gelöscht." "Bitte schließen Sie das Fenster: Suchen" "" "Klick" "" ""' ShowMessage 1 1 '"Sollten Sie an diesem Dokument weiterarbeiten wollen" "so benutzen Sie bitte die Datei ohne " "die Endung: .VW" "Klick" "" ""' Return VerweiseSuchen: GoToSection "Verweise" MoveToLine 1 0 a=0;i=0 DO ForEver FindNext If RC~=0 then RETURN Status ParaPos MoveToPara Word(result,3) Word(result,4) i=i+1;Verweis.i=0 Extract DO WHILE ((RESULT<":")&(RESULT>"/")) Verweis.i=Verweis.i*10+Result Cursor Right Extract END If Verweis.i=0 then Break Cursor Right AltDown;ShiftDown;Cursor Down Extract;temp=result ShiftUp;AltUp a=a+1 b=0 DO ForEver b=b+1 tab=Pos(d2c(9),temp) If tab=0 then;do Abs.b=Left(temp,Length(temp)-1) LEAVE End Abs.b=Left(temp,tab-1) temp=Right(temp,Length(temp)-tab) END Abschnitt.a=Abs.1 VName.a=Abs.2 VText.a=Abs.3 END Abschnitt.0=a VName.0=a VText.0=a Verweis.0=i-1 Do i=1 to Verweis.0 GotoSection Abschnitt.i MoveToLine 1 0 If Verweis.i<10 then Find "ð0"Verweis.i Else Find "ð"Verweis.i If (RC=0&loeschen=1) then Delete GetSectionSetup FirstPage PagePrefix Parse Var result FP PP Status Page "Insert" Seite=result AktSeite=Seite-FP+1 Seite.i=PP||AktSeite End Seite.0=i GotoSection MerkeAbschnitt MoveToPara Zurueck Return SchabloneAuswerten: Schablone=MerkeSchablone If loeschen=1 then Delete If linken=1 then Call Schreiben Text="" Do ForEver a=pos("%",Schablone) If a=0 then;do Text=Text||Schablone Leave End Text=Text||Left(Schablone,a-1) Schablone=Delstr(Schablone,1,a) next=Left(Schablone,1) Schablone=Delstr(Schablone,1,1) Select When upper(next)="A" then Text=Text||Abschnitt.Nummer When upper(next)="K" then Text=Text||VText.Nummer When upper(next)="S" then Text=Text||Seite.Nummer Otherwise nop End End EXTRACT IF Result~=" " THEN TYPE " " Else Cursor Right Type Text If linken=1 then Call Schreiben EXTRACT IF Result~=" " THEN IF Pos(Result,".,!?)")=0 THEN TYPE " " Else NOP Else Cursor Right Return Schreiben: Status FontWidth OldWidth=result STATUS FontColor OldColor=result Width 4 FontColor "Weiß" Type "æ" IF Verweis.Nummer<10 THEN TYPE "0"||Verweis.Nummer ELSE TYPE Verweis.Nummer FontColor OldColor Width OldWidth return RemoveVerweise: If Verweis.0=1 then;do Disi=1 RemoveSection "Verweise" FORCE Call TR_SETATTRIBUTE(window1,2,'TRAT_DISABLED',1) Call TR_SETATTRIBUTE(window1,4,'TRAT_DISABLED',1) Call TR_SETATTRIBUTE(window1,10,'TRAT_DISABLED',1) Call TR_SETATTRIBUTE(window1,3,'TRAT_DISABLED',1) End Else;do GotoSection "Verweise" MoveToLine 1 0 IF Verweis.Nummer<10 THEN FIND ("ð0"Verweis.Nummer) ELSE FIND ("ð"Verweis.Nummer) AltDown;ShiftDown;Cursor Down;AltUp;ShiftUp Delete End GotoSection MerkeAbschnitt MoveToPara Zurueck Return Fenster: ende2=0 if akt=0 then Text="auf den verwiesen werden soll." if loeschen=1 then Text="der gelöscht werden soll." windowtags=WindowID(2), WindowPosition('TRWP_CENTERDISPLAY'), WindowFlags('TRWF_NOZIPGADGET'), PubScreenName('FinalWriterPubScreen'), WindowTitle('Verweise'), 'VertGroupA SpaceS', 'HorizGroupA SpaceS', 'VertGroupA SpaceS', TextH('Bitte Verweisnamen auswählen,'), TextH(Text), 'SpaceS EndGroup', 'SpaceS EndGroup', 'SpaceS', 'HorizGroupA SpaceS', FWListSelC('VName',1,0) 'TRAT_Flags TRLV_ShowSelected', 'SpaceS EndGroup', 'SpaceS EndGroup', 'EndProject' app2=TR_CREATEAPP('TRCA_NAME Vloeschen') IF app2 ~='00000000'x THEN;DO window2=TR_OPENPROJECT(app2,windowtags) IF window2 ~='00000000'x THEN;do ende2=0 DO WHILE ~ende2 CALL TR_WAIT(app2,'') DO WHILE TR_HANDLEMSG(app2,'event') IF event.trm_class='TRMS_NEWVALUE' THEN;do SELECT WHEN event.trm_id=1 THEN;do Nummer=TR_GETATTRIBUTE(window2,1,'TRAT_VALUE')+1 ende2=1 END OTHERWISE NOP END END IF event.trm_class='TRMS_CLOSEWINDOW' THEN;DO Nummer=0 ende2=1 END END END CALL TR_CLOSEPROJECT(window2) END CALL TR_DELETEAPP(app2) END ELSE CALL quit('Kann das Fenster nicht öffnen',10) RETURN SYNTAX: CALL quit('Fehler' rc 'in Zeile' sigl '-' ERRORTEXT(rc)||R||SOURCELINE(sigl)||R||'Bitte informieren Sie den Autor...',20) quit: PARSE ARG message,rcode IF app ~='00000000'x THEN;DO IF message ~='' THEN ret=rtezrequest(message,"_Okay","ACHTUNG!","rt_pubscrname=FinalWriterPubScreen") CALL TR_DELETEAPP(app) END ELSE IF message ~='' THEN;DO SAY message SAY OPTIONS PROMPT 'Bitte drücken' PULL taste END address command "flushtrx all" EXIT(rcode)