#include <stdlib.h>
-#include <curses.h>
+#include <menu.h>
#include <signal.h>
#include <panel.h>
#include <string.h>
#include "form.h"
+#include "articulos.h"
static void finish(int sig);
-
-/** Simula un TextField
- *
- * \param win Ventana
- * \param x Posicion en X
- * \param y Posicion en Y
- * \param w Cantidad maxima de caracteres.
- * \param s Destino donde guardar
- */
+
+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;
+ MyMENU *menu;
+
+ 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)) {
+ delwin(mainwin);
+ endwin();
+ printf("El tamaño de la consola debe ser de por lo menos 80x25!\n");
+ return 1;
+ }
+
keypad(stdscr, TRUE); /* enable keyboard mapping */
nonl(); /* tell curses not to do NL->CR/NL on output */
cbreak(); /* take input chars one at a time, no wait for \n */
noecho(); /* don't echo input */
+ /* Si se soporta color, los inicializo */
if (has_colors()) {
start_color();
/* Simple color assignment, often all we need. */
/* 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);
+
+ post_menu(menu->menu);
+ wrefresh(menu->win);
+
+ 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();
- /* Creo el formulario */
- form = form_crear(mainwin);
- form_agregar_widget(form, INPUT, "Nombre", 15, "");
- form_agregar_widget(form, RADIO, "Voto", 2, "Si,No");
- form_agregar_widget(form, INPUT, "Datos", 30, "");
+ MD_Listar();
+ return 0;
+}
- form_ejecutar(form, 10, 10);
+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;
- 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);
+ tmp->menu = new_menu(tmp->items);
- MD_Listar();
- return 0;
+ 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();
/* do your non-curses wrapup here */
-
exit(0);
}