#ifndef EL__BFU_COMMON_H
#define EL__BFU_COMMON_H

#ifdef __cplusplus
extern "C" {
#endif

struct dialog_data;
struct widget_data;

/* Event handlers return this values */
typedef enum {
	EVENT_PROCESSED	= 0,
	EVENT_NOT_PROCESSED = 1
} widget_handler_status_T;

/* Handler type for widgets. */
typedef widget_handler_status_T (widget_handler_T)(struct dialog_data *, struct widget_data *);

/** Type of widget.
 *
 * Each type has a struct widget_ops that contains pointers to
 * type-specific handler functions.  For example, field_ops.kbd points
 * to a function that handles keyboard events for WIDGET_FIELD.  */
enum widget_type {
	/** A check box or a radio button.
	 * @see checkbox_ops */
	WIDGET_CHECKBOX,

	/** A single-line input field.
	 * @see field_ops */
	WIDGET_FIELD,

	/** A single-line input field for a password.
	 * Like #WIDGET_FIELD but shows asterisks instead of the text.
	 * @see field_pass_ops */
	WIDGET_FIELD_PASS,

	/** A button that the user can push.
	 * @see button_ops */
	WIDGET_BUTTON,

	/** A list or tree of items.
	 * @see listbox_ops */
	WIDGET_LISTBOX,

	/** A block of text that the user cannot edit but may be able
	 * to scroll.
	 * @see text_ops */
	WIDGET_TEXT,
};


#ifdef __cplusplus
}
#endif

#endif /* EL__BFU_COMMON_H */
