X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/blobdiff_plain/d381699312637624c1fa51dfdf0f2184636e498c..afae487b5828cdb06702759dad8354c889723bea:/emufs_gui/emufs_view.c?ds=sidebyside diff --git a/emufs_gui/emufs_view.c b/emufs_gui/emufs_view.c index 571193c..003a6b3 100644 --- a/emufs_gui/emufs_view.c +++ b/emufs_gui/emufs_view.c @@ -57,6 +57,90 @@ void print_help(char *s) printf(" tamaƱo bloque debe ser especificado solo en aquellos tipos que lo requiera.\n"); } +int leer_tipo_arbol(char *s) { + if (strcmp(s, "B") == 0) return 0; + if (strcmp(s, "BA") == 0) return 1; + if (strcmp(s, "BP") == 0) return 2; + + /* Por defecto es un B */ + return 0; +} + +void leer_param_ind_art(t_Parametros *param, xmlNode *padre) +{ + xmlNode *node; + char *tmp, *nombre; + node = padre->children; + while (node) { + if (node->type == XML_ELEMENT_NODE) { + if (strcmp(node->name, "indice")==0) { + PERR(" LEO INDICE"); + nombre = xml_get_prop(node, "nombre"); + + if (strcmp(nombre, "codigo")==0) { + tmp = xml_get_prop(node, "tipo"); + param->ind_art[0].tipo_arbol = leer_tipo_arbol(tmp); + free(tmp); + tmp = xml_get_prop(node, "bloque"); + param->ind_art[0].tam_bloque = atoi(tmp); + free(tmp); + } else if (strcmp(nombre, "desc")==0) { + tmp = xml_get_prop(node, "tipo"); + param->ind_art[1].tipo_arbol = leer_tipo_arbol(tmp); + free(tmp); + tmp = xml_get_prop(node, "bloque"); + param->ind_art[1].tam_bloque = atoi(tmp); + free(tmp); + } else if (strcmp(nombre, "presentacion")==0) { + tmp = xml_get_prop(node, "tipo"); + param->ind_art[2].tipo_arbol = leer_tipo_arbol(tmp); + free(tmp); + tmp = xml_get_prop(node, "bloque"); + param->ind_art[2].tam_bloque = atoi(tmp); + free(tmp); + } + PERR(" LISTO"); + free(nombre); + } + } + node = node->next; + } +} + +void leer_param_ind_fact(t_Parametros *param, xmlNode *padre) +{ + xmlNode *node; + char *tmp, *nombre; + node = padre->children; + while (node) { + if (node->type == XML_ELEMENT_NODE) { + if (strcmp(node->name, "indice")==0) { + PERR(" LEO INDICE"); + nombre = xml_get_prop(node, "nombre"); + + if (strcmp(nombre, "numero")==0) { + tmp = xml_get_prop(node, "tipo"); + param->ind_fac[0].tipo_arbol = leer_tipo_arbol(tmp); + free(tmp); + tmp = xml_get_prop(node, "bloque"); + param->ind_fac[0].tam_bloque = atoi(tmp); + free(tmp); + } else if (strcmp(nombre, "emision")==0) { + tmp = xml_get_prop(node, "tipo"); + param->ind_fac[1].tipo_arbol = leer_tipo_arbol(tmp); + free(tmp); + tmp = xml_get_prop(node, "bloque"); + param->ind_fac[1].tam_bloque = atoi(tmp); + free(tmp); + } + PERR(" LISTO"); + free(nombre); + } + } + node = node->next; + } +} + void leer_param_art(t_Parametros *param, xmlNode *padre) { xmlNode *node; @@ -73,6 +157,10 @@ void leer_param_art(t_Parametros *param, xmlNode *padre) tmp = xml_get_prop(node, "bloque"); param->tam_bloque_art = atoi(tmp); free(tmp); + } else if (strcmp(node->name, "indices")==0) { + PERR("LEO INDICES") + leer_param_ind_art(param, node); + PERR("LISTO"); } } node = node->next; @@ -102,6 +190,10 @@ void leer_param_fac(t_Parametros *param, xmlNode *padre) tmp = xml_get_prop(nodo, "bloque"); param->tam_bloque_nota = atoi(tmp); free(tmp); + } else if (strcmp(nodo->name, "indices")==0) { + PERR("LEO INDICES") + leer_param_ind_fact(param, nodo); + PERR("LISTO"); } } nodo = nodo->next; @@ -270,11 +362,12 @@ void menu_articulos() MENU_OPCION("Baja", "Elimina un articulo existente."), MENU_OPCION("Modificacion", "Modifica un articulo existente."), MENU_OPCION("Consultas", "Consulta varias de articulo."), + MENU_OPCION("Recorrer", "Recorrer el archivo por alguno de sus indices."), MENU_OPCION("Volver", "Volver al menu anterior.") }; int opt; - while ((opt = menu_ejecutar(mi_menu, 5, "Menu Articulos")) != 4) { + while ((opt = menu_ejecutar(mi_menu, 6, "Menu Articulos")) != 5) { switch (opt) { case 0: art_agregar(NULL); @@ -287,6 +380,9 @@ void menu_articulos() break; case 3: art_consultas(NULL); + break; + case 4: + art_recorrer(); } } @@ -416,7 +512,7 @@ int main_menu() h = LINES-2; w = COLS-2; win = newwin(h, w, 1, 1); - emufs_indice_b_ver(art_get_lst()->fp->indices, win, w, h, 0); + emufs_indice_b_ver(fact_get_lst()->fp->indices, win, w, h, 0); delwin(win); } }