]> git.llucax.com Git - z.facultad/75.06/emufs.git/blobdiff - emufs_gui/viewer.c
* BUGFIX : Estaba mal la condicion de salida en el while de preguntar_id
[z.facultad/75.06/emufs.git] / emufs_gui / viewer.c
index 3f85ab15514e4e7e5811dc3448ce3100393d322e..9d7d0f38acaba0495ca693a8948184c779cb491f 100644 (file)
@@ -58,10 +58,9 @@ void mostrar_info(WINDOW *padre, int h, int offset_alto, int opt)
        wattroff(padre, A_BOLD);
        wattroff(padre, COLOR_PAIR(COLOR_RED));
        mvwaddstr(padre, h-offset_alto+2, 48, "  |   = Separador de campo");
-       mvwaddstr(padre, h-offset_alto+3, 48, "[XXX] = Campo numerico");
-       mvwaddstr(padre, h-offset_alto+4, 48, "(XXX) = ID de registro");
-       mvwaddstr(padre, h-offset_alto+5, 48, "{XXX} = Tam. de registro");
-       mvwaddstr(padre, h-offset_alto+6, 48, "  .   = Esp. Libre");
+       mvwaddstr(padre, h-offset_alto+3, 48, "(XXX) = ID de registro");
+       mvwaddstr(padre, h-offset_alto+4, 48, "{XXX} = Tam. de registro");
+       mvwaddstr(padre, h-offset_alto+5, 48, "  .   = Esp. Libre");
 }
 
 char *juntar_memoria(char *s1, char *s2, char *s3, int size1, int size2, int size3)
@@ -188,12 +187,20 @@ void ver_bloques(WINDOW *padre, int w, int h, int cual)
                                box(dlg, 0, 0);
                                indices_actual = preguntar_id(dlg, fp);
                                if (indices_actual < 0) indices_actual = 0;
-                               if (indices_actual > indices_total) indices_actual = indices_total-1;
+                               if (indices_actual >= indices_total) indices_actual = indices_total-1;
                                werase(dlg);
                                wrefresh(dlg);
                                delwin(dlg);
                                wrefresh(padre);
                                curs_set(0);
+                               if (data) free(data);
+                               fp->leer_bloque_raw(fp, indices_actual, &bloque_actual, &bloque_anterior, &bloque_siguiente, &size_actual, &size_anterior, &size_siguiete);
+                               bloque_actual = procesar(fp, bloque_actual, &size_actual, &pos_actual, &ancho_registro);
+                               bloque_siguiente = procesar(fp, bloque_siguiente, &size_siguiete, &pos_actual, &ancho_registro);
+                               bloque_anterior = procesar(fp, bloque_anterior, &size_anterior, &pos_actual, &ancho_registro);
+                               pos_actual = size_anterior; /* Resalta desde el fin del bloque anterior */
+                               ancho_registro = size_actual;
+                               data = juntar_memoria(bloque_anterior, bloque_actual, bloque_siguiente, size_anterior, size_actual, size_siguiete);
                        break;
                        case 'a': /* Scroll */
                                scroll--;
@@ -338,7 +345,9 @@ void ver_registros(WINDOW *padre, int w, int h, int cual)
                        case 'B':
                                dlg = newwin(4, 50, h/2-2, w/2-25);
                                box(dlg, 0, 0);
-                               preguntar_id(dlg, fp);
+                               indices_actual = preguntar_id(dlg, fp);
+                               if (indices_actual < 0) indices_actual = 0;
+                               if (indices_actual >= indices_total) indices_actual = indices_total - 1;
                                werase(dlg);
                                wrefresh(dlg);
                                delwin(dlg);
@@ -461,7 +470,7 @@ int preguntar_id(WINDOW *win, EMUFS *fp)
                form_ejecutar(form, 1,1);
 
                n = form_obtener_valor_int(form, "ID a buscar");
-       } while (n>0);
+       } while (n<0);
 
        form_destruir(form);
        return n;