1 /* Manejo de Formularios con CURSES */
10 /** Tipos de Widgets válidos */
11 typedef enum {INPUT, RADIO} t_Campo;
13 /** Tipo de dato Widget */
14 typedef struct _elem_ {
21 * El dato puede ser simple o múltiple, dependiendo
22 * si se opta por referencias valor u opciones.
24 * Consulte la documentación de union de ANSI-C para
31 /** Elemento actual (si se utiliza valores múltiples */
33 /** Máximo de elementos
35 * El uso varía según el Widget :
36 * INPUT : Cantidad máxima de caracteres.
37 * RADIO : Cantidad de Opciones
40 /** Formato del campo de entrada */
42 /** Siguiente elemento */
48 int (*ejecutar)(WINDOW *win, int x, int y, struct _elem_ *w);
49 void (*destruir)(struct _elem_ *);
52 typedef struct _form_ {
53 t_Widget *primero, *ultimo; /* puntero a widgets */
57 /** Inicializa un formulario
59 * \param win Ventana a la que pertenece
61 t_Form *form_crear(WINDOW *win);
63 /** Libera un formulario */
64 int form_destruir(t_Form *);
66 /** Agrega un nuevo campo
68 * Significado de <em>max</em> según tipo:
69 * INPUT : Cantidad máxima de caracteres de la entrada.
70 * RADIO : Cantidad de opciones
72 * Significado de <em>defecto</em> según tipo
74 * RADIO : Texto separado por comas (',') de las opciones disponibles.
77 * \param tipo Tipo de campo a agregar [INPUT|RADIO].
78 * \param nombre Nombre del campo. Es también utilizado como etiqueta.
79 * \param max Su uso depende del campo tipo.
80 * \param defecto Su uso depende del campo tipo.
82 void form_agregar_widget(t_Form *f, t_Campo tipo, const char *nombre, unsigned int max, const char *defecto);
84 /** Ejecuta una entrada del formulario
86 * Esta función va recorriendo uno por uno los campos del formulario
87 * y dependiendo del tipo ejecutando su acción asociada.
89 * Cuando se ha pasado por todos los campos el formulario retorna el control.
91 * \param f Formulario.
92 * \param x Coordenada X de inicio del formulario.
93 * \param y Coordenada Y de inicio del formulario.
95 void form_ejecutar(t_Form *f, int x, int y);
97 /** Establece si un Widget puede ser modificado
99 * \param f Formulario.
100 * \param widget Nombre del Widget.
101 * \param b Valor booleano
103 void form_es_modificable(t_Form *f, const char *widget, int b);
105 /** Setea el valor de un widget
107 * Para campos de texto solamente!.
109 * Pone en el campo valor el texto pasado por parametro.
111 * \param f Formulario.
112 * \param widget Nombre del widget.
113 * \param s Texto a poner.
115 void form_set_valor(t_Form *f, const char *widget, const char *s);
117 /** Obtiene el valor asociado a un campo como char *
119 * \param f Formulario.
120 * \param widget Nombre del campo.
121 * \return "" Si no se encontro nada.
123 char *form_obtener_valor_char(t_Form *f, const char *widget);
125 /** Obtiene el valor asociado a un campo como int
127 int form_obtener_valor_int(t_Form *f, const char *widget);
129 /** Obtiene el valor asociado a un campo como float
131 float form_obtener_valor_float(t_Form *f, const char *widget);