/* Si se creo wl widget, lo agrego al formulario al final */
if (tmp) {
+ tmp->modificable = 1;
if (f->primero == NULL) {
f->primero = f->ultimo = tmp;
} else {
void form_ejecutar(t_Form *f, int x, int y)
{
- int offset = 0, my_y, salida;
+ int offset = 0, my_y, salida, i;
t_Widget *tmp = f->primero;
my_y = y-1;
mvwaddstr(f->win, my_y, x, tmp->nombre);
waddch(f->win, ':');
waddch(f->win, ' ');
- /* TODO : VER QUE SI ES UNA OPCION ES DISTINTO!! */
- mvwaddstr(f->win, my_y, x+offset, tmp->valor);
+ if (tmp->tipo == INPUT){
+ for(i=0; i<tmp->max; i++)
+ mvwaddch(f->win, my_y, x+offset+i, ' ');
+ mvwaddstr(f->win, my_y, x+offset, tmp->valor);
+ } else {
+ wmove(f->win, my_y, x+offset);
+ for(i=0; i<tmp->max; i++) {
+ waddch(f->win, '(');
+ waddch(f->win, ' ');
+ waddch(f->win, ')');
+ waddstr(f->win, tmp->opciones[i]);
+ waddch(f->win, ' ');
+ }
+ }
tmp = tmp->sig;
}
wrefresh(f->win);
while (tmp) {
++my_y;
wmove(f->win, my_y, x+offset);
- salida = tmp->ejecutar(f->win, x+offset, my_y, tmp);
+ if (tmp->modificable)
+ salida = tmp->ejecutar(f->win, x+offset, my_y, tmp);
wrefresh(f->win);
tmp = tmp->sig;
}
return NULL;
}
tmp->valor[0] = '\0';
- strncpy(tmp->valor, defecto, max);
+ strcpy(tmp->valor, defecto);
tmp->sig = NULL;
c = getch();
}
/* Cierro el string con el \0 */
- w->valor[current+1] = '\0';
-
+ w->valor[current] = '\0';
/* Retorno la tecla con la que se salio. */
/* De esa forma, ESC pasa al campo anterios. ENTER al siguiente */
return c;
return 0;
}
+void form_es_modificable(t_Form *f, const char *widget, int b)
+{
+ /* Busco el widget */
+ t_Widget *tmp = f->primero;
+ while (tmp) {
+ if (strcmp(widget, tmp->nombre) == 0) {
+ tmp->modificable = b;
+ break;
+ }
+ tmp = tmp->sig;
+ }
+}
+
+void form_set_valor(t_Form *f, const char *widget, const char *s)
+{
+ /* Busco el widget */
+ t_Widget *tmp = f->primero;
+ while (tmp) {
+ if (strcmp(widget, tmp->nombre) == 0) {
+ strcpy(tmp->valor, s);
+ break;
+ }
+ tmp = tmp->sig;
+ }
+}
+