/*

 Start_TeX.ced     Thomas Neidhardt  04.10.93

 zu starten als Rexx-Script aus CED

 Kompilation eines TeX Textes mit Vollautomatischer
 Übernahme des aktiven CED-TeX-Textes oder falls
 nicht vorhanden oder kein TeX-Text (...tex) Aufruf
 über automatischen FileRequester.

 Siehe auch  SDVItoFront.ced (analog)
 und TeX-Start.rexx

 EINFACH und VOLL-Phantastisch !!

 keine lästigen Handlungen mehr !

*/


OPTIONS RESULTS

HOST=address()


/*  Private Umgebung aus Rexx-Clip lesen (bitte dort ablegen): */

CALL GetENVclip
Tags = Tags || " rt_pubscrname=" || CEDPubScr


CALL Openports

CALL Loop

CALL CEDenv

CALL CEDsave


Start:

ADDRESS COMMAND

compareFile = loadedfile
if (compareFile = DateiDVI) THEN
 'echo >T:Compile_TeX_Script ";temporäres Shell-Script für Compile_TeX.xxx*ncd 'texdir'*n'TeXbin''Virtex' &'Format' 'Datei'*n"'
else
 'echo >T:Compile_TeX_Script ";temporäres Shell-Script für Compile_TeX.xxx*ncd 'texdir'*n'TeXbin''Virtex' &'Format' 'Datei'*n"'

 'echo >>T:Compile_TeX_Script "wait 3*n*nendcli >NIL:*n"'
 'newshell "con:150/86/530/185/'Virtex': 'Datei' Format:'Format'/CLOSE/SCREEN'CEDPubScr'" from T:Compile_TeX_Script'

 'wait' '4'

 CR = '0a'x
 rtTitel = " TeX-Datei anzeigen ..."
 rtText = " "DateiDVI || CR || CR || "    jetzt anzeigen ? "
 rtBtn0 = " anzeigen |"
 rtBtn1 = " stop"
 rtDefault = " rtez_defaultresponse = 1 "
 rtTags = Tags || rtDefault

 Auswahl = rtezrequest(rtText, rtBtn0||rtBtn1, rtTitel, rtTags, Auswahl)
 IF (Auswahl = 0) THEN
	DO
		CALL ExitMe
		EXIT 0
	END
 ELSE
	DO
		ADDRESS COMMAND
			'run' '>NIL:' 'SYS:rexxc/rx' 'TeX:rexx/SDVItoFront.ced'
	END

CALL ExitMe
EXIT 0

/*---------------------------------------------------------------------------------
*/
Openports:
 IF ~SHOW('L','rexxsupport.library') THEN
  DO
   IF ~ADDLIB('rexxsupport.library', 0, -30, 0) THEN
    DO
     MsgText=" RexxSupport.library konnte nicht geöffnet werden !!"
     CALL Message

     CALL ExitMe
     EXIT 5
    END
  END

 /* ADDRESS COMMAND
 	'SYS:Rexxc/WAITFORPORT' StartPort
 */

 IF ~SHOW('P',StartPort) THEN
  DO
   myport = openport(StartPort)
   IF (myport = 0) THEN
    DO
     MsgText=" Der Port "StartPort" konnte nicht geöffnet werden !"
     CALL Message

     CALL ExitMe
     EXIT 5
    END
  END
 RETURN 1

SDVIopen:
IF ~SHOW('P',sDVIport) THEN
 DO
  ADDRESS COMMAND
   'run >NIL: 'TeXbin'ShowDVI >RAM:callmf.sd -s 'Texts
   'SYS:rexxc/WAITFORPORT' sDVIport

  if ~show('P',sDVIport) then
   do
    MsgText=" ShowDVI konnte nicht gestartet werden !! "
    CALL Message

    CALL ExitMe
    EXIT 5
   end

 END

   if "NOSET" ~= ToggleSDVIdock THEN
    DO
     ADDRESS COMMAND
      'run' '>NIL:' 'execute' 'T:TestSDVIdock.exe'
    END

RETURN 1


Message:
 if show('P',sDVIport) then
  do
   ADDRESS VALUE sDVIport
    tofront
    okay1 MsgText
   RETURN 1
  end
 if show('P',CEDport) then
  do
   ADDRESS VALUE CEDport
    Cedtofront
    okay1 MsgText
   RETURN 1
  end
 ADDRESS COMMAND
  ''comDIR'ScreenToFront >NIL: Workbench 9'
  'echo 'console' "*n*n 'MsgText'"'
 RETURN 1
/*---------------------------------------------------------------------------------
*/

Loop:
 port=CEDport
 CALL PathSuffix
 IF (RESULT=0) THEN
  DO
   ag=1
   CALL GetTeXfile
   IF ag=0 THEN
    DO
     RETURN 1
    END
  END
 CALL AutoExpand
 RETURN 1


GetTeXfile:
 ADDRESS VALUE CEDport

 Cedtofront

 Getfilename Texts '"Edit: Bitte #?.tex auswählen ..."'
 FullPath=RESULT

 CALL Opennew

 Open FullPath

 port=CEDport
 CALL PathSuffix
 IF RESULT=0 THEN
  DO
   ag=1
   Quit
   CALL GetTeXfile
   IF ag=0 THEN
    DO
     RETURN 1
    END
  END

 CALL AutoExpand
 ag=0
 RETURN 1


