/*
 $VER: WordWorth7.dopus5 2.0 (27.5.98)
 Written by Jan-Erik Karlsson
 Send docs/texts to WordWorth7 from DirectoryOpus
 Call as:
 <AREXX>DOpus5:ARexx/WordWorth7.dopus5 {Qp} {f!}
*/

/* Change this to the path where PPaint is located (Don't remove the brackets) */
WWPath = 'Work2:Dtp/WordWorth7'
WWProg = 'Work2:Dtp/WordWorth7/WordWorth'

options results
PARSE ARG portname2 '"'docfile'"' .
IF portname2 == '' THEN DO
  portname2 = "DOPUS.1"
END
portname2 = strip(portname2, "B",' ')
portname2 = strip(portname2, "B", '"')

IF ~SHOW('L','rexxsupport.library') THEN DO
  addlib('rexxsupport.library',0,-30)
END
IF ~SHOW('L','datatypes.library') THEN DO
  addlib('datatypes.library',0,-30)
END

IF docfile ~= '' THEN DO
  docfile = strip(docfile,"B",' ')
  docfile = strip(docfile,"B",'"')
  filename2 = docfile
  rc = max(lastpos(':',docfile),lastpos('/',docfile))+1
  file1= substr(docfile,rc)
  docpath=strip(left(docfile,rc-1),'T','/')
  docfile = file1
END

lf='0a'x /* Thanks to Edmund Vermeulen for that sneaky code :) */

IF Show("P",portname2) THEN DO
 address value portname2
END
ELSE DO
 exit
END

dopus version
if(result ~= 'RESULT') then do
  vers=translate(result,'.',' ')
  if(vers==5.8) then vers = 5.8000
end
else vers = 'RESULT'
IF (vers == 'RESULT' | vers < 5.1218 ) THEN DO
  dopus request '"This script requires DOpus v5.5 or greater." OK'
 exit
END

doc = docfile
popup=1
filename2 = filename2

dopus progress name info info2 title abort
handler = result
dopus progress handler title 'WordWorth loader by Jan-Erik Karlsson 99'
dopus progress handler info2 'Checking filetype'
dopus progress handler name doc

CALL ExamineDT(filename2,dtstem., STEM)
docftype = dtstem.DataType


IF length(docftype )>= 7 THEN DO
  docftype2 = left(docftype,6)
  docftype2 = strip(docftype2, "B",' ')
END
ELSE DO
  docftype2 = docftype
END

docGroup = dtstem.GroupID
docGroup2 = dtstem.GroupIDName

dopus progress handler info2 ' '
dopus progress handler info 'FileGroup: 'docGroup2' FileType: 'docftype
dopus progress handler info2 'Looking for WordWorth...'

if Show("P","Wordworth Lives") then DO
  call CHECKWW
END
Else Do
  dopus front
  call dorequest('"WordWorth does not seem to be loaded.'lf'Should I load WordWorth?" _Yes|_No')
  if returnflag==1 then DO
    call LOADWW
  END
  else do
    dopus progress handler info 'FileGroup: 'docGroup2' FileType: 'docftype
    dopus progress handler info2 'Aborting...'
    call EXIT_ME
  END
  call EXIT_ME
END

CHECKWW:
	i=0
	do until found==1
    NewPort="WORDWORTH."||i
		if show('P',NewPort) THEN DO
			found=1
			PortName="WORDWORTH."||i
		END
		else i=i+1
	END
  address value PortName
  options failat 3000
	call SENDWW
END

LOADWW:
  IF docGroup == 'docu' | docGroup == 'text' THEN DO
    dopus progress handler info 'FileGroup: 'docGroup2' FileType: 'docftype
    dopus progress handler info2 'Launching WordWorth...'
    address command "RUN >NIL: "WWProg
		i=0
    DO UNTIL PortName=='WORDWORTH.1'
      address command "Wait 1 secs" /* This is needed for some strange reason */
      IF show('p','WORDWORTH.1') THEN PortName='WORDWORTH.1'
      ELSE PortName= ''
    END
    dopus progress handler info 'FileGroup: 'docGroup2' FileType: 'docftype
    dopus progress handler info2 'WordWorth Loaded...'
		address command "Wait 5 secs"
    call SENDWW
  END
  ELSE call EXIT_ME
END

SENDWW:
  options failat 2
  address value portname2
  dopus progress handler info 'FileGroup: 'docGroup2' FileType: 'docftype
  dopus progress handler info2 'Loading file...'
	dopus back
  address value PortName
  IF docGroup == 'docu' THEN DO
    open FILENAME filename2
  END
	IF docGroup == 'text' THEN DO
		open FILENAME filename2
	END
  address value portname2
  call EXIT_ME
END

EXIT_ME:
  dopus progress handler info 'FileGroup: 'docGroup2' FileType: 'docftype
  dopus progress handler info2 'All Done...'
  dopus progress handler off
  exit
END

dorequest:
   parse arg reqargs
   dopus request reqargs
   returnflag = rc
   return
