]> git.llucax.com Git - z.facultad/75.06/emufs.git/blobdiff - gui/gui.c
hice un par de funciones, tendria que empezar a probarlo porque van empezar a saltar...
[z.facultad/75.06/emufs.git] / gui / gui.c
index fec8758f44a6d611b7de53541345abf5696de44d..6a820ac31040daa46b61b18a26bc6c38321d8ce7 100644 (file)
--- a/gui/gui.c
+++ b/gui/gui.c
@@ -1,6 +1,6 @@
 
 #include <stdlib.h>
-#include <curses.h>
+#include <menu.h>
 #include <signal.h>
 #include <panel.h>
 #include <string.h>
@@ -9,19 +9,35 @@
 #include "articulos.h"
 
 static void finish(int sig);
-                               
+
+typedef struct _my_menu_ {
+       MENU *menu;
+       ITEM *items[5];
+       WINDOW *win;
+} MyMENU;
+
+void editar_articulo(WINDOW *win, t_Articulo *articulo);
+
+MyMENU *build_mymenu(WINDOW *win);
+void free_mymenu(MyMENU *);
+
 int main(int argc, char *argv[])
 {
        /* initialize your non-curses data structures here */
+       int c;
        WINDOW *mainwin;
-       t_Form *form;
-       t_LstArticulos *articulos;
+       MyMENU *menu;
 
-       articulos = art_cargar(argv[1]);
+
+       if (argc != 2) {
+               printf("Modo de uso : %s archivo_de_articulos.xml\n", argv[0]);
+               return 1;
+       }
 
        /* Inicio Curses */
        signal(SIGINT, finish);      /* arrange interrupts to terminate */
        mainwin = initscr();      /* initialize the curses library */
+       menu = build_mymenu(mainwin);
        
        /* Verifico un tamaño minimo de consola */
        if ((LINES < 25) || (COLS < 80)) {
@@ -53,33 +69,100 @@ int main(int argc, char *argv[])
        /* Ventana, caracter para linea vertical, caracter para linea horizontal*/
        box(mainwin, ACS_VLINE, ACS_HLINE);
        /* Ventana, Y, X, Texto */
-       mvwaddstr(mainwin, 2, 10, "Ejemplo de Formulario");     
+       mvwaddstr(mainwin, 1, 1, "EMUFS");      
+       attron(COLOR_PAIR(2));
+       mvwaddstr(mainwin, LINES-2, 1, "Presiones <F1> para salir");    
+       attroff(COLOR_PAIR(2));
+       wrefresh(mainwin);
 
-       /* Creo el formulario */
-       form = form_crear(mainwin);
-       form_agregar_widget(form, INPUT, "Nombre", 15, "");
-       form_agregar_widget(form, RADIO, "Voto", 3, "Si,No,No Corresponde");
-       form_agregar_widget(form, INPUT, "Datos", 30, "");
+       post_menu(menu->menu);
+       wrefresh(menu->win);
 
-       form_ejecutar(form, 10, 10);
+       refresh();
+       while((c = getch()) != KEY_F(1)) {
+               switch(c) {
+                       case KEY_DOWN:
+                               menu_driver(menu->menu, REQ_DOWN_ITEM);
+                               break;
+                       case KEY_UP:
+                               menu_driver(menu->menu, REQ_UP_ITEM);
+//                             break;
+//                     case 10: 
+                               /*ITEM *cur;
+                               void (*p)(char *);
 
+                               cur = current_item(my_menu);
+                               p = item_userptr(cur);
+                               p((char *)item_name(cur));
+                               pos_menu_cursor(my_menu);
+                               */
+               }
+               wrefresh(menu->win);
+       }       
+       
+       unpost_menu(menu->menu);
+       free_mymenu(menu);
        delwin(mainwin);
        endwin();
-       
-       /* Imprimo los datos! */
-       printf("Datos Ingresados : \n");
-       printf("\tNombre : %s\n", form_obtener_valor(form, "Nombre"));
-       printf("\tVoto   : %s\n", form_obtener_valor(form, "Voto"));
-       printf("\tDatos  : %s\n", form_obtener_valor(form, "Datos"));
-       
-       /* Libero el formulario */
-       form_destruir(form);
-       art_liberar(articulos);
-       
+
        MD_Listar();
        return 0;
 }
 
+MyMENU *build_mymenu(WINDOW *win)
+{
+       WINDOW *menu_win;
+       MyMENU *tmp = (MyMENU *)malloc(sizeof(MyMENU));
+       if (tmp == NULL) return NULL;
+
+       tmp->items[0] = new_item("Artículos", "Alta,baja,consulta y modificación de artículos.");
+       tmp->items[1] = new_item("Facturas", "Alta,baja,consulta y modificación de facturas.");
+       tmp->items[2] = new_item("Ver Registros", "Ver registros de un archivo.");
+       tmp->items[3] = new_item("Ver Bloques", "Ver bloques de un archivo.");
+       tmp->items[4] = NULL;
+
+       tmp->menu = new_menu(tmp->items);
+       
+       tmp->win = menu_win = derwin(win, 8, 68, 3, 1); 
+       keypad(menu_win, TRUE);
+       set_menu_mark(tmp->menu, " > ");
+       set_menu_win(tmp->menu, menu_win);
+       set_menu_sub(tmp->menu, derwin(menu_win, 8, 68, 3, 1));
+
+       box(menu_win, 0, 0);
+       mvwaddch(menu_win, 2, 0, ACS_LTEE);
+       mvwhline(menu_win, 2, 1, ACS_HLINE, 68);
+       mvwaddch(menu_win, 2, 68, ACS_RTEE);
+       return tmp;
+}
+
+void free_mymenu(MyMENU *menu)
+{
+       delwin(menu->win);
+       free_item(menu->items[0]);
+       free_item(menu->items[1]);
+       free_item(menu->items[2]);
+       free_item(menu->items[3]);
+       free_menu(menu->menu);
+       free(menu);
+}
+
+void editar_articulo(WINDOW *win, t_Articulo *articulo)
+{
+       t_Form *form;
+       form = form_crear(win);
+       form_agregar_widget(form, INPUT, "Numero de Artículo", 8, articulo->numero);
+       form_agregar_widget(form, INPUT, "Descripción", 50, articulo->desc);
+       form_agregar_widget(form, INPUT, "Presentación", 30, articulo->presentacion);
+       form_agregar_widget(form, INPUT, "Stock Actual", 8, articulo->existencia);
+       form_agregar_widget(form, INPUT, "PVU", 30, articulo->pvu);
+       form_agregar_widget(form, INPUT, "Stock Mínimo", 8, articulo->emin);
+
+       form_ejecutar(form, 10, 10);
+
+       form_destruir(form);
+}
+
 static void finish(int sig)
 {
        endwin();