/*--------------------------------------------------------------------
 * FICHERO:  Vusr.c
 * OBJETIVO: Probar el objeto Usuario
 * AUTOR:    Pedro Reina
 * FECHA:    L.7.8.1995
 *------------------------------------------------------------------*/

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

#include "Usuario.h"

/*--------------------------------------------------------------------
 * Declaracin de funciones
 *------------------------------------------------------------------*/

void P_Usr_BorraZona();
void P_Usr_Indica();
void P_Usr_Avisa();
void P_Usr_PulsaUnaTecla();
void P_Usr_Informa();
void P_Usr_Consulta();
void P_Usr_ErrorFatal();
void P_Usr_Entero();
void P_Usr_Texto();
void P_Usr_Edita();

/*--------------------------------------------------------------------
 * Programa principal
 *------------------------------------------------------------------*/
void main()
  {
  int Opcion, Sigue=1;
  contador Fil, Col;

  Pan_Define (PAN_TEXTO);
  while ( Sigue )
    {
    Pan_Limpia();
    Pan_Color (NEGRO,BLANCO);
    Fil = 0, Col = 3;
    Pan_PonTexto (Fil++,Col,"Prueba del objeto Usuario" );
    Pan_PonTexto (Fil++,Col,"=========================" );
    Fil++;
    Pan_PonTexto (Fil++,Col,"0. Fin del programa" );
    Pan_PonTexto (Fil++,Col,"1. Paso a grfico" );
    Pan_PonTexto (Fil++,Col,"2. Paso a texto" );
    Pan_PonTexto (Fil++,Col,"3. Usr_BorraZona()" );
    Pan_PonTexto (Fil++,Col,"4. Usr_Indica()" );
    Pan_PonTexto (Fil++,Col,"5. Usr_Avisa()" );
    Pan_PonTexto (Fil++,Col,"6. Usr_PulsaUnaTecla()" );
    Pan_PonTexto (Fil++,Col,"7. Usr_Informa()" );
    Pan_PonTexto (Fil++,Col,"8. Usr_Consulta()" );
    Pan_PonTexto (Fil++,Col,"9. Usr_ErrorFatal()" );
    Col--;
    Pan_PonTexto (Fil++,Col,"10. Usr_Entero()" );
    Pan_PonTexto (Fil++,Col,"11. Usr_Texto()" );
    Pan_PonTexto (Fil++,Col,"12. Usr_Edita()" );
    Fil++;
    Pan_PonTexto (Fil++,Col,"Introduce nmero de opcin: " );
    scanf ( "%d", &Opcion );
    getchar();

    switch ( Opcion )
      {
      case 0:   Sigue = 0;               break;
      case 1:   Pan_Cierra();
                Pan_Define (PAN_GRAFICO);
                break;
      case 2:   Pan_Cierra();
                Pan_Define (PAN_TEXTO);
                break;
      case 3:   P_Usr_BorraZona();       break;
      case 4:   P_Usr_Indica();          break;
      case 5:   P_Usr_Avisa();           break;
      case 6:   P_Usr_PulsaUnaTecla();   break;
      case 7:   P_Usr_Informa();         break;
      case 8:   P_Usr_Consulta();        break;
      case 9:   P_Usr_ErrorFatal();      break;
      case 10:  P_Usr_Entero();          break;
      case 11:  P_Usr_Texto();           break;
      case 12:  P_Usr_Edita();           break;
      }
    }
  Pan_Cierra();
  }

/*--------------------------------------------------------------------
 * Funcin P_Usr_BorraZona()
 *------------------------------------------------------------------*/
