int art_liberar(t_LstArticulos *l)
{
+ t_Reg_Articulo *del;
if (l == NULL) l = lst_articulos;
if (l == NULL) return 1;
- t_Reg_Articulo *del;
emufs_destruir(l->fp);
while (l->primero) {
int fact_liberar(t_LstFacturas *l)
{
+ t_Reg_Factura *del;
if (l == NULL) l = lst_facturas;
if (l == NULL) return 1;
emufs_destruir(l->fp);
+ while (l->primero) {
+ del = l->primero;
+ l->primero = l->primero->sig;
+ free(del);
+ }
free(l);
lst_facturas = NULL;
} t_Item;
typedef struct _facturas_ {
- /* Dejo los campos numericos al principio para mayor facilidad
- * de parseo.
- */
+ /* Dejo los campos numericos al principio para mayor facilidad de parseo. */
int numero;
float procdoi;
int numero_remito;
EMUFS *fp; /* Filepointer al archivo donde estan los datos */
EMUFS *fp_texto; /* Filepointer al archivo donde estan los textos */
} t_LstFacturas;
-
+
+
+/** Crea la lista de facturas desde un archivo nuevo o existente
+ *
+ * \param filename Si es NULL trata de abrir un archivo existente, si no cargar el XML pasado
+ */
t_LstFacturas *fact_cargar(const char *filename, int tipo, int tam_bloque);
+
+/** Elimina toda la memoria utilizada por las facturas */
int fact_liberar(t_LstFacturas *l);
+/** Agregar una factura */
void fact_agregar(char *s);
+
+/** Modificar una factura */
void fact_modificar(char *s);
+
+/** Eliminar una factura */
void fact_eliminar(char *s);
+/** Obtiene la list de facturas */
t_LstFacturas *fact_get_lst();
#endif
/** Libera un formulario */
int form_destruir(t_Form *);
+
/** Agrega un nuevo campo
*
* Significado de <em>max</em> según tipo:
*/
void form_es_modificable(t_Form *f, const char *widget, int b);
+/** Setea el valor de un widget
+ *
+ * Para campos de texto solamente!.
+ *
+ * Pone en el campo valor el texto pasado por parametro.
+ *
+ * \param f Formulario.
+ * \param widget Nombre del widget.
+ * \param s Texto a poner.
+ */
void form_set_valor(t_Form *f, const char *widget, const char *s);
/** Obtiene el valor asociado a un campo como char *
#ifndef _GUI_H_
#define _GUI_H_
-/* cuadro de msg. w y h son de la ventana padre */
+/** Crea un cuadro de mensaje
+ *
+ * Se puede utilizar para dar avisos o dejar un mensaje mientras
+ * se va a procesar un tarea larga, por ejemplo :
+ * \code
+ * WINDOW *w = msg_box(padre, 10, 10, "Se van a eliminar %d elementos. Aguarde", n);
+ * do_delete();
+ * msg_box_free(w);
+ * \endcode
+ *
+ * \param win Ventana padre
+ * \param w Ancho de la ventana padre
+ * \param h Alto de la ventana padre
+ * \param format Formato compatible con printf
+ * \return Una ventana creada.
+ */
WINDOW *msg_box(WINDOW *win, int w, int h, const char *format, ...);
+
+/** Libera un dialogo creado */
void msg_box_free(WINDOW *padre, WINDOW *win);
#endif
#include <menu.h>
#include <string.h>
+/** Estructura de Menu
+ *
+ * Para crear un menu puede utilizar las macros que se dan, de la siguiente forma :
+ * \code
+ * MENU(mi_menu) {
+ * MENU_OPCION("Valor 1", "Descripcion 1"),
+ * MENU_OPCION("Valor 2", "Descripcion 2"),
+ * MENU_OPCION("Valor 3", "Descripcion 3"),
+ * MENU_OPCION("Valor 4", "Descripcion 4")
+ * };
+ * \endcode
+ * Tenga en cuenta que la última opción no debe llevar una coma
+ * al final de la expresión.
+ */
typedef struct _menu_o_t_ {
char *opt;
char *desc;
#define MENU_OPCION(a,b) {a, b}
+/** Ejecuta un menu en pantalla
+ *
+ * \param menu Menú a mostrar
+ * \param cant Cantidad de opciones del menu
+ * \param title Título a mostrar
+ * \return valor de 0 a (n-1) de la opción seleccionada
+ */
int menu_ejecutar(t_Menu menu[], int cant, char *title);
#endif
#include "emufs.h"
+/** Permite ver en pantalla los registros fisicos
+ *
+ *
+ * Permite ver los registros en su contexto actual (bloques
+ * u otros registros), resaltando el registro actual.
+ *
+ * Tambien permite realizar altas, bajas, modificaciones, etc.
+ *
+ * \param padre Ventana sobre la cual dibujar
+ * \param w Ancho de la ventana padre
+ * \param h Alto de la ventana padre
+ * \param cual Que archivo a ver (0==articulos, 1==facturas, 2==notas)
+ */
void ver_registros(WINDOW *padre, int w, int h, int cual);
+
+/** Permite ver en pantalla los registros fisicos
+ *
+ * \param padre Ventana sobre la cual dibujar
+ * \param w Ancho de la ventana padre
+ * \param h Alto de la ventana padre
+ * \param cual Que archivo a ver (0==articulos, 1==facturas, 2==notas)
+ */
void ver_bloques(WINDOW *padre, int w, int h, int cual);
#endif