First commit 11/11/1991

This commit is contained in:
2021-09-12 20:06:36 +02:00
commit 8fe25e5bc5
58 changed files with 51891 additions and 0 deletions

496
HERM_MM.CPP Normal file
View 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 );
}
}