t_Articulo *articulo;
t_Form *form;
INDICE *idx;
+ int editar;
idx = lst_articulos->fp->indices;
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");
}
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)
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!!!");
}
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)
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;
}
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);
+ }
}
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*/
lista_clear(lista);
werase(win1);
werase(win);
- wrefresh(win1);
box(win, 0, 0);
+ wrefresh(win1);
wrefresh(win);
}
werase(win1);
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");
mostrar_art(win1, k, s, idx);
wrefresh(win1);
+ wrefresh(win);
PERR("Sigue el usuario");
curs_set(0);
stack[0] = k;
continue;
}
werase(win1);
+ werase(win);
mostrar_art(win1, k, s, idx);
wrefresh(win1);
+ wrefresh(win);
}
curs_set(1);
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 */
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");*/
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;
}
pos->sig = nueva;
nueva->ant = pos;
}
+ lst->cant_filas++;
}
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)
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;
}
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);
}
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;
}
}
-void lista_ejecutar(t_Lista *lst)
+int lista_ejecutar(t_Lista *lst)
{
int key;
t_Fila *fil;
} 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;
}
}
print_lista(lst, fil, selected);
- wrefresh(lst->win);
+ wrefresh(lst->win_datos);
}
+ return -1; /* sali sin seleccionar */
}
void lista_clear(t_Lista *lst)
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
*
* \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);