1 #ifndef EL__BFU_BUTTON_H
2 #define EL__BFU_BUTTON_H
4 #include "bfu/common.h"
5 #include "util/align.h"
12 typedef void (done_handler_T
)(void *);
14 struct widget_info_button
{
16 int hotkey_pos
; /* -1 means no hotkey, hotkeys are marked by ~. */
17 int textlen
; /* Text length without hotkey */
18 int truetextlen
; /* Original text length (with hotkey if any) */
19 /* Used by some default handlers like ok_dialog()
25 /* Button flags, go into widget.gid */
29 /* Define to find buttons without keyboard accelerator. */
30 /* #define DEBUG_BUTTON_HOTKEY */
33 #ifdef DEBUG_BUTTON_HOTKEY
34 void add_dlg_button_do(const unsigned char *file
, int line
, struct dialog
*dlg
, unsigned char *text
, int flags
, widget_handler_T
*handler
, void *data
, done_handler_T
*done
, void *done_data
);
35 #define add_dlg_ok_button(dlg, text, flags, done, data) \
36 add_dlg_button_do(__FILE__, __LINE__, dlg, text, flags, ok_dialog, NULL, done, data)
38 #define add_dlg_button(dlg, text, flags, handler, data) \
39 add_dlg_button_do(__FILE__, __LINE__, dlg, text, flags, handler, data, NULL, NULL)
42 void add_dlg_button_do(struct dialog
*dlg
, unsigned char *text
, int flags
, widget_handler_T
*handler
, void *data
, done_handler_T
*done
, void *done_data
);
44 #define add_dlg_ok_button(dlg, text, flags, done, data) \
45 add_dlg_button_do(dlg, text, flags, ok_dialog, NULL, done, data)
47 #define add_dlg_button(dlg, text, flags, handler, data) \
48 add_dlg_button_do(dlg, text, flags, handler, data, NULL, NULL)
51 extern const struct widget_ops button_ops
;
52 void dlg_format_buttons(struct terminal
*, struct dialog_data
*, struct widget_data
*, int, int, int *, int, int *, enum format_align
, int);