/*
  AREXX script zur Beendigung eines TeXMaticTNE Prozeßes:
        CEd oder ShowDVI werden beendet.

  Aufruf durch ShowDVI (PasTeX) oder CEd (CygnusSoft)
  bei Betätigung der diesem
  Script entsprechenden Funktionstaste (default: f3).
 
  Siehe auch TeX:config/showdvi.config

  10.07.94 Thomas Neidhardt
*/


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

OPTIONS RESULTS


PARSE ARG myHost

Continue = 0

HOST = address()
IF (myHost~="" & myHost ~="MYHOST") THEN
	DO
		HOST = myHost
		Continue = 1
    END
CALL GetENVclip



IF (sDVIport = HOST) THEN
 DO
  ADDRESS VALUE sDVIport
   Prog = "ShowDVI"
   ToggleDock = ToggleSDVIdock
   MyPort = SDVIport
   CALL DateiResultsSDVI
 END
ELSE
 DO
  IF (CEDport = HOST) THEN
     DO
      ADDRESS VALUE CEDport
       Prog = "CygnusEd"
       ToggleDock = ToggleCEDdock
       MyPort = CEDport
       CALL = DateiResultsCEd
     END
    ELSE

     EXIT 0

 END

IF (Continue = 1) THEN CALL CloseDown

rtTitle = "TeXmatic (TNE)"
rtText = " Beenden..."
IF ("CygnusEd" = Prog) THEN
	rtBtn1 = " _CED-Interface schließen |"
IF ("ShowDVI" = Prog) THEN
	rtBtn1 = " _Previewer schließen |"

rtBtn2 = " _Oh..  "
rtDefault = " rtez_defaultresponse = 1 "
rtTags = Tags || rtDefault

cancel = 0
TEXend = 1

Auswahl = rtezrequest(rtText, rtBtn1||rtBtn2, rtTitle, EZTags)

IF (Auswahl = Cancel) THEN
  DO
   if (HOST ~= MyPort) then
    DO
      EXIT 0
    END
  END

IF (Auswahl = TEXend) THEN   /* beenden */
  DO
    CALL CloseDown
  END

EXIT 0

/*------------------------------------------------------------------*/

CloseDown:

   /* TeX-Docks schließen */

   IF ("NOSET" ~= ToggleDock) THEN
    DO
     IF ("CygnusEd" = Prog) THEN
    	DO
		ADDRESS COMMAND
			'run >NIL: execute t:CloseCEDdock.exe'
			'wait' "1 secs"
		END
	 IF ("ShowDVI" = Prog) THEN
    	DO
		ADDRESS COMMAND
			'run >NIL: execute t:CloseSDVIdock.exe'
			'wait' "1 secs"
		END
	END

   IF ("CygnusEd" = Prog) THEN
    DO
     CALL Std_CED_ENV
     ADDRESS VALUE CEDport
      "Jump to file" ""loadeddir""loadedfile".tex"
      IF (RESULT) THEN     /* sonst wahrsch. TeX-fremder Text im CED */
       DO
        ADDRESS VALUE CEDport
         'Quit'
       END
      ELSE
       DO
        ADDRESS VALUE CEDport
         Status 21
         IF (UPPER(RIGHT(RESULT,4)) = ".TEX") THEN
          tex=1
         Status 17
         Zeilen=RESULT
         Status 18
         Aenderungen=RESULT
         IF (tex=1 | (Zeilen = 0 & Aenderungen = 0)) THEN
           'Quit'
       END
        IF show('P', sDVIport) THEN
        DO
          ADDRESS VALUE SDVIport
            'tofront'

          ADDRESS COMMAND
            ''comDIR'SWindow' '>NIL:' '"SDVIdock"' 'f'

		END
    END

   IF ("ShowDVI" = Prog) THEN
    DO
     ADDRESS VALUE sDVIport
      'exit'

     IF show('P', CEDport) then
		DO
	     ADDRESS VALUE CEDport
    	    'cedtofront'

         ADDRESS COMMAND
            ''comDIR'SWindow' '>NIL:' '"CEDdock"' 'f'

		END
    END


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

EXIT 0

/*---------------------------------------------------------------------------
*/

Std_CED_ENV:
 ADDRESS VALUE CEDport
  "Clear definitions"
  "Load definitions" "s:CEDmacros"
  "Load Dos/ARexx commands" "s:RexxCommands"
  Specify "s:ceddefaults"
 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


cleanupClip:
 ADDRESS VALUE HOST
 setclip('TeXStartPort')
 setclip('TeXRexxCEDport')
 setclip('TeXRexxShowDVIport')
 setclip('TeXcomDIR')
 setclip('TeXTextDIR')
 setclip('TeXmsgconsole')
 setclip('TeXbinDIR')
 setclip('TeXconfigDIR')
 setclip('TeXcedDIR')
 setclip('TeXvirtex')
 setclip('ToggleCEdDock')
 setclip('ToggleSDVIDock')
 setclip('CEDPubScr')
 setclip('SDVIPubScr')
 setclip('PrinterHi')
 setclip('PrinterLo')
 setclip('Tags')
 setclip('EZtags')
 setclip('GLtags')
 setclip('GStags')
 RETURN 1


cleanupDOSvars:
 /* weitere DOS-spezifische Abmeldungen */

 /* Müll von StartDVIprint.rexx usw. aufräumen */

 ADDRESS COMMAND
 'delete >NIL: T:ShellDVIprint quiet'
 'delete >NIL: T:TeXTextFile quiet'
 'delete >NIL: T:Compile_TeX_Script quiet'
 'delete >NIL: T:#?fax-exe quiet'
 'delete >NIL: T:#?.fax quiet'
 'delete >NIL: T:#?.adr#? quiet'

 /* abmelden der Environmentvariablen ...

   für VirTeX & Co. (Wübbeling) */

   ADDRESS COMMAND
   ''comDIR'set TEXFORMATS'
   ''comDIR'set TEXMACROS'
   ''comDIR'set TEXFONTS'
   ''comDIR'set TEXINPUTS'


 /* für Radical Eye TeX */

   ADDRESS COMMAND
   ''comDIR'set texmacros'
   ''comDIR'set texinputs'
   ''comDIR'set texpacked'
   ''comDIR'set texformat'

 /* entfernen der restlichen ENV: Bestandteile */

   ADDRESS COMMAND
   'delete >NIL: ENV:TEXCONFIG ENV:TEXFORMATS ENV:TEXINPUTS ENV:TEXMACROS ENV:TEXPOOL quiet'

 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


DateiResultsSDVI:

 ADDRESS VALUE sDVIport
  getfile
   loadedfile = RESULT
  getdir
   loadeddir = RESULT

 RETURN 1


DateiResultsCEd:
 if show('P', sDVIport) then
  DO
    ADDRESS VALUE sDVIport
     getfile
      loadedfile = RESULT
     getdir
      loadeddir = RESULT
     getpage
      page = RESULT

    RETURN 1
  END

 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)

  loadedfile = DateiDVI
  loadeddir = texdir'/'

 RETURN 1