void P_Usr_BorraZona()
  {
  Usr_BorraZona (BLANCO);
  Pan_Papel (NEGRO);
  Pan_PonTexto (20,0,"Pulsa una tecla para seguir: ");
  Tec_Pulsada();
  Usr_BorraZona (VERDE);
  Pan_Papel (NEGRO);
  Pan_PonTexto (20,0,"Pulsa una tecla para seguir: ");
  Tec_Pulsada();
  Usr_BorraZona (ROJO);
  Pan_Papel (NEGRO);
  Pan_PonTexto (20,0,"Pulsa una tecla para seguir: ");
  Tec_Pulsada();
  Usr_BorraZona (NEGRO);

  Pan_PonTexto (20,0,"Pulsa ENTER para seguir:     ");
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin P_Usr_Indica()
 *------------------------------------------------------------------*/
void P_Usr_Indica()
  {
  Usr_Indica ("Primera lnea", "Segunda lnea");

  Pan_Color (NEGRO,BLANCO);
  Pan_PonTexto (20,0,"Pulsa ENTER para seguir:     ");
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin P_Usr_Avisa()
 *------------------------------------------------------------------*/
void P_Usr_Avisa()
  {
  Usr_Avisa ("Esto es un aviso");

  Pan_Color (NEGRO,BLANCO);
  Pan_PonTexto (20,0,"Pulsa ENTER para seguir: ");
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin P_Usr_PulsaUnaTecla()
 *------------------------------------------------------------------*/
void P_Usr_PulsaUnaTecla()
  {
  Usr_PulsaUnaTecla ("Esto es un mensaje");

  Pan_Color (NEGRO,BLANCO);
  Pan_PonTexto (20,0,"Pulsa ENTER para seguir:     ");
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin P_Usr_Informa()
 *------------------------------------------------------------------*/
void P_Usr_Informa()
  {
  Usr_Informa ("Esto es un informe");

  Pan_Color (NEGRO,BLANCO);
  Pan_PonTexto (20,0,"Pulsa ENTER para seguir: ");
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin P_Usr_Consulta()
 *------------------------------------------------------------------*/
void P_Usr_Consulta()
  {
  if ( Usr_Consulta ("Esto es un pregunta. Qu contestas?") )
    { Pan_PonTexto (18,0,"Respuesta: S"); }
  else
    { Pan_PonTexto (18,0,"Respuesta: No"); }

  Pan_Color (NEGRO,BLANCO);
  Pan_PonTexto (20,0,"Pulsa ENTER para seguir: ");
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin P_Usr_ErrorFatal()
 *------------------------------------------------------------------*/
void P_Usr_ErrorFatal()
  {
  Usr_ErrorFatal ("Cuando se invoca Usr_ErrorFatal() el programa aborta");
  }

/*--------------------------------------------------------------------
 * Funcin P_Usr_Entero()
 *------------------------------------------------------------------*/
void P_Usr_Entero()
  {
  entero Respuesta;

  Pan_BorraLinea (17);
  Pan_PonTexto (17,0,"Edita este nmero: ");
  Respuesta = Usr_Entero (100,4,-99,200,17,19,BLANCO,NEGRO);

  Pan_Color (NEGRO,BLANCO);
  Pan_CursorVisible (SI);
  Pan_PonTexto (18,0,"Resultado: ");
  Pan_Entero (Respuesta,4);
  Pan_PonTexto (20,0,"Pulsa ENTER para seguir: ");
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin P_Usr_Texto()
 *------------------------------------------------------------------*/
void P_Usr_Texto()
  {
  cadena   Respuesta;

  Pan_PonTexto (17,0,"Edita este texto: ");
  Respuesta = Usr_Texto ("Texto inicial",20,17,18,BLANCO,NEGRO);

  Pan_Color (NEGRO,BLANCO);
  Pan_PonTexto (18,0,"Resultado: ");
  Pan_Texto (Respuesta);
  Cad_Destruye (Respuesta);
  Pan_PonTexto (20,0,"Pulsa ENTER para seguir: ");
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin P_Usr_Edita()
 *------------------------------------------------------------------*/
void P_Usr_Edita()
  {
  region Region;
  cadena Texto;

  Pan_Color (NEGRO,BLANCO);
  Pan_Limpia();
  Pan_PonTexto (0,0,"Prueba de Usr_Edita()");

  Cdr_Caja (CDR_SIMPLE,4,9,16,71,ROJO,ROJO);
  Region = Reg_Crea (5,10,15,70);
  Texto = Usr_Edita (Region,
    "1 Texto de prueba\r"
    "2 Texto de prueba\r"
    "3 Texto de prueba\r"
    "4 Texto de prueba\r"
    "5 Texto de prueba\r"
    "6 Texto de prueba\r"
    "7 Texto de prueba\r"
    "8 Texto de prueba\r"
    "9 Texto de prueba\r"
    "10 Texto de prueba\r"
    "11 Texto de prueba\r"
    "12 Texto de prueba\r"
    "13 Texto de prueba\r"
    "14 Texto de prueba\r"
    "15 Texto de prueba\r"
    "16 Texto de prueba\r"
    "17 Texto de prueba\r"
    "18 Texto de prueba\r"
    "19 Texto de prueba\r"
    "20 Texto de prueba\r"
    "21 Texto de prueba\r"
    "22 Texto de prueba\r"
    "23 Texto de prueba\r"
    "24 Texto de prueba\r"
    "25 Texto de prueba\r"
    "26 Texto de prueba\r"
    "27 Texto de prueba\r"
    "28 Texto de prueba\r"
    "29 Texto de prueba\r"
    "30 Texto de prueba\r"
    "31 Texto de prueba"
             );
  Reg_Destruye (Region);

  Pan_Color (NEGRO,BLANCO);
  Pan_PonTexto (18,0,"El texto editado tiene ");
  Pan_Entero (Cad_Longitud(Texto),1);
  Pan_Texto (" caracteres.");
  Cad_Destruye (Texto);

  Pan_PonTexto (20,0,"Pulsa ENTER para seguir: ");
  getchar();
  }

