From: Ricardo Markiewicz Date: Sun, 30 May 2004 20:38:25 +0000 (+0000) Subject: * Permito desde las lista ir directamente a editar el registro X-Git-Tag: svn_import_r684~59 X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/commitdiff_plain/d0c23819f9f43fb15b3736eb0ff56159b0b56042?hp=2ad9bce43bb5b8f16eb48503c23c42a2e4865bba * Permito desde las lista ir directamente a editar el registro --- diff --git a/emufs_gui/articulos.c b/emufs_gui/articulos.c index 5c6c27e..6bc3b7a 100644 --- a/emufs_gui/articulos.c +++ b/emufs_gui/articulos.c @@ -689,6 +689,7 @@ void art_consultas_codigos(char *s, t_Lista *lista) t_Articulo *articulo; t_Form *form; INDICE *idx; + int editar; idx = lst_articulos->fp->indices; @@ -725,11 +726,11 @@ void art_consultas_codigos(char *s, t_Lista *lista) PERR("AGREGO A LA LISTA"); fprintf(stderr, "%d - %s\n", articulo->numero, articulo->desc); lista_agregar_fila(lista, - articulo->numero, - articulo->desc, - articulo->existencia, - articulo->emin - ); + articulo->numero, + articulo->desc, + articulo->existencia, + articulo->emin + ); free(articulo); } PERR("OBTENGO SIGUIENTE CLAVE"); @@ -738,8 +739,14 @@ void art_consultas_codigos(char *s, t_Lista *lista) } curs_set(0); - lista_ejecutar(lista); + editar = lista_ejecutar(lista); curs_set(1); + + if (editar != -1) { + char cc[20]; + sprintf(cc, "%d", editar); + art_modificar(cc); + } } void art_consultas_stock(char *s, t_Lista *lista) @@ -749,6 +756,7 @@ void art_consultas_stock(char *s, t_Lista *lista) t_Form *form; INDICE *idx; float por; + int editar; idx = emufs_buscar_indice_por_nombre(lst_articulos->fp, "desc"); if (idx == NULL) PERR("NO SE ENCUENTRA INDICE DESC!!!"); @@ -799,8 +807,13 @@ void art_consultas_stock(char *s, t_Lista *lista) } curs_set(0); - lista_ejecutar(lista); + editar = lista_ejecutar(lista); curs_set(1); + if (editar != -1) { + char cc[20]; + sprintf(cc, "%d", editar); + art_modificar(cc); + } } void art_consultas_cambiar_precio(char *s, t_Lista *lista) @@ -886,7 +899,7 @@ void art_consultas_cambiar_precio(char *s, t_Lista *lista) void art_consultas_varias(char *nombre_indice, char *titulo, t_Lista *lista) { - int i, cant, error; + int i, cant, error, editar; char desc[51], *tmp; t_Articulo articulo; t_Form *form; @@ -932,8 +945,13 @@ void art_consultas_varias(char *nombre_indice, char *titulo, t_Lista *lista) } if (datos) free(datos); curs_set(0); - lista_ejecutar(lista); + editar = lista_ejecutar(lista); curs_set(1); + if (editar != -1) { + char cc[20]; + sprintf(cc, "%d", editar); + art_modificar(cc); + } } @@ -953,8 +971,10 @@ void art_consultas(char *s) win = newwin(LINES-4, COLS-2, 2, 1); win1 = derwin(win, LINES-6, COLS-4, 1, 1); + werase(win1); werase(win); box(win, 0, 0); + wrefresh(win1); wrefresh(win); /* Creo la lista donde mostrar la consulta*/ @@ -987,8 +1007,8 @@ void art_consultas(char *s) lista_clear(lista); werase(win1); werase(win); - wrefresh(win1); box(win, 0, 0); + wrefresh(win1); wrefresh(win); } werase(win1); @@ -1092,7 +1112,9 @@ void art_recorrer_con_indice(char *s) win = newwin(LINES-4, COLS-2, 2, 1); win1 = derwin(win, LINES-6, COLS-4, 1, 1); werase(win); + werase(win1); box(win, 0, 0); + wrefresh(win1); wrefresh(win); PERR("Obtengo clave menor"); @@ -1103,6 +1125,7 @@ void art_recorrer_con_indice(char *s) mostrar_art(win1, k, s, idx); wrefresh(win1); + wrefresh(win); PERR("Sigue el usuario"); curs_set(0); stack[0] = k; @@ -1125,8 +1148,10 @@ void art_recorrer_con_indice(char *s) continue; } werase(win1); + werase(win); mostrar_art(win1, k, s, idx); wrefresh(win1); + wrefresh(win); } curs_set(1); @@ -1164,7 +1189,9 @@ void art_ver_ventas() win = newwin(LINES-4, COLS-2, 2, 1); win1 = derwin(win, LINES-6, COLS-4, 1, 1); werase(win); + werase(win1); box(win, 0, 0); + wrefresh(win1); wrefresh(win); /* El usuario ingresa rango a listar */ @@ -1179,6 +1206,8 @@ void art_ver_ventas() form_destruir(form); werase(win1); wrefresh(win1); + werase(win); + wrefresh(win); /* Si el usuario no ingreso alguno de los datos, lo obtengo del indice */ /*idx = emufs_buscar_indice_por_nombre(fact_get_lst()->fp, "emision");*/ diff --git a/emufs_gui/lista.c b/emufs_gui/lista.c index 5e209cd..ca71b72 100644 --- a/emufs_gui/lista.c +++ b/emufs_gui/lista.c @@ -12,8 +12,12 @@ t_Lista *lista_crear(int cc, WINDOW *win, int w, int h) tmp->w = w; tmp->h = h; + tmp->win_datos = derwin(win, h-4, w, 3, 0); + tmp->w_datos = w; + tmp->h_datos = h-4; tmp->columnas = NULL; tmp->primera = NULL; + tmp->cant_filas = 0; return tmp; } @@ -82,6 +86,7 @@ void lista_agregar_fila(t_Lista *lst, ...) pos->sig = nueva; nueva->ant = pos; } + lst->cant_filas++; } void lista_agregar_fila_ordenada(t_Lista *lst, ...) @@ -150,6 +155,7 @@ void lista_agregar_fila_ordenada(t_Lista *lst, ...) nueva->sig = pos; } } + lst->cant_filas++; } void print_lista(t_Lista *lst, t_Fila *fil, int sel) @@ -158,7 +164,7 @@ void print_lista(t_Lista *lst, t_Fila *fil, int sel) char salida[100]; char format[100]; t_Columna *col; - int y=0, i; + int y=3, i; werase(lst->win); /* Pongo los nombres de las columnas */ col = lst->columnas; @@ -169,17 +175,22 @@ void print_lista(t_Lista *lst, t_Fila *fil, int sel) } wattroff(lst->win, COLOR_PAIR(COLOR_RED)); + /* Imprimo algunas cosas*/ + sprintf(format, "Cantidad de Items : %d", lst->cant_filas); + mvwaddstr(lst->win, 0, 0, format); + mvwaddstr(lst->win, 1, 0, "Teclas : ENTER = VOLVER E = Editar"); /* Pongo la filas */ + y = 0; y++; sel++; while (fil) { /* Si no entran mas filas salgo! */ - if (y>=(lst->h)) break; + if (y>=(lst->h_datos)) break; col = lst->columnas; /* Imprimo los datos de cada columna */ i = 0; while (col) { - wmove(lst->win, y, col->offset); + wmove(lst->win_datos, y, col->offset); switch (col->tipo) { case DATO_INT: sprintf(texto, "%d", fil->datos[i].i_dato); @@ -196,11 +207,11 @@ void print_lista(t_Lista *lst, t_Fila *fil, int sel) } sprintf(salida, format, texto); if (y == sel) { - wattron(lst->win, A_STANDOUT); + wattron(lst->win_datos, A_STANDOUT); } - waddstr(lst->win, salida); + waddstr(lst->win_datos, salida); if (y == sel) { - wattroff(lst->win, A_STANDOUT); + wattroff(lst->win_datos, A_STANDOUT); } i++; col = col->sig; @@ -210,7 +221,7 @@ void print_lista(t_Lista *lst, t_Fila *fil, int sel) } } -void lista_ejecutar(t_Lista *lst) +int lista_ejecutar(t_Lista *lst) { int key; t_Fila *fil; @@ -235,10 +246,22 @@ void lista_ejecutar(t_Lista *lst) } else if ((key == 'z') || (key == 'Z')) { /*offset++;*/ selected++; - if (selected >= (lst->h-1)) { + if (selected >= (lst->h_datos)) { selected--; offset++; } + } else if ((key == 'e') || (key == 'E')) { + /* Me piden editar el item actual, retorno la primer columna + * del item seleccionado + */ + fil = lst->primera; + i=0; + /* Salto a la primer fila a mostrar */ + while ((fil) && (i<(selected+offset))) { + fil = fil->sig; + i++; + } + return fil->datos[0].i_dato; } else { continue; } @@ -252,8 +275,9 @@ void lista_ejecutar(t_Lista *lst) } print_lista(lst, fil, selected); - wrefresh(lst->win); + wrefresh(lst->win_datos); } + return -1; /* sali sin seleccionar */ } void lista_clear(t_Lista *lst) diff --git a/emufs_gui/lista.h b/emufs_gui/lista.h index c91f501..4b2d977 100644 --- a/emufs_gui/lista.h +++ b/emufs_gui/lista.h @@ -41,11 +41,15 @@ typedef struct _fila_ { typedef struct _lista_ { int cant_columnas; /**< Cantidad de columnas */ WINDOW *win; /**< Ventana donde dibujar */ + WINDOW *win_datos; /**< Ventana donde poner datos */ int w; /**< Ancho de la ventana */ int h; /**< Alto de la ventana */ + int w_datos; + int h_datos; t_Columna *columnas; /**< Puntero a la primer columna */ t_Fila *primera; /**< Puntero a la primer fila */ + int cant_filas; /**< Para info en pantalla */ } t_Lista; /** Crea una nueva lista @@ -88,7 +92,7 @@ void lista_agregar_fila_ordenada(t_Lista *lst, ...); * * \param lst */ -void lista_ejecutar(t_Lista *lst); +int lista_ejecutar(t_Lista *lst); /** Limpia los datos agregados a las filas */ void lista_clear(t_Lista *lst);