11 static void finish(int sig);
13 typedef struct _my_menu_ {
19 void editar_articulo(WINDOW *win, t_Articulo *articulo);
21 MyMENU *build_mymenu(WINDOW *win);
22 void free_mymenu(MyMENU *);
24 int main(int argc, char *argv[])
26 /* initialize your non-curses data structures here */
33 printf("Modo de uso : %s archivo_de_articulos.xml\n", argv[0]);
38 signal(SIGINT, finish); /* arrange interrupts to terminate */
39 mainwin = initscr(); /* initialize the curses library */
40 menu = build_mymenu(mainwin);
42 /* Verifico un tamaño minimo de consola */
43 if ((LINES < 25) || (COLS < 80)) {
46 printf("El tamaño de la consola debe ser de por lo menos 80x25!\n");
50 keypad(stdscr, TRUE); /* enable keyboard mapping */
51 nonl(); /* tell curses not to do NL->CR/NL on output */
52 cbreak(); /* take input chars one at a time, no wait for \n */
53 noecho(); /* don't echo input */
55 /* Si se soporta color, los inicializo */
58 /* Simple color assignment, often all we need. */
59 init_pair(COLOR_BLACK, COLOR_BLACK, COLOR_BLACK);
60 init_pair(COLOR_GREEN, COLOR_GREEN, COLOR_BLACK);
61 init_pair(COLOR_RED, COLOR_RED, COLOR_BLACK);
62 init_pair(COLOR_CYAN, COLOR_CYAN, COLOR_BLACK);
63 init_pair(COLOR_WHITE, COLOR_WHITE, COLOR_BLACK);
64 init_pair(COLOR_MAGENTA, COLOR_MAGENTA, COLOR_BLACK);
65 init_pair(COLOR_BLUE, COLOR_BLUE, COLOR_BLACK);
66 init_pair(COLOR_YELLOW, COLOR_YELLOW, COLOR_BLACK);
69 /* Ventana, caracter para linea vertical, caracter para linea horizontal*/
70 box(mainwin, ACS_VLINE, ACS_HLINE);
71 /* Ventana, Y, X, Texto */
72 mvwaddstr(mainwin, 1, 1, "EMUFS");
73 attron(COLOR_PAIR(2));
74 mvwaddstr(mainwin, LINES-2, 1, "Presiones <F1> para salir");
75 attroff(COLOR_PAIR(2));
78 post_menu(menu->menu);
82 while((c = getch()) != KEY_F(1)) {
85 menu_driver(menu->menu, REQ_DOWN_ITEM);
88 menu_driver(menu->menu, REQ_UP_ITEM);
94 cur = current_item(my_menu);
95 p = item_userptr(cur);
96 p((char *)item_name(cur));
97 pos_menu_cursor(my_menu);
103 unpost_menu(menu->menu);
112 MyMENU *build_mymenu(WINDOW *win)
115 MyMENU *tmp = (MyMENU *)malloc(sizeof(MyMENU));
116 if (tmp == NULL) return NULL;
118 tmp->items[0] = new_item("Artículos", "Alta,baja,consulta y modificación de artículos.");
119 tmp->items[1] = new_item("Facturas", "Alta,baja,consulta y modificación de facturas.");
120 tmp->items[2] = new_item("Ver Registros", "Ver registros de un archivo.");
121 tmp->items[3] = new_item("Ver Bloques", "Ver bloques de un archivo.");
122 tmp->items[4] = NULL;
124 tmp->menu = new_menu(tmp->items);
126 tmp->win = menu_win = derwin(win, 8, 68, 3, 1);
127 keypad(menu_win, TRUE);
128 set_menu_mark(tmp->menu, " > ");
129 set_menu_win(tmp->menu, menu_win);
130 set_menu_sub(tmp->menu, derwin(menu_win, 8, 68, 3, 1));
133 mvwaddch(menu_win, 2, 0, ACS_LTEE);
134 mvwhline(menu_win, 2, 1, ACS_HLINE, 68);
135 mvwaddch(menu_win, 2, 68, ACS_RTEE);
139 void free_mymenu(MyMENU *menu)
142 free_item(menu->items[0]);
143 free_item(menu->items[1]);
144 free_item(menu->items[2]);
145 free_item(menu->items[3]);
146 free_menu(menu->menu);
150 void editar_articulo(WINDOW *win, t_Articulo *articulo)
153 form = form_crear(win);
154 form_agregar_widget(form, INPUT, "Numero de Artículo", 8, articulo->numero);
155 form_agregar_widget(form, INPUT, "Descripción", 50, articulo->desc);
156 form_agregar_widget(form, INPUT, "Presentación", 30, articulo->presentacion);
157 form_agregar_widget(form, INPUT, "Stock Actual", 8, articulo->existencia);
158 form_agregar_widget(form, INPUT, "PVU", 30, articulo->pvu);
159 form_agregar_widget(form, INPUT, "Stock Mínimo", 8, articulo->emin);
161 form_ejecutar(form, 10, 10);
166 static void finish(int sig)
170 /* do your non-curses wrapup here */