]> git.llucax.com Git - z.facultad/75.06/emufs.git/blobdiff - emufs_gui/articulos.c
Recorrer de articulos listo, still buggy, no se si el que jode es el arbol
[z.facultad/75.06/emufs.git] / emufs_gui / articulos.c
index 2d49c02a9c84051f2ee015336dcc3a1101d5dd14..30c7e7430d5f63ac1afd15c2f4ebb1e1e367746c 100644 (file)
@@ -1011,7 +1011,7 @@ void imprimir(WINDOW *win, int y, int x, char *s, char *b)
        waddstr(win, b);
 }
 
        waddstr(win, b);
 }
 
-void mostrar_art(WINDOW *win, CLAVE k, char *s)
+void mostrar_art(WINDOW *win, CLAVE k, char *s, INDICE *idx)
 {
        t_Articulo *art;
        EMUFS_REG_ID dummy;
 {
        t_Articulo *art;
        EMUFS_REG_ID dummy;
@@ -1029,7 +1029,43 @@ void mostrar_art(WINDOW *win, CLAVE k, char *s)
        wattroff(win, A_BOLD);
        mvwaddstr(win, 19, 5, " L = Siguiente");
        mvwaddstr(win, 20, 5, " K = Anterior");
        wattroff(win, A_BOLD);
        mvwaddstr(win, 19, 5, " L = Siguiente");
        mvwaddstr(win, 20, 5, " K = Anterior");
-       art = art_obtener(lst_articulos, k.i_clave, &dummy);
+
+       if (strcmp(s, "codigo") == 0) {
+               art = art_obtener(lst_articulos, k.i_clave, &dummy);
+       } else {
+               INDICE_DATO *datos;
+               EMUFS_REG_SIZE size;
+               int cant, error;
+               char *tmp;
+
+               art = (t_Articulo *)malloc(sizeof(t_Articulo));
+               /* Ya se cual tengo que retornar. Ahora veo si lo cargo desde el archivo */
+               PERR("Busco todos los datos que tengan esta clave");
+               datos = idx->buscar_entradas(idx, k, &cant);
+               if (datos == NULL) {
+                       free(art);
+                       art = NULL;
+               } else {
+                       fprintf(stderr, "Tengo %d datos\n", cant);
+                       error = 1;
+                       k.i_clave = datos[0].id;
+                       PERR("Leo el primer dato");
+                       tmp = lst_articulos->fp->leer_registro(lst_articulos->fp, k, &size, &error);
+                       if (tmp == NULL) {
+                               free(art);
+                               art = NULL;
+                       } else {
+                               if (procesar_leer_articulo(art, tmp, size, lst_articulos) != 1) {
+                                       free(art);
+                                       free(tmp);
+                                       art = NULL;
+                               }
+                       }
+                       free(datos);
+               }
+       }
+
+       
        if (art != NULL) {
                sprintf(numero, "%08d", art->numero);
 
        if (art != NULL) {
                sprintf(numero, "%08d", art->numero);
 
@@ -1071,10 +1107,11 @@ void art_recorrer_con_indice(char *s)
        PERR("Muestro el primer elemento");
 
 
        PERR("Muestro el primer elemento");
 
 
-       mostrar_art(win1, k, s);
+       mostrar_art(win1, k, s, idx);
        wrefresh(win1);
        PERR("Sigue el usuario");
        curs_set(0);
        wrefresh(win1);
        PERR("Sigue el usuario");
        curs_set(0);
+       stack[0] = k;
        while ((c=wgetch(win)) != 13) {
                switch (c) {
                        case 'L':
        while ((c=wgetch(win)) != 13) {
                switch (c) {
                        case 'L':
@@ -1094,7 +1131,7 @@ void art_recorrer_con_indice(char *s)
                                continue;
                }
                werase(win1);
                                continue;
                }
                werase(win1);
-               mostrar_art(win1, k, s);
+               mostrar_art(win1, k, s, idx);
                wrefresh(win1);
        }
        curs_set(1);
                wrefresh(win1);
        }
        curs_set(1);