efs->borrar_registro = emufs_tipo3_borrar_registro;
efs->leer_estadisticas = emufs_tipo3_leer_estadisticas;
efs->modificar_registro = emufs_tipo3_modificar_registro;
- fprintf(stderr, "Crear : %p\n", efs->modificar_registro);
/* Guarda cabeceras propias. */
fwrite(&tam_bloque, sizeof(EMUFS_BLOCK_SIZE), 1, fp);
fwrite(&tam_reg, sizeof(EMUFS_REG_SIZE), 1, fp);
strcat(name_f_block_free,".fsc");
if ( (f_block_free = fopen(name_f_block_free,"r"))==NULL ){
- printf("no pude abrir el archivo %s\n",name_f_block_free);
+ fprintf(stderr, "no pude abrir el archivo %s\n",name_f_block_free);
return -1;
}
fread(®,sizeof(reg),1,f_block_free);
form = form_crear(win);
sprintf(num, "%08d", articulo->numero);
form_agregar_widget(form, INPUT, "Numero de Artículo", 8, num);
+ form_es_modificable(form, "Numero de Artículo" , 0);
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);
/* 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 {
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 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;
+ }
+}
+
/** Siguiente elemento */
struct _elem_ *sig;
+ int modificable;
+
/* Métodos */
int (*ejecutar)(WINDOW *win, int x, int y, struct _elem_ *w);
void (*destruir)(struct _elem_ *);
*/
void form_ejecutar(t_Form *f, int x, int y);
+/** Establece si un Widget puede ser modificado
+ *
+ * \param f Formulario.
+ * \param widget Nombre del Widget.
+ * \param b Valor booleano
+ */
+void form_es_modificable(t_Form *f, const char *widget, int b);
+
/** Obtiene el valor asociado a un campo como char *
*
* \param f Formulario.