{--------------------------------------------------------}
{    Programa WordWtil
{    Interface com o Word
{    Biblioteca de opcoes do menu Formatar
{--------------------------------------------------------}

unit WuMeFor;

interface

uses dvcrt, winprocs, strings, WuUtil, wintypes, dvwin, dvmacro,
     WuVars, WuMensa;

Procedure menuFormatar;

implementation

{---------------------------------------------}
procedure corretor;     { corretor ortografico }
{---------------------------------------------}
var
   New_Jan:hwnd;
   palavra:array [0..256] of char;
   sugestao:array [0..256] of char;
   substituta:string;
   fim,sair:boolean;
   opc:char;

label cancelou;
begin
   fim := false;

   trocaJanela (Jan_prog);

   playInit (300);
   playVirtKey (VK_HOME, true, false, false, 1);
   playStart;
   while  playIsActive do;
   delay (150);

   enviaCarac (VK_F7);
   delay (500);

   putClipBoard (' ');

   enviaCarac (VK_INSERT);


   playInit (300);
   playVirtKey (VK_LEFT, true, true, false, 1);
   playStart;
   while  playIsActive do;
   delay (150);

   playInit (300);
   playVirtKey (VK_INSERT, true, false, false, 1);
   playStart;
   while  playIsActive do;
   delay (150);

   New_Jan := getActiveWindow;

   getClipBoard (palavra,254);

   sair := false; (* para a saida do repeat *)

   (* enquanto nao terminou a correcao *)
   while (palavra [0] <> ' ') and (not fim) do
      begin

         trocaJanela (Minha_Jan);

         mensagem ('wuedpadu',0);  { Edite a palavra duvidosa: }
         substituta := strPas (palavra);
         sintetiza (substituta);
         opc := sintEditaCampo (substituta, 1, wherey, 80, 80, true);

         trocaJanela (New_Jan);

         (*  se nao houve alteracao na palavra *)
         if substituta = strPas (palavra) then
            begin
               (* ignorando *)
               playInit (300);
               playVirtKey (ord ('D'), false, false, true, 1);
               playStart;
               while  playIsActive do;
               delay (150);

               playInit (300);
               playVirtKey (ord ('I'), false, false, true, 1);
               playStart;
               while  playIsActive do;
               delay (150);

            end
         else  (* se houve alteracao na palavra *)
            begin

                strPcopy (sugestao,substituta);
                putClipBoard (sugestao);

               (* alterando *)
               playInit (300);
               playVirtKey (VK_INSERT, false, true, false, 1);
               playStart;
               while  playIsActive do;
               delay (150);

               playInit (300);
               playVirtKey (ord ('E'), false, false, true, 1);
               playStart;
               while  playIsActive do;
               delay (150);

            end;

         if opc = ESC then
            begin
               (* cancelando *)
               trocaJanela (New_Jan);
               enviaCarac (VK_ESCAPE);
               trocaJanela (Minha_Jan);
               mensagem ('wucoorca',1);   { Correcao ortografica cancelada }
               goto cancelou;
            end;

         (* teclando enter enquanto aparacer mensagens *)
         while (getActiveWindow <> Jan_Prog) and (getActiveWindow <> New_Jan) do enviaCarac (VK_RETURN);

         (* terminou a correcao *)
         if getActiveWindow = Jan_Prog then
            fim := true
         else
            begin
               putClipBoard (' ');

               enviaCarac (VK_INSERT);

               playInit (300);
               playVirtKey (VK_LEFT, true, true, false, 1);
               playStart;
               while  playIsActive do;
               delay (150);

               playInit (300);
               playVirtKey (VK_INSERT, true, false, false, 1);
               playStart;
               while  playIsActive do;
               delay (150);

               getClipBoard (palavra,254);
            end;
      end;

   enviaCarac (VK_ESCAPE);

   delay (500);
   trocajanela (Minha_Jan);


   mensagem ('wuveoren',1);  { A verificacao ortografica esta incerrada }
cancelou:

end;

{-------------------------------------------------------}
procedure formatDos;  {  formatacao automatica do word }
{-------------------------------------------------------}
                   begin
                        (*******************)
                        sintBip; sintBip; sintBip;
                        exit;
                   end;

{-------------------------------------------------------}
procedure formatWord;  {  formatacao automatica do word }
{-------------------------------------------------------}
begin
   trocaJanela (Jan_Prog);

   enviaCarac (VK_HOME);

   playInit (300);
   playVirtKey (ord ('F'), false, false, true, 1);
   playStart;
   while  playIsActive do;
   delay (50);

   enviaCarac (ord ('A'));

   keyBoardClick (ENTER);

   delay (500);

   enviaCarac (VK_HOME);

   trocaJanela (Minha_Jan);

   mensagem ('wutefo',1);   { Texto formatado. }

end;

{----------------------}
procedure FormatarAjuda;
{----------------------}
begin
   mensagem ('wumeftc',1);    { C - corretor ortografico }
   mensagem ('wumeftw',1);    { W - formatacao word }
   while sintFalando do;
end;

{--------------------------------------------------}
procedure menuFormatar;   { comandos de formatacao }
{--------------------------------------------------}
var
   op:char;

label retorno;
begin

retorno:

   textcolor (WHITE); textbackground (RED);
   mensagem ('wumeftop',0);   { menu Formatar - qual sua opcao? }
   textcolor (7); textbackground (BLACK);

   op := sintReadKey;
   writeln (op);
   if op = #$0 then
      op := ReadKey;

   if op = F9 then while keypressed do;

   case upcase (op) of
      'C': begin
              if modulo = 'edicao' then corretor  (* corretor ortografico *)
              else mensagem ('wuesexed',1);    { Esse comando so pode ser executado em modulo de edicao }
           end;
      'W': begin
              if modulo = 'edicao' then formatWord (* formatacao word *)
              else mensagem ('wuesexed',1);    { Esse comando so pode ser executado em modulo de edicao }
           end;
      'D': begin
              if modulo = 'edicao' then formatDos { formatacao dosvox }
              else mensagem ('wuesexed',1);    { Esse comando so pode ser executado em modulo de edicao }
           end;
      ESC: mensagem ('wucoca',1);   { Comando cancelado. }
      F1 : begin    (* ajuda do sistema *)
              formatarAjuda;
              goto retorno;
           end;
      else
         mensagem ('wuopin',1);   { Opcao invalida. }
   end;
end;
end.