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

unit WuOpc;

interface

uses dvcrt, winprocs, strings, WuUtil, wintypes, dvwin, dvmacro, WuVars,
     WuMeFor, WuMeProc, WuMeArq, WuMeCoPa, WuMeImpr, WuMeFo, WuMeEd, WuMensa;

procedure LinhaABaixo;
procedure LinhaACima;
procedure PaginaABaixo;
procedure PaginaACima;
Procedure MenuOpcoes;
procedure inicioDoTexto;
procedure fimDoTexto;

implementation

{------------------------------------------------------------------}
procedure LinhaABaixo;      { move o cursor para a linha de baixo  }
{------------------------------------------------------------------}
begin
   setActiveWindow (Jan_Prog);
   repeat keypressed until getActiveWindow = Jan_Prog;

   enviaCarac (VK_DOWN);

   setActiveWindow (Minha_Jan);
   repeat keypressed until getActiveWindow = Minha_Jan;
end;

{------------------------------------------------------------}
procedure LinhaACima;  { leva o cursor para a linha de cima  }
{------------------------------------------------------------}
begin
   setActiveWindow (Jan_Prog);
   repeat keypressed until getActiveWindow = Jan_Prog;

   enviaCarac (VK_UP);

   setActiveWindow (Minha_Jan);
   repeat keypressed until getActiveWindow = Minha_Jan;
end;

{----------------------------------------------------------}
procedure PaginaABaixo;    {  adianta uma pagina de tela   }
{----------------------------------------------------------}
begin
   setActiveWindow (Jan_Prog);
   repeat keypressed until getActiveWindow = Jan_Prog;

   enviaCarac (VK_NEXT);

   setActiveWindow (Minha_Jan);
   repeat keypressed until getActiveWindow = Minha_Jan;
end;

{-------------------------------------------------------------------}
procedure PaginaACima;     { recua com o cursor uma pagina de tela  }
{-------------------------------------------------------------------}
begin
   setActiveWindow (Jan_Prog);
   repeat keypressed until getActiveWindow = Jan_Prog;

   enviaCarac (VK_PRIOR);

   setActiveWindow (Minha_Jan);
   repeat keypressed until getActiveWindow = Minha_Jan;
end;

{-------------------------------------------------------------------------}
procedure inicioDoTexto;     { recua com o cursor para o inicio do texto  }
{-------------------------------------------------------------------------}
begin
   setActiveWindow (Jan_Prog);
   repeat keypressed until getActiveWindow = Jan_Prog;

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

   setActiveWindow (Minha_Jan);
   repeat keypressed until getActiveWindow = Minha_Jan;
end;

{----------------------------------------------------------------}
procedure fimDoTexto;     { leva o cursor para o final do texto  }
{----------------------------------------------------------------}
begin
   setActiveWindow (Jan_Prog);
   repeat keypressed until getActiveWindow = Jan_Prog;

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


   setActiveWindow (Minha_Jan);
   repeat keypressed until getActiveWindow = Minha_Jan;
end;

{--------------------}
procedure menuAjuda;
{--------------------}
begin
   mensagem ('wup',1);  { P - menu Procurar }
   mensagem ('wuc',1);  { C - menu Comando de Pagina }
   mensagem ('wuj',1);  { J - menu Justificar }
   mensagem ('wut',1);  { T - menu Formatar }
   mensagem ('wuf',1);  { F - menu Fontes }
   mensagem ('wui',1);  { I - menu Imprimir }
   mensagem ('wua',1);  { A - menu Arquivar }
   mensagem ('wue',1);  { E - menu Editar }
   while sintFalando do;
end;

{------------------------}
procedure ajudaTabulacao;
{------------------------}
begin
   mensagem ('wujust',1);   { J - justificado }
   mensagem ('wucent',1);   { C - centraliza }
   mensagem ('wuesqu',1);   { E - margem esquerda }
   mensagem ('wudir',1);   { D - margem direita }
   while sintfalando do;

end;

{------------------------------------------------}
procedure tabula;    { tabulacao de um paragrafo }
{------------------------------------------------}
var
   i:integer;
   op,c:char;
   s:string;

label fim;
begin

   repeat
      textcolor (WHITE); textbackground (RED);
      mensagem ('wuqutab',0);   { Qual a tabulacao? }
      textcolor (7); textbackground (BLACK);
      c := upcase (sintReadKey);
      writeln (c);

      if c = F1 then
         ajudaTabulacao
      else if c = ESC then (* cancelou *)
         goto fim;

   until (c = 'J') or (c = 'C') or (c = 'D') or (c = 'E');

   if c = 'J' then
      s := 'Justificado'
   else if c = 'C' then
      s := 'Centralizado'
   else if c = 'D' then
      s := 'Margem direita'
   else
      s := 'Margem esquerda';

    mensagem ('wuteoupa',1);  { Texto ou Paragrafo? }
    op := upCase (sintReadKey);

   trocaJanela (jan_Prog);

   if op = 'T' then
      marcaTudo;

   if c = 'C' then
      c := 'E'
   else if c = 'E' then
      c := 'Q'
   else if c = 'D' then
      c := 'G';


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


   if op = 'T' then
      begin
         playInit (300);
         playVirtKey (VK_HOME, false, false, false, 1);
         playStart;
         while  playIsActive do;
         delay (50);
      end;

   trocaJanela (minha_Jan);

   sintWriteln (s);
fim:
end;

{----------------------------------------------------}
Procedure MenuOpcoes;   { outras opcoes de comandos  }
{----------------------------------------------------}
var
   op:char;

label retorno;
begin

retorno:

   textcolor (WHITE); textbackground (BLUE);
   mensagem ('wuquop',0);  { 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
      (* so permite a substituicao se estiver no modulo de edicao *)
      'P': menuProcurar;  (* buscas *)
      'C': menuComandoDePagina;
      'J': if modulo = 'edicao' then tabula; (* tabulacoes de para grafo *)
      'T': menuFormatar;
      'F': menuFontes;
      'I': menuImprimir;
      'A': menuArquivar;
      'E': menuEditar;
      ESC: mensagem ('wucancel',1);   { Cancelado }
      F1 : begin    (* ajuda do sistema *)
              menuAjuda;
              goto retorno;
           end;
      else
         mensagem ('wuopin',1);  {  opcao invalida }
   end;

end;
end.


