program ViewWith;

{
  Test program for ViewDoc unit.
}

{$IFDEF FPC}
 {$MODE Delphi}
{$ELSE}
 {$APPTYPE CONSOLE}
{$ENDIF} 
{$R+,Q+}

uses
  SysUtils,
  ViewDoc;
  
var
  VwrIdx   : Integer;
  Viewer   : Integer;
  Options  : TViewerOptions;
  InStr    : string;
  ErrorMsg : string;
  Done     : Boolean;

begin

  if ParamCount < 2 then
    begin
    WriteLn('Usage: ViewWith viewername docfilename [-t] [-d]');
    Exit;
    end;

  Viewer := 0;
  for VwrIdx := 1 to GetViewerCount do
    begin
    if SameText(ParamStr(1), GetViewerName(VwrIdx)) then
      Viewer := VwrIdx;
    end;
  if Viewer = 0 then
    WriteLn('Specified viewer not supported - using first viewer found');

  Options := [];
  if FindCmdLineSwitch('t', ['-'], True) then  {Treat file as template?}
    Options := Options + [ovwUseAsTemplate];

  if FindCmdLineSwitch('d', ['-'], True) then  {Delete file before exiting?}
    begin
    Options := Options + [ovwAddToDeleteList];
    Write('File will be deleted when done viewing - is this okay (Y/N)? ');
    ReadLn(InStr);
    if CompareText(InStr, 'y') <> 0 then
      Exit;
    end; 

  if not ViewDocument(ParamStr(2), Viewer, Options, ErrorMsg) then
    begin
    WriteLn(ErrorMsg);
    Exit;
    end; 

  if FindCmdLineSwitch('d', ['-'], True) and FileExists(ParamStr(2)) then
    begin
    repeat
      Write('Press Enter when ready to delete file (or Ctrl+C to exit): ');
      ReadLn(InStr);
      Done := DeleteViewedDocs;
      if not Done then
        WriteLn('  Unable to delete file - may still be open in viewer');
    until Done; 
    end;
end.