unit dosimpr;
interface
uses winprocs, wintypes, windos, dvcrt, dvwin,
     dosgeral, dosmsg, doscopia, dosproc;

procedure trataImpressao;
procedure fazImpressao (nomearq: string);

implementation

{--------------------------------------------------------}
{                   impressao braille
{--------------------------------------------------------}

procedure chamaProgImpressao (tipo: char; nomeArq: string);
var nomeDir, nome: string;
    nomeProg: string;
begin
    case upcase (tipo) of
        'B': nome := 'BRAIVOX.EXE';
        'C': nome := 'LISTAVOX.EXE';
        'F': nome := 'IMPRIVOX.EXE';
    end;

    nomeProg := sintAmbiente ('DOSVOX', 'PGMDOSVOX');
    if nomeProg = '' then
         nomeProg := 'C:\DOSVOX\' + nome
    else
        begin
            if nomeProg [length(nomeProg)] <> '\' then
                nomeProg := nomeProg + '\';
            nomeProg := nomeProg + nome;
        end;

    getdir (0, nomeDir);

    if executaProg (nomeProg, nomeDir, nomeArq, SW_SHOWNORMAL) then
        esperaProgVoltar;
end;

{--------------------------------------------------------}
{                    rotina de impressao
{--------------------------------------------------------}

procedure fazImpressao (nomearq: string);
var
    c, c2: char;

begin
    textBackground (MAGENTA);
    mensagem (DVCOMFBR, 0);    { Comum, formatada ou braille ? }
    textBackground (BLACK);

    pegaTeclado (c, c2);
    if c > #$20 then
        soletra (c, 1);

    if upcase(c) in ['B','C','F'] then
        chamaProgImpressao (c, nomearq)
    else
        begin
            writeln;
            mensagem (DVIMPCAN, 1);
        end;
end;

{--------------------------------------------------------}
{                  trata a impressao
{--------------------------------------------------------}

procedure trataImpressao;
var nomearq: string;
    arq: file;
begin
    mensagem (DVNOMIMP, 0);   { digite o nome do arquivo a imprimir }
    sintReadln (nomearq);
    if nomearq = '' then exit;

    assign (arq, nomearq);
    {$i-}  reset (arq);  {$i+}
    if ioresult <> 0 then
        begin
            mensagem (DVARQNEX, 1);
            exit;
        end
    else
        close (arq);

    fazImpressao (nomearq);
end;

end.
