SV/SV_UTIL.CPP
2021-09-08 21:43:28 +02:00

498 lines
12 KiB
C++
Raw Permalink Blame History

#include<graphics.h>
#include<dos.h>
#include<io.h>
#include<conio.h>
#include<stdio.h>
// #include<string.h>
#include<ctype.h>
#include<alloc.h>
#include<stdlib.h>
#include "sv_util.h"
#include "..\libs\make_bot\make_bot.h"
#define Letra_Boton setcolor(1);
#define Azul 1
#define Texto_Normal setcolor(63);
#define Texto_Negrita setcolor(0);
extern int x_raton, y_raton, raton;
extern int boton_izq, boton_der;
extern int InputCadenaG(char *s, int numalp, int lmax, int cc, int cf, struct boton Campo);
extern void desactiva_raton(void);
extern void activa_raton(void);
// extern void Anclar_Raton(void);
extern void inicializa_raton_grafico(int x1, int y1, int x2, int y2, int px, int py);
extern int Espera_Tecla_o_Raton(void);
extern void BEEP(void);
extern void textxy(int x, int y, char *text);
#define NEGRO 0
#define AZUL 1
#define ROJO 4
#define VERDE 2
#define BLANCO 63
#define GRIS_O 56
#define GRIS_C 7
#define AMARILLO 62
extern void textxy(int x, int y, char *text);
int Comprueba_Impresora(void);
int Confirma(char *T1, char *T2, char *T3);
int Desde_Hasta(int *Desde, int *Hasta);
int Pide_Fecha_Actual(void);
int file_exists(char *filename);
int Confirma(char *T1, char *T2, char *T3){
void far *ptr;
unsigned size;
struct boton pregunta[2];
int fins_print=0, key_print, bpush, ok = 0;
int TFuente;
struct textsettingstype textinfo;
gettextsettings(&textinfo);
TFuente = textinfo.charsize;
size = imagesize(198, 138, 372, 257);
/* get byte size of image */
Fuente(SMALL_FONT, 5);
if ( (ptr = farmalloc(size)) == NULL) { Fuente(SMALL_FONT, TFuente); return 0; }
getimage(198, 138, 372, 257, ptr);
pregunta[0].up = 140; pregunta[0].down = 255;
pregunta[0].left= 200; pregunta[0].right= 370;
ImprimeBoton (1, GRIS_C, GRIS_O, BLANCO, pregunta[0]);
pregunta[0].up = 235; pregunta[0].down = 250;
pregunta[0].left= 210; pregunta[0].right= 270;
ImprimeBoton (1, GRIS_C, BLANCO, GRIS_O, pregunta[0]);
pregunta[1].up = 235; pregunta[1].down = 250;
pregunta[1].left= 300; pregunta[1].right= 360;
ImprimeBoton (1, GRIS_C, BLANCO, GRIS_O, pregunta[1]);
textxy(212, 237, " Si");
textxy(212, 239, " _");
textxy(302, 237, " No");
textxy(302, 239, " _");
textxy(210+2, 150+2, T1);
textxy(210+2, 165+2, T2);
textxy(210+2, 180+2, T3);
//<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><EFBFBD><EFBFBD><EFBFBD>
do{
if(raton!=0) activa_raton();
Espera_Tecla_o_Raton();
if(raton!=0) desactiva_raton();
if(kbhit()){
key_print = getch();
switch( toupper(key_print) ){
// S Si
case 83:
ok = 1;
fins_print = 1;
break;
// N No
case 78:
ok = 0;
fins_print = 1;
break;
default:
break;
}
} else
if(raton!=0 && boton_izq==1 || boton_der==1) {
if( (bpush = CheckButon( 2, pregunta))>0 ) {
switch(bpush){
case 1:
ok = 1;
fins_print = 1;
break;
case 2:
ok = 0;
fins_print = 1;
break;
default:
break;
}
}
}
}while(!fins_print);
putimage(198, 138, ptr, COPY_PUT);
farfree(ptr);
Fuente(SMALL_FONT, TFuente);
return ok;
}
int Pide_Fecha_Actual(void){
int Fecha;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> void far *ptr;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> unsigned size;
char mes[][11] = { " Enero", "Febrero", " Marzo",
" Abril", " Mayo", " Junio",
" Julio", " Agosto", "Septiemb",
"Octubre", "Noviemb", "Diciemb"
};
struct boton pregunta[3];
struct boton meses[12];
int key_print, bpush, ok = 0;
int TFuente;
for( Fecha = 0; Fecha < 4; Fecha++ ){
meses[2+3*Fecha].left = 405; meses[2+3*Fecha].right = 455;
meses[1+3*Fecha].left = 350; meses[1+3*Fecha].right = 400;
meses[0+3*Fecha].left = 295; meses[0+3*Fecha].right = 345;
}
for( Fecha = 0; Fecha < 3; Fecha++ ) {
meses[Fecha].up = 80+140; meses[Fecha].down = 80+160;
meses[Fecha+3].up = 80+165; meses[Fecha+3].down = 80+185;
meses[Fecha+6].up = 80+190; meses[Fecha+6].down = 80+210;
meses[Fecha+9].up = 80+215; meses[Fecha+9].down = 80+235;
}
struct textsettingstype textinfo;
gettextsettings(&textinfo);
TFuente = textinfo.charsize;
struct date d;
getdate(&d);
Fecha = d.da_mon;
/* get byte size of image */
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> size = imagesize(198, 138, 372, 257);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> if ( (ptr = farmalloc(size)) == NULL) {
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Fuente(SMALL_FONT, TFuente);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> return Fecha;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> }
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> getimage(198, 138, 372, 257, ptr);
pregunta[0].up = /*140*/130; pregunta[0].down = /*255*/400;
pregunta[0].left= /*200*/150; pregunta[0].right= /*370*/465;
ImprimeBoton (1, GRIS_C, GRIS_O, BLANCO, pregunta[0]);
pregunta[0].up = /*143*/135; pregunta[0].down = /*252*/395;
pregunta[0].left= /*203*/155; pregunta[0].right= /*367*/460;
ImprimeBoton (0, GRIS_C, BLANCO, GRIS_O, pregunta[0]);
pregunta[0].up = /*235*/370; pregunta[0].down = /*250*/390;
pregunta[0].left= /*210*/160; pregunta[0].right= /*270*/230;
ImprimeBoton (1, GRIS_C, BLANCO, GRIS_O, pregunta[0]);
pregunta[1].up = /*235*/370; pregunta[1].down = /*250*/390;
pregunta[1].left= /*300*/385; pregunta[1].right= /*360*/455;
ImprimeBoton (1, GRIS_C, BLANCO, GRIS_O, pregunta[1]);
pregunta[2].up = /*165*/175; pregunta[2].down = /*185*/195;
pregunta[2].left= 212; pregunta[2].right= /*232*/245;
ImprimeBoton (1, GRIS_C, BLANCO, GRIS_O, pregunta[2]);
Fuente(SMALL_FONT, 4);
for( int i = 0; i < 12; i++ ) {
ImprimeBoton (1, GRIS_C, GRIS_O, BLANCO, meses[i]);
textxy(meses[i].left+4, meses[i].up+3, mes[i]);
}
ImprimeBoton (1, ROJO, GRIS_O, BLANCO, meses[Fecha-1]);
textxy(meses[Fecha-1].left+4, meses[Fecha-1].up+3, mes[Fecha-1]);
Fuente(SMALL_FONT, 5);
textxy(162, 372, " Aceptar");
textxy(162, 373, " _");
textxy(387, 372, " Cancelar");
textxy(387, 373, " _");
textxy(160+2, 145+2, "Introduzca mes a gestionar:");
// textxy(210+2, 165+2, T2);
// textxy(210+2, 180+2, T3);
char buffer[80];
int Mes=Fecha;
sprintf( buffer, "% 2d", Fecha);
textxy(pregunta[2].left + 4, pregunta[2].up + 2, buffer);
//<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><EFBFBD><EFBFBD><EFBFBD>
do{
if(raton!=0) activa_raton();
Espera_Tecla_o_Raton();
if(raton!=0) desactiva_raton();
if(kbhit()){
key_print = getch();
if( key_print == 13 ) {Fecha = Mes; ok = 1; } else
if( isdigit(key_print) ) {
// Edita el mes actual
sprintf( buffer, "%d", Fecha);
do{
InputCadenaG( buffer, 1, 4, 63, 57, pregunta[2]);
Fecha = atoi(buffer);
}while(Fecha<1 || Fecha>12);
} else
if(key_print==0)
switch( getch() ){
// Flecha Izquierda
case 75:
case 15:
ImprimeBoton (0, GRIS_C, GRIS_O, BLANCO, meses[Mes-1]);
Mes--;
if ( (Mes + 1)== 1 ) Mes = 3; else
if ( (Mes + 1)== 4 ) Mes = 6; else
if ( (Mes + 1)== 7 ) Mes = 9; else
if ( (Mes + 1)==10 ) Mes = 12;
ImprimeBoton (0, GRIS_C, AZUL, AZUL, meses[Mes-1]);
break;
// Flecha Derecha
case 77:
case 9:
ImprimeBoton (0, GRIS_C, GRIS_O, BLANCO, meses[Mes-1]);
Mes++;
if ( (Mes - 1)== 3 ) Mes = 1; else
if ( (Mes - 1)== 6 ) Mes = 4; else
if ( (Mes - 1)== 9 ) Mes = 7; else
if ( (Mes - 1)==12 ) Mes = 10;
ImprimeBoton (0, GRIS_C, AZUL, AZUL, meses[Mes-1]);
break;
// Flecha Abajo
case 80:
ImprimeBoton (0, GRIS_C, GRIS_O, BLANCO, meses[Mes-1]);
Mes += 3; if ( Mes > 12) Mes = Mes - 12;
ImprimeBoton (0, GRIS_C, AZUL, AZUL, meses[Mes-1]);
break;
// Flecha Arriba
case 72:
ImprimeBoton (0, GRIS_C, GRIS_O, BLANCO, meses[Mes-1]);
Mes -= 3; if ( Mes < 1) Mes = 12 + Mes;
ImprimeBoton (0, GRIS_C, AZUL, AZUL, meses[Mes-1]);
break;
}
else
switch( toupper(key_print) ){
// A Aceptar
case 65:
ok = 1;
break;
// C Cancelar
case 67:
ok = 1;
Fecha = -1;
break;
default:
break;
}
} else
if(raton!=0 && boton_izq==1 || boton_der==1) {
if( (bpush = CheckButon( 2, pregunta))>0 ) {
switch(bpush){
case 1:
ok = 1;
break;
case 2:
ok = 1;
Fecha = -1;
break;
default:
break;
}
}
}
}while(!ok);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> putimage(198, 138, ptr, COPY_PUT);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> farfree(ptr);
Fuente(SMALL_FONT, TFuente);
return Fecha;
}
int file_exists(char *filename)
{
return (access(filename, 0) == 0);
}
int Comprueba_Impresora(void){
unsigned int tmp;
union REGS Impresora_in, Impresora_out;
struct byte {
int a : 1;
int b : 1;
int c : 1;
int d : 1;
int e : 1;
int f : 1;
int g : 1;
int h : 1;
};
union bits {
char ch;
struct byte bit;
} Imp_out;
Impresora_in.h.ah = 0x02;
Impresora_in.x.dx = 0x0;
int86(0x17, &Impresora_in, &Impresora_out);
return ( Impresora_out.h.ah ? 1 : 0 );
}
int Desde_Hasta(int *Desde, int *Hasta){
int fins_print= 0, key_print, bpush;
char buffer[80], devuelve = 0;
void far *ptr;
unsigned size;
struct boton pregunta[4];
struct date Fecha;
getdate(&Fecha);
*Desde = *Hasta = Fecha.da_day;
size = imagesize(198, 138, 372, 257);
/* get byte size of image */
if ( (ptr = farmalloc(size)) == NULL) return -1;
getimage(198, 138, 372, 257, ptr);
pregunta[0].up = 140; pregunta[0].down = 255;
pregunta[0].left= 200; pregunta[0].right= 370;
ImprimeBoton (1, ROJO, GRIS_C, BLANCO, pregunta[0]);
pregunta[0].up = 150; pregunta[0].down = /*175*/165;
pregunta[0].left= /*210*/250; pregunta[0].right= 360;
ImprimeBoton (1, NEGRO, GRIS_O, BLANCO, pregunta[0]);
pregunta[1].up = 185; pregunta[1].down = /*210*/200;
pregunta[1].left= /*210*/250; pregunta[1].right= 360;
ImprimeBoton (1, NEGRO, GRIS_O, BLANCO, pregunta[1]);
pregunta[2].up = 220; pregunta[2].down = 245;
pregunta[2].left= 210; pregunta[2].right= 280;
ImprimeBoton (1, GRIS_C, BLANCO, GRIS_O, pregunta[2]);
pregunta[3].up = 220; pregunta[3].down = 245;
pregunta[3].left= 290; pregunta[3].right= 360;
ImprimeBoton (1, GRIS_C, BLANCO, GRIS_O, pregunta[3]);
Fuente(SMALL_FONT, 4);
Letra_Boton
outtextxy(pregunta[0].left+2 - 40, pregunta[0].up+2, "DESDE");
outtextxy(pregunta[1].left+2 - 40, pregunta[1].up+2, "HASTA");
outtextxy(pregunta[2].left+2, pregunta[2].up+2, "CANCELAR");
outtextxy(pregunta[2].left+2, pregunta[2].up+4, "_");
outtextxy(pregunta[3].left+2, pregunta[3].up+2, "ACEPTAR");
outtextxy(pregunta[3].left+2, pregunta[3].up+4, "_");
//<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><EFBFBD><EFBFBD><EFBFBD>
do{
if(raton!=0) activa_raton();
Espera_Tecla_o_Raton();
if(raton!=0) desactiva_raton();
if(kbhit()){
key_print = getch();
if(key_print == 27 ) { fins_print = 1; devuelve = -1; } else
if(key_print == 'A' || key_print == 'a') { fins_print = 1; } else
if(key_print == 'C' || key_print == 'c') { fins_print = 1; devuelve = -1; } else
if( isprint(key_print) ) {
sprintf( buffer, "%d", *Desde);
do{
InputCadenaG( buffer, 1, 2, 63, 57, pregunta[0]);
*Desde = atol(buffer);
}while(*Desde<1 || *Desde>12);
sprintf( buffer, "%d", *Hasta);
do{
InputCadenaG( buffer, 1, 2, 63, 57, pregunta[1]);
*Hasta = atol(buffer);
}while(*Hasta<1 || *Hasta>12);
} else
if( key_print == 0 ) {
switch( (key_print=getch()) ){
// F1 Cancelar
case 59:
fins_print = 1;
devuelve = -1;
break;
// F3 Imprimir Ficha
default:
break;
}
}
} else
if(raton!=0 && boton_izq==1 || boton_der==1) {
if( (bpush = CheckButon( 3, pregunta))>0 ) {
/*
pregunta[0].up = 140; pregunta[0].down = 255;
pregunta[0].left= 200; pregunta[0].right= 370;
ImprimeBoton (1, GRIS_O, GRIS_C, BLANCO, pregunta[0]);
*/
switch(bpush){
// Cancelar
case 3:
fins_print=1;
devuelve = -1;
break;
case 4:
fins_print=1;
break;
}
}
}
}while(!fins_print);
//<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><EFBFBD><EFBFBD><EFBFBD>
putimage(198, 138, ptr, COPY_PUT);
farfree(ptr);
Fuente(SMALL_FONT, 5);
return devuelve;
}