/*
**  $VER: Start_TeX.ged 0.003 (02 May 1996)
**
**  © 1995 Stefan Berendes
**
**  PROGRAMNAME:  Start_TeX.ged
**
**  FUNCTION:     Save and compile current text using PasTeX
**
**
**  ARGUMENTS:
**       The first (optional) argument is the format to be used. A '?'
**       formatname will interactively ask for the format to use. Default
**       is latex! The second argument specifies the filename of virtex
**       to use. Default is virtex.
**
**  USES FILES:
**       ENV:TEXFORMAT - default format used, must not exist.
**
**
**  $HISTORY:
**
**  02 May 1996 : 000.003 : cleaned up
**  10 Dec 1995 : 000.002 : pass virtex-name to TeX-Server
**   08 Dec 1995 : 000.001 : initial release
**
**  Based on script by René Laederach, 1994, and Jörg Höhle, ????
*/


OPTIONS RESULTS                             /* enable return codes     */

if (LEFT(ADDRESS(), 6) ~= "GOLDED") then    /* not started by GoldEd ? */
    address 'GOLDED.1'

'LOCK CURRENT'                              /* lock GUI, gain access   */
OPTIONS FAILAT 6                            /* ignore warnings         */
SIGNAL ON SYNTAX                            /* ensure clean exit       */

portname = 'Start_TeX'
script   = 'TeX-server.rexx'    /* no path required, message only       */

IF "" = GETCLIP("TEXQUERY") THEN askformat = 0
ELSE askformat = 1              /* ask interactively for format name    */

PARSE ARG format virtex .
IF "?" = format THEN DO
    askformat= 1
    format   = ""
    END
ELSE IF '&' = LEFT(format,1) THEN
    format = SUBSTR(format,2)
IF virtex = "" THEN
    virtex = "virtex"

'QUERY DOC'       /* full filename */
filename=RESULT


IF "" == filename | UPPER(RIGHT(filename,4)) ~= ".TEX" THEN DO
    'REQUEST PROBLEM="Sorry, filename must have an extension and end in .tex."'
    UNLOCK
    EXIT 5
    END

'QUERY MODIFY'

if (RESULT = 'TRUE') THEN DO
    'REQUEST TITLE="Beware!" BODY="Text has been modified!" BUTTON="_Save|_Cancel"'
    if (RESULT = 1) THEN DO
        SAVE ALL
        END
    else do
        UNLOCK
        EXIT 5
        END
    END

IF (SHOW('P', portname)) THEN DO
    /* set the default format, modify it to suit your needs */
    envformat = mygetenv("TEXFORMAT")
    IF "" == format THEN DO
        format = envformat
        IF askformat | "" = format THEN DO
            IF "" = format THEN format = 'latex'

            'REQUEST TITLE="Question!" BODY="Which format to use ?" OLD="' || format ||'" STRING VAR NFORMAT'
            IF "RESULT" ~= nformat THEN format = nformat

            END /* askformat */
        END /* format */

    if format ~= envformat THEN CALL mysetenv("TEXFORMAT",format)

    'UNLOCK'
    ADDRESS VALUE portname
    'compile' format filename virtex
    EXIT 0 /* Do it here to avoid multiple "Waiting for command..." messages in TeX server window */
    END
ELSE DO
    /* The TeX server must be started first */
    'REQUEST PROBLEM="The TeX server script is not running !"'
    'UNLOCK'
    EXIT 5
    END


SYNTAX:

SAY "Sorry, error line" SIGL ":" ERRORTEXT(RC) ":-("
'UNLOCK'
EXIT

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 = ""

   RETURN gives

mysetenv: procedure
   PARSE ARG name,content

   ADDRESS COMMAND "SetEnv" name content

   RETURN

