]> git.llucax.com Git - z.facultad/75.06/emufs.git/blob - gui/gui.c
0e8d344c0ac2327878e5257fb4e230a7444808e6
[z.facultad/75.06/emufs.git] / gui / gui.c
1
2 #include <stdlib.h>
3 #include <curses.h>
4 #include <signal.h>
5 #include <panel.h>
6 #include <string.h>
7
8 #include "form.h"
9 #include "articulos.h"
10
11 static void finish(int sig);
12
13 void editar_articulo(WINDOW *win, t_Articulo *articulo);
14
15 int main(int argc, char *argv[])
16 {
17         /* initialize your non-curses data structures here */
18         WINDOW *mainwin;
19         t_Form *form;
20         t_LstArticulos *articulos;
21         t_Articulo *art;
22
23         if (argc != 2) {
24                 printf("Modo de uso : %s archivo_de_articulos.xml\n", argv[0]);
25                 return 1;
26         }
27
28         articulos = art_cargar(argv[1]);
29
30         /* Inicio Curses */
31         signal(SIGINT, finish);      /* arrange interrupts to terminate */
32         mainwin = initscr();      /* initialize the curses library */
33         
34         /* Verifico un tamaño minimo de consola */
35         if ((LINES < 25) || (COLS < 80)) {
36                 delwin(mainwin);
37                 endwin();
38                 printf("El tamaño de la consola debe ser de por lo menos 80x25!\n");
39                 return 1;
40         }
41
42         keypad(stdscr, TRUE);  /* enable keyboard mapping */
43         nonl();         /* tell curses not to do NL->CR/NL on output */
44         cbreak();       /* take input chars one at a time, no wait for \n */
45         noecho();       /* don't echo input */
46
47         /* Si se soporta color, los inicializo */
48         if (has_colors()) {
49                 start_color();
50                 /* Simple color assignment, often all we need. */
51                 init_pair(COLOR_BLACK, COLOR_BLACK, COLOR_BLACK);
52                 init_pair(COLOR_GREEN, COLOR_GREEN, COLOR_BLACK);
53                 init_pair(COLOR_RED, COLOR_RED, COLOR_BLACK);
54                 init_pair(COLOR_CYAN, COLOR_CYAN, COLOR_BLACK);
55                 init_pair(COLOR_WHITE, COLOR_WHITE, COLOR_BLACK);
56                 init_pair(COLOR_MAGENTA, COLOR_MAGENTA, COLOR_BLACK);
57                 init_pair(COLOR_BLUE, COLOR_BLUE, COLOR_BLACK);
58                 init_pair(COLOR_YELLOW, COLOR_YELLOW, COLOR_BLACK);
59         }
60
61         /* Ventana, caracter para linea vertical, caracter para linea horizontal*/
62         box(mainwin, ACS_VLINE, ACS_HLINE);
63         /* Ventana, Y, X, Texto */
64         mvwaddstr(mainwin, 2, 10, "Ejemplo de Formulario");     
65
66         /* Creo el formulario */
67         form = form_crear(mainwin);
68         form_agregar_widget(form, INPUT, "Numero de Articulo", 8, "");
69
70         form_ejecutar(form, 10, 10);
71         
72         art = art_obtener(articulos, form_obtener_valor(form, "Numero de Articulo"));
73         
74         if (art != NULL) {
75                 editar_articulo(mainwin, art);
76         }
77         /* Libero el formulario */
78
79         delwin(mainwin);
80         endwin();
81
82         form_destruir(form);
83         art_liberar(articulos);
84         
85         MD_Listar();
86         return 0;
87 }
88
89 void editar_articulo(WINDOW *win, t_Articulo *articulo)
90 {
91         t_Form *form;
92         form = form_crear(win);
93         form_agregar_widget(form, INPUT, "Numero de Artículo", 8, articulo->numero);
94         form_agregar_widget(form, INPUT, "Descripción", 50, articulo->desc);
95         form_agregar_widget(form, INPUT, "Presentación", 30, articulo->presentacion);
96         form_agregar_widget(form, INPUT, "Stock Actual", 8, articulo->existencia);
97         form_agregar_widget(form, INPUT, "PVU", 30, articulo->pvu);
98         form_agregar_widget(form, INPUT, "Stock Mínimo", 8, articulo->emin);
99
100         form_ejecutar(form, 10, 10);
101
102         form_destruir(form);
103 }
104
105 static void finish(int sig)
106 {
107         endwin();
108
109         /* do your non-curses wrapup here */
110         exit(0);
111 }
112