From: Ricardo Markiewicz Date: Wed, 14 Apr 2004 21:41:18 +0000 (+0000) Subject: * Muestro el tipo de archivo que se esta mirando en Ver Registros X-Git-Tag: svn_import_r684~483 X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/commitdiff_plain/c4b24cdb8c9c9c83ad2b4cad26560b3487d15bd7?ds=inline * Muestro el tipo de archivo que se esta mirando en Ver Registros * Agrego otro parametro a la GUI : el tamaño de bloque. Ahora si el archivo es T1 o T3 la GUI obliga a pasar por parametro el tamaño de registro que se desea para la creacion del archivo. * Mejoro el Makefile para compilar incremental --- diff --git a/emufs_gui/Makefile b/emufs_gui/Makefile index 4eddd9b..3a925f7 100644 --- a/emufs_gui/Makefile +++ b/emufs_gui/Makefile @@ -1,9 +1,10 @@ CFLAGS=-Wall -g -I/usr/include/libxml2 -I../emufs -DDEBUG LDFLAGS= -lmenu -lncurses -lxml2 +OBJ=form.o gui.o articulos.o facturas.o registros.o ../emufs/libemufs.a all: gui -gui: form.c gui.c articulos.c facturas.c registros.c ../emufs/libemufs.a +gui: $(OBJ) clean: @$(RM) -vf *.o gui diff --git a/emufs_gui/articulos.c b/emufs_gui/articulos.c index 83b5fb8..dd4e29a 100644 --- a/emufs_gui/articulos.c +++ b/emufs_gui/articulos.c @@ -60,7 +60,7 @@ int agregar_nodo_articulo(t_LstArticulos *lst, t_Reg_Articulo *nodo) return 1; } -t_LstArticulos *art_cargar(const char *filename, int tipo) +t_LstArticulos *art_cargar(const char *filename, int tipo, int tam_bloque) { xmlDocPtr document; xmlNode *node, *inicio; @@ -94,7 +94,8 @@ t_LstArticulos *art_cargar(const char *filename, int tipo) node = node->next; } - tmp->fp = emufs_crear("articulos", tipo-1, sizeof(t_Articulo)*40+128, sizeof(t_Articulo)); + fprintf(stderr, "bloque = %d\n", tam_bloque); + tmp->fp = emufs_crear("articulos", tipo-1, tam_bloque, sizeof(t_Articulo)); for (node=inicio ; node ; node = node->next) { if (node->type == XML_ELEMENT_NODE) { if (strcmp(node->name, "ARTICULO") == 0) { diff --git a/emufs_gui/articulos.h b/emufs_gui/articulos.h index 6ea5693..8d7eced 100644 --- a/emufs_gui/articulos.h +++ b/emufs_gui/articulos.h @@ -32,7 +32,7 @@ typedef struct _lista_articulos_ { EMUFS *fp; /* Filepointer al archivo donde estan los datos */ } t_LstArticulos; -t_LstArticulos *art_cargar(const char *filename, int tipo); +t_LstArticulos *art_cargar(const char *filename, int tipo, int tam_registro); int art_liberar(t_LstArticulos *l); t_Articulo *art_obtener(t_LstArticulos *, const char *numero, EMUFS_REG_ID *id); void art_agregar(char *); diff --git a/emufs_gui/gui.c b/emufs_gui/gui.c index 7bebab5..ec90147 100644 --- a/emufs_gui/gui.c +++ b/emufs_gui/gui.c @@ -22,7 +22,7 @@ void menu_articulos(); WINDOW *msg_box(WINDOW *win, int w, int h, const char *format, ...); void msg_box_free(WINDOW *padre, WINDOW *win); -typedef enum {PARAM_OK, SHOW_HELP, TIPO_NO_DEFINIDO, TIPO_INVALIDO} t_Param; +typedef enum {PARAM_OK, SHOW_HELP, TIPO_NO_DEFINIDO, TIPO_INVALIDO, BLOQUE_NO_DEFINIDO} t_Param; /* Verifica Argumentos */ t_Param param_ok(int argc, char *argv[]) @@ -33,9 +33,11 @@ t_Param param_ok(int argc, char *argv[]) if (strcmp(argv[i]+strlen(argv[i])-3, "xml") == 0) { /* Luego del archivo XML debe seguir el tipo */ - if ((i+2) 3)) return TIPO_INVALIDO; + if (((n == 1) || (n == 3)) && ((i+2)>=argc)) + return BLOQUE_NO_DEFINIDO; } else { /* Ops, no hay mas parametros */ return TIPO_NO_DEFINIDO; @@ -64,7 +66,10 @@ int main(int argc, char *argv[]) print_help(argv[0]); return 0; case TIPO_NO_DEFINIDO: - printf("Falta parámetro requerido. Luego del nombre del archivo debe especificar el tipo de archivo\n"); + printf("Falta parámetro requerido.\nLuego del nombre del archivo debe especificar el tipo de archivo\n"); + return 1; + case BLOQUE_NO_DEFINIDO: + printf("Falta parámetro requerido.\nLuego del tipo de archivo debe especificar el tamaño del bloque a utilizar\n"); return 1; case TIPO_INVALIDO: printf("Tipo de archivo no valido. Los valores posibles para el tipo de archivo son:\n"); @@ -127,11 +132,11 @@ int main(int argc, char *argv[]) wrefresh(stdscr); dialog = msg_box(stdscr, COLS, LINES, "Generando archivos ..."); - if (argc == 3) { - art_cargar(argv[1], atoi(argv[2])); + if (argc == 4) { + art_cargar(argv[1], atoi(argv[2]), atoi(argv[3])); fact_cargar(argv[1]); } else - art_cargar(NULL, -1); + art_cargar(NULL, -1, -1); msg_box_free(stdscr, dialog); diff --git a/emufs_gui/registros.c b/emufs_gui/registros.c index 9f816a1..69d73b6 100644 --- a/emufs_gui/registros.c +++ b/emufs_gui/registros.c @@ -60,18 +60,25 @@ void ver_registros(WINDOW *padre, int w, int h) EMUFS *fp; int pos_actual, ancho_registro, offset, pos; fp = emufs_abrir("articulos"); + wattron(padre, COLOR_PAIR(COLOR_BLUE)); + mvwaddstr(padre, 0, 0, "Tipo de archivo : "); + wattroff(padre, COLOR_PAIR(COLOR_BLUE)); switch (fp->tipo) { case T1: - case T2: + waddstr(padre, "Registro variable con bloque parametrizado."); procesar = procesar_registro_articulo_tipo1; break; + case T2: + waddstr(padre, "Registro variable sin bloques."); + break; case T3: procesar = procesar_registro_articulo_tipo3; + waddstr(padre, "Registro fijo con bloque parametrizado."); } total_indice = emufs_idx_get_count(fp); - ant_indice = 1; + ant_indice = 0; data = (char *)fp->leer_registro_raw(fp, emufs_idx_get_id_at(fp, ant_indice), &size, &pos_actual); data = procesar(fp, data, &size, &pos_actual, &ancho_registro); @@ -87,7 +94,7 @@ void ver_registros(WINDOW *padre, int w, int h) curs_set(0); - mostrar_info(padre, h, actual_ancho); + mostrar_info(padre, h, offset_alto); mvwaddnstr(actual[1], 0, 0, data, pos_actual); wattron(actual[1], A_BOLD); @@ -124,7 +131,7 @@ void ver_registros(WINDOW *padre, int w, int h) total_indice = emufs_idx_get_count(fp); /* Tengo que re-pintar algunas cosas */ - mostrar_info(padre, h, actual_ancho); + mostrar_info(padre, h, offset_alto); box(actual[0], 0, 0); wrefresh(actual[0]); break; @@ -139,7 +146,7 @@ void ver_registros(WINDOW *padre, int w, int h) data = procesar(fp, data, &size, &pos_actual, &ancho_registro); /* Tengo que re-pintar algunas cosas */ - mostrar_info(padre, h, actual_ancho); + mostrar_info(padre, h, offset_alto); box(actual[0], 0, 0); wrefresh(actual[0]); break;