PathSuffix:
 CALL DateiResults

 IF ("File?" = Datei | " " = Datei | "RESULT" = FullPath) THEN
  DO
   ADDRESS VALUE CEDport
   cedtofront

   rtTitel = " Datei ..."
   rtText = " Doch noch eine Datei laden ? "
   rtBtn0 = " Laden   |"
   rtBtn1 = " Abbrechen "
   rtDefault = " rtez_defaultresponse= 0 "
   rtTags = Tags || " " || EZtags || rtDefault

   Auswahl=rtezrequest(rtText, rtBtn0||rtBtn1, rtTitel, rtTags, Auswahl)

   IF (1 = Auswahl) THEN
      RETURN 0
   ELSE
    DO
     'Quit'

     CALL ExitMe
     EXIT 0
    END
  END
 ELSE
  DO
   IF (sfxPath>0) THEN
    DO
     IF (UPPER(RIGHT(FullPath,4))='.TEX') THEN
       RETURN 1
    END
   CALL SwitchToFront
   okay1 " Die Datei muß .tex als Suffix haben ! "
   RETURN 0
  END
 RETURN 1


DateiResults:
 ADDRESS VALUE CEDport

  Status 19
  FullPath=RESULT

  sfxPath=LASTPOS('.',FullPath)
  IF (sfxPath>1) THEN
   DO
    FullPathTeX=LEFT(FullPath,sfxPath-1)".tex"
    FullPathDVI=LEFT(FullPath,sfxPath-1)".dvi"
   END

  Status 20
  texdir=RESULT

  Status 21
  Datei=RESULT
  DateiTeX=Datei

  sfxDatei=LASTPOS('.',Datei)
  IF (sfxDatei>1) THEN
   DateiDVI=LEFT(Datei,sfxDatei-1)

 if(show('P', sDVIport)) then
 do
   ADDRESS VALUE sDVIport
    getfile
     loadedfile = RESULT
    getdir
     loadeddir = RESULT
    getpage
     page = RESULT
 end

 RETURN 1


CEDenv:
 ADDRESS VALUE CEDport
 "Load Dos/ARexx commands" TeXcnfDIR"CED_RexxCommands.tex"
 "Clear definitions"
 "Load definitions" "TeX:config/CED_macros.tex"
 "Specify" "TeX:config/CED_defaults.tex"
 RETURN 1

CEDsave:
 ADDRESS VALUE CEDport
  "Save"
 RETURN 1

Opennew:
 ADDRESS VALUE CEDport
 Status 17       /* Anzahl der Zeilen der aktuellen Datei im CED */
 Zeilen=RESULT   /* --> Open new ? */
 Status 18              /* Anzahl der Änderungen der aktuellen Datei im CED */
 Aenderungen=RESULT     /* seit dem letzten Speichervorgang */
 IF (Zeilen = 0 & Aenderungen = 0) THEN
   neu=0
 ELSE
  DO
   Open new
   neu=1
  END
 RETURN 1


AutoExpand:
 ADDRESS VALUE CEDport
 Status 72
 IF ~RESULT THEN   /* Auto-expand views?  nicht aktiv */
  DO
   "Auto-expand views?"
   /* "Beg of file" */
   "Auto-expand views?"  /* wieder deaktivieren */
  END
 ELSE
  DO
   /* "Beg of file" */
  END
 RETURN 1

SwitchToFront:
 ADDRESS VALUE port
 IF (port=CEDport) THEN
  Cedtofront
 IF (port=sDVIport) THEN
  tofront
 RETURN 1


GetENVclip:
 StartPort=getclip("TeXStartPort")
 CEDport=getclip("TeXRexxCEDport")
 sDVIport=getclip("TeXRexxShowDVIport")
 comDIR=getclip("TeXcomDIR")
 Texts=getclip("TeXTextDIR")
 console=getclip("TeXmsgconsole")
 TeXbin=getclip("TeXbinDIR")
 TeXcnfDIR=getclip("TeXconfigDIR")
 Virtex=getclip("TeXvirtex")
 cedDIR=getclip("TeXcedDIR")
 ToggleCEdDock=getclip("ToggleCEdDock")
 ToggleSDVIdock=getclip("ToggleSDVIdock")
 CEDPubScr=getclip("CEDPubScr")
 SDVIPubScr=getclip("SDVIPubScr")
 PrinterHi=getclip("PrinterHi")
 PrinterLo=getclip("PrinterLo")
 Tags=getclip("Tags")
 EZtags=getclip("EZtags")
 GLtags=getclip("GLtags")
 GStags=getclip("GStags")

 Format=mygetenv(TEXFORMAT)
 IF "GIVES" = Format THEN Format='glplain'

 ADDRESS COMMAND
  ''comDIR'set texformat='Format''

 RETURN 1



mygetenv: PROCEDURE	/* when will ARexx supply GetEnv/SetEnv ? */
   PARSE ARG name

   IF open(TEMPFILE,"ENV:"||name,'r') THEN
    DO
     gives = readln(TEMPFILE)
     CALL close TEMPFILE
	END
   ELSE
     gives = "GIVES"

   RETURN gives


ExitMe:
   drop StartPort CEDport sDVIport comDIR Texts console TeXbin TeXcnfDIR Virtex cedDIR Format

   ADDRESS COMMAND
	'delete >NIL: T:Compile_TeX_Script quiet'  /* wird nicht immer gelöscht aber bei Verlassen der TeX-Arexx-Oberfläche TeXmaticTNE */

   RETURN 1
