From: Ricardo Markiewicz Date: Wed, 14 Apr 2004 07:44:56 +0000 (+0000) Subject: * Agrego Widgets de solo lectura en los formularios. X-Git-Tag: svn_import_r684~493 X-Git-Url: https://git.llucax.com/z.facultad/75.06/emufs.git/commitdiff_plain/881d70c97e3314ad76b7eabefe22e80137fba0c6 * Agrego Widgets de solo lectura en los formularios. --- diff --git a/emufs/emufs.c b/emufs/emufs.c index a511e50..293d556 100644 --- a/emufs/emufs.c +++ b/emufs/emufs.c @@ -163,7 +163,6 @@ EMUFS *emufs_crear(const char *filename, EMUFS_Tipo tipo, EMUFS_BLOCK_SIZE tam_b 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); @@ -262,7 +261,7 @@ int ver_archivo_FS(EMUFS *emu) 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); diff --git a/emufs_gui/articulos.c b/emufs_gui/articulos.c index 13da37c..f9a00cc 100644 --- a/emufs_gui/articulos.c +++ b/emufs_gui/articulos.c @@ -245,6 +245,7 @@ void art_modificar(char *s) 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); diff --git a/emufs_gui/form.c b/emufs_gui/form.c index d86d4b1..9e5cb57 100644 --- a/emufs_gui/form.c +++ b/emufs_gui/form.c @@ -80,6 +80,7 @@ void form_agregar_widget(t_Form *f, t_Campo tipo, const char *nombre, unsigned i /* 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 { @@ -126,7 +127,8 @@ void form_ejecutar(t_Form *f, int x, int y) 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; } @@ -356,3 +358,16 @@ int form_radio(WINDOW *win, int x, int y, t_Widget *w) 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; + } +} + diff --git a/emufs_gui/form.h b/emufs_gui/form.h index be9da37..3b5bd57 100644 --- a/emufs_gui/form.h +++ b/emufs_gui/form.h @@ -42,6 +42,8 @@ typedef struct _elem_ { /** Siguiente elemento */ struct _elem_ *sig; + int modificable; + /* Métodos */ int (*ejecutar)(WINDOW *win, int x, int y, struct _elem_ *w); void (*destruir)(struct _elem_ *); @@ -91,6 +93,14 @@ void form_agregar_widget(t_Form *f, t_Campo tipo, const char *nombre, unsigned i */ 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.