void art_consultas(char *s)
{
/* TEST DE LISTA! */
+ char txt[80];
+ int i;
t_Lista *lista;
WINDOW *win, *win1;
wrefresh(win);
/* Creo la lista */
- PERR("-- Creando");
lista = lista_crear(3, win1, COLS-4, LINES-6);
- PERR("-- Creando DONE");
/* Creo las columnas */
- PERR("-- Creando Columnas");
lista_agregar_columna(lista, DATO_INT, 0, 8);
lista_agregar_columna(lista, DATO_STR, 10, 45);
lista_agregar_columna(lista, DATO_FLOAT, 60, 10);
- PERR("-- Creando DONE");
/* Agrego unos datos a ver que pasa */
- PERR("Agregando Datos");
- lista_agregar_fila(lista, 1, "Dato uno", 1.32f);
- lista_agregar_fila(lista, 2, "Dato Algo", 1.332f);
- lista_agregar_fila(lista, 3, "Dato Copado", 11.32f);
- lista_agregar_fila(lista, 4, "Esto es de texto", 133.32f);
- lista_agregar_fila(lista, 5, "Dato", 1.32f);
- lista_agregar_fila(lista, 6, "Dato uno", 10.32f);
- lista_agregar_fila(lista, 7, "Dato uno", 11.32f);
- PERR("Agregando Datos DONE");
+ /* Pongo 100 y rezo */
+ for(i=0; i<100; i++) {
+ sprintf(txt, "Texto del item %d", i);
+ lista_agregar_fila(lista, i, txt, (rand()%100)/100.0f);
+ }
+ curs_set(0);
lista_ejecutar(lista);
+ curs_set(1);
wrefresh(win1);
wrefresh(win);
- getch();
+ werase(win1);
+ werase(win);
+ wrefresh(win);
+ delwin(win);
}
}
}
-void lista_ejecutar(t_Lista *lst)
+void print_lista(t_Lista *lst, t_Fila *fil, int sel)
{
char texto[100];
char salida[100];
char format[100];
-
- t_Fila *fil;
t_Columna *col;
int y=0, i;
-
- fil = lst->primera;
- if (fil == NULL) {
- PERR("NO TENGO FILAS :-(");
- }
-
while (fil) {
/* Si no entran mas filas salgo! */
if (y>lst->h) break;
sprintf(format, "%%%ds", col->width);
}
sprintf(salida, format, texto);
+ if (y == sel) {
+ wattron(lst->win, A_STANDOUT);
+ }
waddstr(lst->win, salida);
+ if (y == sel) {
+ wattroff(lst->win, A_STANDOUT);
+ }
i++;
col = col->sig;
}
fil = fil->sig;
y++;
}
- wrefresh(lst->win);
+}
+
+void lista_ejecutar(t_Lista *lst)
+{
+ int key;
+ t_Fila *fil;
+ int i, offset=0, selected=0;
+
+ fil = lst->primera;
+ if (fil == NULL) {
+ PERR("NO TENGO FILAS :-(");
+ }
+
+ print_lista(lst, fil, selected);
+
+ while ((key = wgetch(lst->win)) != 13) {
+ if ((key == 'a') || (key == 'A')) {
+ /*offset--;*/
+ selected--;
+ if (selected < 0) {
+ selected=0;
+ offset--;
+ if (offset < 0) offset = 0;
+ }
+ } else if ((key == 'z') || (key == 'Z')) {
+ /*offset++;*/
+ selected++;
+ if (selected >= lst->h) {
+ selected--;
+ offset++;
+ }
+ } else {
+ continue;
+ }
+
+ fil = lst->primera;
+ i=0;
+ /* Salto a la primer fila a mostrar */
+ while ((fil) && (i<offset)) {
+ fil = fil->sig;
+ i++;
+ }
+
+ print_lista(lst, fil, selected);
+ wrefresh(lst->win);
+ }
}