+ 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+7, 48, " < > = Separador Bloques");
+}
+
+void ver_registros(WINDOW *padre, int w, int h)
+{
+ /* Ventanas donde mostrar las cosas */
+ char *(*procesar)(EMUFS*, char*, EMUFS_REG_SIZE*, int*, int*);
+ WINDOW *actual[2], *dlg;
+ EMUFS_REG_SIZE size;
+ int scroll, actual_ancho;
+ int max_scroll, c, offset_alto;
+ /* Indices que hay validos en IDX */
+ EMUFS_REG_ID *indices, indices_total, indices_actual;
+ char *data; /* Registros a mostrar en pantalla */
+ char codigo[50]; /* Variable para guardar el codigo actual para mandar a modificar */
+ EMUFS *fp;
+ int pos_actual, ancho_registro, offset, pos;
+
+ fp = emufs_abrir("articulos");
+ wattron(padre, COLOR_PAIR(COLOR_BLUE));
+ mvwaddstr(padre, 0, 0, "Tipo de archivo : ");
+ wattroff(padre, COLOR_PAIR(COLOR_BLUE));
+ switch (fp->tipo) {
+ case T1:
+ waddstr(padre, "Registro variable con bloque parametrizado.");
+ procesar = procesar_registro_articulo_tipo1;
+ break;
+ case T2:
+ waddstr(padre, "Registro variable sin bloques.");
+ break;
+ case T3:
+ procesar = procesar_registro_articulo_tipo3;
+ waddstr(padre, "Registro fijo con bloque parametrizado.");
+ }
+
+ indices = emufs_idx_get(fp, &indices_total);
+
+ indices_actual = 0;
+ if (indices) {
+ fprintf(stderr, "LEO REGISTRO %lu\n", indices[indices_actual]);
+ data = (char *)fp->leer_registro_raw(fp, indices[indices_actual], &size, &pos_actual);
+ fprintf(stderr, "Data leida %p (%s)\n",data, data);
+ data = procesar(fp, data, &size, &pos_actual, &ancho_registro);
+ fprintf(stderr, "Tamanio = %lu\n", size);
+ }
+
+
+ offset_alto = 8;
+ max_scroll = size / (w-4) - (h-offset_alto-2);
+ if (max_scroll < 0) max_scroll = 0;
+
+ actual[0] = derwin(padre, h-offset_alto, w-2, 1, 1);
+ actual_ancho = w-4;
+ actual[1] = derwin(actual[0], h-offset_alto-2, w-4, 1, 1);
+ box(actual[0], 0, 0);
+
+ curs_set(0);
+
+ mostrar_info(padre, h, offset_alto);