+void menu_articulos()
+{
+ WINDOW *menu_win;
+ MENU *menu;
+ ITEM **items;
+ int c, salir;
+ char *opciones[] = {
+ "Alta",
+ "Baja",
+ "Modificacion",
+ "Volver"
+ };
+
+ items = (ITEM **)calloc(5, sizeof(ITEM *));
+
+ items[0] = new_item(opciones[0], "Crear un nuevo articulo.");
+ //set_item_userptr(items[0], art_agregar);
+ items[1] = new_item(opciones[1], "Eliminar un articulo existente.");
+ //set_item_userptr(items[0], art_eliminar);
+ items[2] = new_item(opciones[2], "Modificar un articulo existente.");
+ set_item_userptr(items[2], art_modificar);
+ items[3] = new_item(opciones[3], "Volver al menu anterior.");
+ items[4] = NULL;
+
+ menu = new_menu((ITEM **)items);
+ menu_win = newwin(8, 68, 3, 1);
+ keypad(menu_win, TRUE);
+ set_menu_mark(menu, " > ");
+ set_menu_win(menu, menu_win);
+ set_menu_sub(menu, derwin(menu_win, 5, 66, 3, 1));
+
+ box(menu_win, 0, 0);
+ mvwaddch(menu_win, 2, 0, ACS_LTEE);
+ mvwhline(menu_win, 2, 1, ACS_HLINE, 67);
+ mvwaddch(menu_win, 2, 67, ACS_RTEE);
+ mvwaddstr(menu_win, 1, 1, "Menu Articulos");
+ post_menu(menu);
+ wrefresh(menu_win);
+
+ curs_set(0);
+ salir = 0;
+ while((!salir) && (c = getch()) != KEY_F(1)) {
+ switch(c) {
+ case KEY_DOWN:
+ menu_driver(menu, REQ_DOWN_ITEM);
+ break;
+ case KEY_UP:
+ menu_driver(menu, REQ_UP_ITEM);
+ break;
+ case 13:
+ case 10: {
+ ITEM *cur;
+ void (*p)(char *);
+
+ cur = current_item(menu);
+ if (strcmp(item_name(cur), opciones[3]) == 0) {
+ salir = 1;
+ } else {
+ p = item_userptr(cur);
+ unpost_menu(menu);
+ refresh();
+ p((char *)item_name(cur));
+ post_menu(menu);
+ box(menu_win,0,0);
+ mvwaddch(menu_win, 2, 0, ACS_LTEE);
+ mvwhline(menu_win, 2, 1, ACS_HLINE, 67);
+ mvwaddch(menu_win, 2, 67, ACS_RTEE);
+ wrefresh(menu_win);
+ }
+ pos_menu_cursor(menu);
+ }
+ }
+ wrefresh(menu_win);
+ }
+ curs_set(1);
+
+ unpost_menu(menu);
+ delwin(menu_win);
+ free_item(items[0]);
+ free_item(items[1]);
+ free_item(items[2]);
+ free_item(items[3]);
+ free_menu(menu);
+}
+
+int main_menu()
+{
+ WINDOW *menu_win;
+ MENU *menu;
+ ITEM **items;
+ int c, salir, opcion;
+ char *opciones[] = {
+ "Articulos",
+ "Facturas",
+ "Ver Registros",
+ "Ver Bloques"
+ };
+
+ items = (ITEM **)calloc(5, sizeof(ITEM *));
+
+ items[0] = new_item(opciones[0], "Alta,baja,consulta y modificacion de articulos.");
+ items[1] = new_item(opciones[1], "Alta,baja,consulta y modificacion de facturas.");
+ items[2] = new_item(opciones[2], "Ver registros de un archivo.");
+ items[3] = new_item(opciones[3], "Ver bloques de un archivo.");
+ items[4] = NULL;
+
+ menu = new_menu((ITEM **)items);
+ menu_win = newwin(8, 68, 3, 1);
+ keypad(menu_win, TRUE);
+ set_menu_mark(menu, " > ");
+ set_menu_win(menu, menu_win);
+ set_menu_sub(menu, derwin(menu_win, 5, 66, 3, 1));
+
+ box(menu_win, 0, 0);
+ mvwaddch(menu_win, 2, 0, ACS_LTEE);
+ mvwhline(menu_win, 2, 1, ACS_HLINE, 67);
+ mvwaddch(menu_win, 2, 67, ACS_RTEE);
+ mvwaddstr(menu_win, 1, 1, "Menu Principal");
+ post_menu(menu);
+ wrefresh(menu_win);
+
+ curs_set(0);
+ opcion = -1;
+ salir = 0;
+ while((!salir) && (c = getch()) != KEY_F(1)) {
+ switch(c) {
+ case KEY_DOWN:
+ menu_driver(menu, REQ_DOWN_ITEM);
+ break;
+ case KEY_UP:
+ menu_driver(menu, REQ_UP_ITEM);
+ break;
+ case 13:
+ case 10: {
+ ITEM *cur;
+ int i;
+
+ cur = current_item(menu);
+ for(i=0; i<4; ++i) {
+ if (strcmp(item_name(cur), opciones[i]) == 0)
+ opcion = i;
+ }
+ pos_menu_cursor(menu);
+ salir = 1;
+ }
+ }
+ wrefresh(menu_win);
+ }
+ curs_set(1);
+
+ unpost_menu(menu);
+ delwin(menu_win);
+ free_item(items[0]);
+ free_item(items[1]);
+ free_item(items[2]);
+ free_item(items[3]);
+ free_menu(menu);
+
+ return opcion;
+}