First commit 11/11/1991
This commit is contained in:
496
HERM_MM.CPP
Normal file
496
HERM_MM.CPP
Normal file
@ -0,0 +1,496 @@
|
||||
/**************************************************************************\
|
||||
|* *|
|
||||
|* Menus *|
|
||||
|* *|
|
||||
|* Descripci<63>n: *|
|
||||
|* M<>dulo encargado de generar menus, una vez se le pasa *|
|
||||
|* el puntero a la estructura definida. *|
|
||||
|* *|
|
||||
|* Fecha: 21-07-96 14.34 / 18.00 *|
|
||||
|* 23.13 / 00.30 *|
|
||||
\**************************************************************************/
|
||||
|
||||
#include <dos.h>
|
||||
#include <conio.h>
|
||||
#include <alloc.h>
|
||||
#include <graphics.h>
|
||||
#include "..\libs\make_bot\make_bot.h"
|
||||
|
||||
#undef MB_TeclaPulsada()
|
||||
#define MB_TeclaPulsada() kbhit()
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "herm.h"
|
||||
#include "..\libs\bdatos\bdatos.hh"
|
||||
|
||||
|
||||
#define CONTRAIDO 0
|
||||
#define EXPANDIDO 1
|
||||
|
||||
extern unsigned _stklen = 18432U;
|
||||
|
||||
extern BDatos BConfig;
|
||||
|
||||
extern int far Espera_TeclaRaton(void);
|
||||
void ErrorOccurred(int errorcode);
|
||||
|
||||
int Topicos = 5;
|
||||
int SubTopicos[] = { 3, 4, 4, 9, 3 };
|
||||
void far *Fondo_Menu; int xST, yST;
|
||||
char *email="Jose-David.Guillen@cs.us.es";
|
||||
|
||||
int MenuPrincipal(void);
|
||||
|
||||
void ContraeMenu(void);
|
||||
void ExpandeMenu( int Menu );
|
||||
void SeleccionaTopico(int Topico, char color);
|
||||
void SeleccionaSubTopico( int Topico, int SubTopico, int color );
|
||||
void CheckRaton_Topic(int *Topico, int *SubTopico, int *Menu);
|
||||
int GestionHermanos( char HnoHna, int Accion );
|
||||
void LeeConfiguracion(void);
|
||||
void OrdenaBase( char HnoHna );
|
||||
void GestionInsignias(void);
|
||||
void ListadosRapidos( int Tipo_de_Listado );
|
||||
void ConfiguracionGlobal(void);
|
||||
void Imprime_Dibujo(void);
|
||||
|
||||
int handler(int errval,int ax,int bp,int si);
|
||||
|
||||
|
||||
void main(void)
|
||||
{
|
||||
int Item;
|
||||
struct date FechaActual;
|
||||
getdate( &FechaActual );
|
||||
|
||||
|
||||
if ( carga_botones( "Herm.img" ) != OK )
|
||||
return;
|
||||
LeeConfiguracion();
|
||||
|
||||
Initialize( 9, 2 ); // Inicializa el Modo Gr<47>fico
|
||||
|
||||
harderr(handler);
|
||||
|
||||
True_Push = ON; PunteroRaton = 1;
|
||||
inicializa_raton_grafico( 0, 0, 639, 479 );
|
||||
|
||||
while(1){
|
||||
Item = MenuPrincipal();
|
||||
switch ( Item>>8 )
|
||||
{
|
||||
// Archivo
|
||||
case 1:
|
||||
switch( Item & 0x00FF )
|
||||
{
|
||||
// Configuracion
|
||||
case 1:
|
||||
ConfiguracionGlobal();
|
||||
break;
|
||||
// Mantenimiento
|
||||
case 2:
|
||||
GestionInsignias();
|
||||
break;
|
||||
case 3:
|
||||
BConfig.CerrarReg();
|
||||
closegraph();
|
||||
printf("\nJos<EFBFBD> David Guill<6C>n || _-<2D>FuTuRe ViSiOn<4F>-_ ");
|
||||
printf("\n\ne-mail: %s\n", email);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
// Hermanos / Hermanas
|
||||
case 2:
|
||||
case 3:
|
||||
switch( Item & 0x00FF )
|
||||
{
|
||||
// Altas
|
||||
case ALTAS:
|
||||
if ( ( Item >> 8 ) == 2 )
|
||||
GestionHermanos( HERMANOS, ALTAS );
|
||||
else
|
||||
GestionHermanos( HERMANAS, ALTAS );
|
||||
break;
|
||||
// Bajas
|
||||
case BAJAS:
|
||||
if ( ( Item >> 8 ) == 2 )
|
||||
GestionHermanos( HERMANOS, BAJAS );
|
||||
else
|
||||
GestionHermanos( HERMANAS, BAJAS );
|
||||
break;
|
||||
// Consultas / Modificaciones
|
||||
case CONSULTAS:
|
||||
if ( ( Item >> 8 ) == 2 )
|
||||
GestionHermanos( HERMANOS, CONSULTAS );
|
||||
else
|
||||
GestionHermanos( HERMANAS, CONSULTAS );
|
||||
break;
|
||||
case REORDENAR:
|
||||
if ( ( Item >> 8 ) == 2 )
|
||||
OrdenaBase( HERMANOS );
|
||||
else
|
||||
OrdenaBase( HERMANAS );
|
||||
break;
|
||||
}
|
||||
break;
|
||||
// Listados
|
||||
case 4:
|
||||
ListadosRapidos( ( Item & 0x00FF ) );
|
||||
break;
|
||||
// Ayuda
|
||||
case 5:
|
||||
Optar( 0, "Acerca de...", "Programa realizado por:", "Jos<EFBFBD> David Guill<6C>n || 1996", "e-mail:", "Jose-David.Guillen@cs.us.es", NULL );
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
int MenuPrincipal(void)
|
||||
{
|
||||
int Menu = CONTRAIDO;
|
||||
int Topico = 0, SubTopico = 0, ok=0;
|
||||
|
||||
// Memoria para el cuadro mas grande que coja
|
||||
if ( ( Fondo_Menu = farmalloc( (long)(64000L/*+4*/) ) ) == NULL )
|
||||
Error( "No hay suficiente memoria" );
|
||||
|
||||
|
||||
// Imprime men<65> principal
|
||||
Imprime_Estaticos(10, "herm.img");
|
||||
Imprime_Dibujo();
|
||||
|
||||
settextstyle( SMALL_FONT, HORIZ_DIR, 6 );
|
||||
|
||||
SeleccionaTopico( Topico, EGA_RED );
|
||||
|
||||
do
|
||||
{
|
||||
Espera_TeclaRaton();
|
||||
if ( !kbhit() )
|
||||
CheckRaton_Topic(&Topico, &SubTopico, &Menu);
|
||||
else
|
||||
switch( getch() )
|
||||
{
|
||||
// Intro
|
||||
case 13:
|
||||
if ( Menu == CONTRAIDO )
|
||||
{
|
||||
Menu = EXPANDIDO; ExpandeMenu( Topico );
|
||||
SubTopico = 0;
|
||||
SeleccionaSubTopico( Topico, SubTopico, EGA_RED );
|
||||
} else {
|
||||
ContraeMenu();
|
||||
ok = 1;
|
||||
}
|
||||
break;
|
||||
// Esc
|
||||
case 27:
|
||||
if ( Menu == EXPANDIDO )
|
||||
{
|
||||
Menu = CONTRAIDO; ContraeMenu();
|
||||
}
|
||||
break;
|
||||
case 0:
|
||||
switch( getch() )
|
||||
{
|
||||
// Flecha Izquierda
|
||||
case 75:
|
||||
case 15:
|
||||
if ( Menu != CONTRAIDO )
|
||||
ContraeMenu();
|
||||
|
||||
SeleccionaTopico( Topico, EGA_LIGHTGRAY );
|
||||
Topico--; if ( Topico<0 ) Topico = Topicos-1;
|
||||
SeleccionaTopico( Topico, EGA_RED );
|
||||
SubTopico = 0;
|
||||
|
||||
if ( Menu != CONTRAIDO )
|
||||
{
|
||||
ExpandeMenu( Topico );
|
||||
SeleccionaSubTopico( Topico, SubTopico, EGA_RED );
|
||||
}
|
||||
break;
|
||||
// Flecha Derecha
|
||||
case 77:
|
||||
case 9:
|
||||
if ( Menu != CONTRAIDO )
|
||||
ContraeMenu();
|
||||
|
||||
SeleccionaTopico( Topico, EGA_LIGHTGRAY );
|
||||
Topico++; if ( Topico>=Topicos ) Topico = 0;
|
||||
SeleccionaTopico( Topico, EGA_RED );
|
||||
SubTopico = 0;
|
||||
|
||||
if ( Menu != CONTRAIDO )
|
||||
{
|
||||
ExpandeMenu( Topico );
|
||||
SeleccionaSubTopico( Topico, SubTopico, EGA_RED );
|
||||
}
|
||||
break;
|
||||
// Flecha Arriba
|
||||
case 72:
|
||||
if ( Menu == EXPANDIDO )
|
||||
{
|
||||
SeleccionaSubTopico( Topico, SubTopico, EGA_LIGHTGRAY );
|
||||
SubTopico--; if ( SubTopico < 0 ) SubTopico = SubTopicos[Topico]-1;
|
||||
SeleccionaSubTopico( Topico, SubTopico, EGA_RED );
|
||||
}
|
||||
break;
|
||||
// Flecha Abajo
|
||||
case 80:
|
||||
if ( Menu == EXPANDIDO )
|
||||
{
|
||||
SeleccionaSubTopico( Topico, SubTopico, EGA_LIGHTGRAY );
|
||||
SubTopico++; if ( SubTopico >= SubTopicos[Topico] ) SubTopico = 0;
|
||||
SeleccionaSubTopico( Topico, SubTopico, EGA_RED );
|
||||
} else {
|
||||
Menu = EXPANDIDO; ExpandeMenu( Topico );
|
||||
SubTopico = 0;
|
||||
SeleccionaSubTopico( Topico, SubTopico, EGA_RED );
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}while(!ok);
|
||||
|
||||
farfree( Fondo_Menu );
|
||||
return ( (Topico+1)<<8 )+(SubTopico+1);
|
||||
}
|
||||
|
||||
void CheckRaton_Topic(int *Topico, int *SubTopico, int *Menu)
|
||||
{
|
||||
// Men<65> principal
|
||||
if ( y_raton > 9 && y_raton < 27 )
|
||||
{
|
||||
if ( x_raton > 8 && x_raton < 90 && *Topico != 0 )
|
||||
{
|
||||
ContraeMenu(); SeleccionaTopico( *Topico, EGA_LIGHTGRAY );
|
||||
*Topico = 0; *SubTopico = 0;
|
||||
*Menu = EXPANDIDO; ExpandeMenu( *Topico );
|
||||
SeleccionaTopico( *Topico, EGA_RED );
|
||||
SeleccionaSubTopico( *Topico, *SubTopico, EGA_RED );
|
||||
} else
|
||||
if ( x_raton > 105 && x_raton < 197 && *Topico != 1 )
|
||||
{
|
||||
ContraeMenu(); SeleccionaTopico( *Topico, EGA_LIGHTGRAY );
|
||||
*Topico = 1; *SubTopico = 0;
|
||||
*Menu = EXPANDIDO; ExpandeMenu( *Topico );
|
||||
SeleccionaTopico( *Topico, EGA_RED );
|
||||
SeleccionaSubTopico( *Topico, *SubTopico, EGA_RED );
|
||||
} else
|
||||
if ( x_raton > 215 && x_raton < 307 && *Topico != 2 )
|
||||
{
|
||||
ContraeMenu(); SeleccionaTopico( *Topico, EGA_LIGHTGRAY );
|
||||
*Topico = 2; *SubTopico = 0;
|
||||
*Menu = EXPANDIDO; ExpandeMenu( *Topico );
|
||||
SeleccionaTopico( *Topico, EGA_RED );
|
||||
SeleccionaSubTopico( *Topico, *SubTopico, EGA_RED );
|
||||
} else
|
||||
if ( x_raton > 325 && x_raton < 412 && *Topico != 3 )
|
||||
{
|
||||
ContraeMenu(); SeleccionaTopico( *Topico, EGA_LIGHTGRAY );
|
||||
*Topico = 3; *SubTopico = 0;
|
||||
*Menu = EXPANDIDO; ExpandeMenu( *Topico );
|
||||
SeleccionaTopico( *Topico, EGA_RED );
|
||||
SeleccionaSubTopico( *Topico, *SubTopico, EGA_RED );
|
||||
} else
|
||||
if ( x_raton > 560 && x_raton < 630 && *Topico != 4 )
|
||||
{
|
||||
ContraeMenu(); SeleccionaTopico( *Topico, EGA_LIGHTGRAY );
|
||||
*Topico = 4; *SubTopico = 0;
|
||||
*Menu = EXPANDIDO; ExpandeMenu( *Topico );
|
||||
SeleccionaTopico( *Topico, EGA_RED );
|
||||
SeleccionaSubTopico( *Topico, *SubTopico, EGA_RED );
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void SeleccionaTopico(int Topico, char color)
|
||||
{
|
||||
setcolor( color );
|
||||
switch( Topico )
|
||||
{
|
||||
case 0:
|
||||
rectangle( 8, 9, 90, 27 );
|
||||
break;
|
||||
case 1:
|
||||
rectangle( 105, 9, 197, 27 );
|
||||
break;
|
||||
case 2:
|
||||
rectangle( 215, 9, 307, 27 );
|
||||
break;
|
||||
case 3:
|
||||
rectangle( 325, 9, 412, 27 );
|
||||
break;
|
||||
case 4:
|
||||
rectangle( 560, 9, 630, 27 );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void SeleccionaSubTopico( int Topico, int SubTopico, int color )
|
||||
{
|
||||
setcolor( color );
|
||||
switch( Topico )
|
||||
{
|
||||
case 0:
|
||||
if ( SubTopico == 2 )
|
||||
rectangle( 8, 40+20*3, 157, 40+20*4 );
|
||||
else
|
||||
rectangle( 8, 40+20*SubTopico, 157, 40+20*( SubTopico + 1 ) );
|
||||
break;
|
||||
case 1:
|
||||
if ( SubTopico == 3 )
|
||||
rectangle( 108, 40+20*4, 257, 40+20*5 );
|
||||
else
|
||||
rectangle( 108, 40+20*SubTopico, 257, 40+20*(SubTopico+1) );
|
||||
break;
|
||||
case 2:
|
||||
if ( SubTopico == 3 )
|
||||
rectangle( 218, 40+20*4, 367, 40+20*5 );
|
||||
else
|
||||
rectangle( 218, 40+20*SubTopico, 367, 40+20*( SubTopico + 1 ) );
|
||||
break;
|
||||
case 3:
|
||||
rectangle( 328, 40+20*SubTopico, 482, 40+20*( SubTopico + 1 ) );
|
||||
break;
|
||||
case 4:
|
||||
rectangle( 483, 40+20*SubTopico, 627, 40+20*( SubTopico + 1 ) );
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
void ExpandeMenu( int Menu )
|
||||
{
|
||||
|
||||
switch( Menu )
|
||||
{
|
||||
case 0:
|
||||
xST = 5; yST = 35;
|
||||
getimage( 5, 35, 160, 40+20*4+5, Fondo_Menu );
|
||||
setfillstyle(SOLID_FILL, EGA_LIGHTGRAY); bar( 5, 35, 160, 40+20*4+5 );
|
||||
setcolor( EGA_BLACK ); rectangle( 5, 35, 160, 40+20*4+5 );
|
||||
setcolor( EGA_BLUE );
|
||||
outtextxy( 8, 40+20*0, " Configuracion" );
|
||||
outtextxy( 8, 40+20*1, " Insignias " );
|
||||
outtextxy( 8, 40+20*2, " -------------" );
|
||||
outtextxy( 8, 40+20*3, " ( Salir ) " );
|
||||
break;
|
||||
case 1:
|
||||
xST = 105; yST = 35;
|
||||
getimage( 105, 35, 260, 40+20*5+5, Fondo_Menu );
|
||||
setfillstyle(SOLID_FILL, EGA_LIGHTGRAY); bar( 105, 35, 260, 40+20*5+5 );
|
||||
setcolor( EGA_BLACK ); rectangle( 105, 35, 260, 40+20*5+5 );
|
||||
setcolor( EGA_BLUE );
|
||||
outtextxy( 105, 40+20*0, " Altas de Hnos" );
|
||||
outtextxy( 105, 40+20*1, " Bajas de Hnos" );
|
||||
outtextxy( 105, 40+20*2, " Consul/Modif." );
|
||||
outtextxy( 105, 40+20*3, " -------------" );
|
||||
outtextxy( 105, 40+20*4, " Reordenar Hns" );
|
||||
break;
|
||||
case 2:
|
||||
xST = 215; yST = 35;
|
||||
getimage( 215, 35, 370, 40+20*5+5, Fondo_Menu );
|
||||
setfillstyle(SOLID_FILL, EGA_LIGHTGRAY); bar( 215, 35, 370, 40+20*5+5 );
|
||||
setcolor( EGA_BLACK ); rectangle( 215, 35, 370, 40+20*5+5 );
|
||||
setcolor( EGA_BLUE );
|
||||
outtextxy( 215, 40+20*0, " Altas de Hnos" );
|
||||
outtextxy( 215, 40+20*1, " Bajas de Hnos" );
|
||||
outtextxy( 215, 40+20*2, " Consul/Modif." );
|
||||
outtextxy( 215, 40+20*3, " -------------" );
|
||||
outtextxy( 215, 40+20*4, " Reordenar Hns" );
|
||||
break;
|
||||
case 3:
|
||||
xST = 325; yST = 35;
|
||||
getimage( 325, 35, 485, 40+20*9+5, Fondo_Menu );
|
||||
setfillstyle(SOLID_FILL, EGA_LIGHTGRAY); bar( 325, 35, 485, 40+20*9+5 );
|
||||
setcolor( EGA_BLACK ); rectangle( 325, 35, 485, 40+20*9+5 );
|
||||
setcolor( EGA_BLUE );
|
||||
outtextxy( 325, 40+20*0, " Votantes " );
|
||||
outtextxy( 325, 40+20*1, " Acogido a Cuota" );
|
||||
outtextxy( 325, 40+20*2, " Rec. Notificac." );
|
||||
outtextxy( 325, 40+20*3, " Papeletas de S." );
|
||||
outtextxy( 325, 40+20*4, " Listado Hnos " );
|
||||
outtextxy( 325, 40+20*5, " Fichas Hnos " );
|
||||
outtextxy( 325, 40+20*6, " T<>nicas Hdad. " );
|
||||
outtextxy( 325, 40+20*7, " Facturas " );
|
||||
outtextxy( 325, 40+20*8, " Etiquetas Dir. " );
|
||||
break;
|
||||
case 4:
|
||||
xST = 480; yST = 35;
|
||||
getimage( 480, 35, 630, 40+20*3+5, Fondo_Menu );
|
||||
setfillstyle(SOLID_FILL, EGA_LIGHTGRAY); bar( 480, 35, 630, 40+20*3+5 );
|
||||
setcolor( EGA_BLACK ); rectangle( 480, 35, 630, 40+20*3+5 );
|
||||
setcolor( EGA_BLUE );
|
||||
outtextxy( 480, 40+20*0, " ------------" );
|
||||
outtextxy( 480, 40+20*1, " Creditos " );
|
||||
outtextxy( 480, 40+20*2, " Acerca de..." );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void ContraeMenu(void)
|
||||
{
|
||||
if ( Fondo_Menu != NULL )
|
||||
putimage( xST, yST, Fondo_Menu, COPY_PUT );
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void Imprime_Dibujo(void)
|
||||
{
|
||||
FILE *fp;
|
||||
int alto, ancho; unsigned char byte;
|
||||
int contador;
|
||||
|
||||
|
||||
if ( ( fp = fopen ( "insignia.pcx", "rb" ) ) != NULL )
|
||||
{
|
||||
|
||||
// Saltamos la cabecera
|
||||
fseek( fp, 128, SEEK_SET );
|
||||
|
||||
for(alto=0; alto<128; alto++)
|
||||
{
|
||||
for(ancho=0; ancho<128; )
|
||||
{
|
||||
byte=getc(fp);
|
||||
if(byte<=0xC0)
|
||||
{
|
||||
if ( byte != 255 )
|
||||
putpixel( ancho+256, alto+270, byte );
|
||||
ancho++;
|
||||
}
|
||||
else
|
||||
{
|
||||
contador=byte&0x3F; byte=getc(fp);
|
||||
for(; contador>0; contador--)
|
||||
{
|
||||
if ( byte != 255 )
|
||||
putpixel( ancho+256, alto+270, byte );
|
||||
ancho++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
fclose( fp );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user