/*--------------------------------------------------------------------
 * FICHERO:  MenTecla.c
 * OBJETIVO: Definir la funcin Men_Tecla()
 * AUTOR:    Pedro Reina
 * FECHA:    M.16.5.1995
 *------------------------------------------------------------------*/

/*--------------------------------------------------------------------
 * Ficheros de cabecera
 *------------------------------------------------------------------*/

#include "Menu.h"

/*--------------------------------------------------------------------
 * Definicin de funciones
 *------------------------------------------------------------------*/

/*--------------------------------------------------------------------
 * FUNCION:  Men_Tecla()
 * OBJETIVO: Recibir del usuario una tecla y clasificarla segn las
 *           necesidades del men
 * ENTRADAS: Un men y un vector de teclas que el men debe procesar
 *           (el vector puede ser NIL)
 * SALIDAS:  Un octeto que puede ser:
 *           MEN_NO -> El usuario ha pulsado una tecla para salir del men
 *                     sin aceptar ninguna opcin
 *           MEN_SI -> El usuario ha pulsado una tecla para salir del men
 *                     aceptando la opcin resaltada
 *           MEN_TRATA -> El usuario ha pulsado una tecla que debe ser
 *                        tratada especficamente por el men
 * EJEMPLO:  Men_Tecla ( MenuPrincipal, (tecla *)NIL )
 * NOTA:     La tecla realmente pulsada por el usuario se puede saber
 *           con la funcin Tec_Ultima()
 *------------------------------------------------------------------*/
octeto Men_Tecla (Menu, TeclaTrata)
menu  Menu;
tecla TeclaTrata[];
  {
  octeto Respuesta;
  tecla  Tecla;
  logico Sigue = SI;
  
  while ( Sigue )
    {
    Tecla = Tec_Pulsada();

    if ( Tecla == TEC_ENTER || 
         Men_DiTeclaSi(Menu) && Tec_Pertenece(Tecla,Men_DiTeclaSi(Menu)) )
      {
      Sigue = NO;
      Respuesta = MEN_SI;
      }

    else if ( Tecla == TEC_ESC || 
              Men_DiTeclaNo(Menu) && Tec_Pertenece(Tecla,Men_DiTeclaNo(Menu)) )
      {
      Sigue = NO;
      Respuesta = MEN_NO;
      }
      
    else if ( TeclaTrata && Tec_Pertenece(Tecla,TeclaTrata) )
      {
      Sigue = NO;
      Respuesta = MEN_TRATA;
      }
      
    else  { Son_MalaTecla(); }
      
    }                   
  
  return ( Respuesta );
  }