1
0
mirror of https://github.com/rkd77/elinks.git synced 2024-06-30 01:55:30 +00:00
elinks/src/bfu/button.h

54 lines
1.8 KiB
C
Raw Normal View History

#ifndef EL__BFU_BUTTON_H
#define EL__BFU_BUTTON_H
#include "bfu/common.h"
#include "util/align.h"
struct dialog;
struct terminal;
struct widget_data;
typedef void (done_handler_T)(void *);
struct widget_info_button {
int flags;
int hotkey_pos; /* -1 means no hotkey, hotkeys are marked by ~. */
int textlen; /* Text length without hotkey */
int truetextlen; /* Original text length (with hotkey if any) */
/* Used by some default handlers like ok_dialog()
* as a callback. */
done_handler_T *done;
void *done_data;
};
/* Button flags, go into widget.gid */
#define B_ENTER 1
#define B_ESC 2
/* Define to find buttons without keyboard accelerator. */
/* #define DEBUG_BUTTON_HOTKEY */
#ifdef DEBUG_BUTTON_HOTKEY
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);
#define add_dlg_ok_button(dlg, text, flags, done, data) \
add_dlg_button_do(__FILE__, __LINE__, dlg, text, flags, ok_dialog, NULL, done, data)
#define add_dlg_button(dlg, text, flags, handler, data) \
add_dlg_button_do(__FILE__, __LINE__, dlg, text, flags, handler, data, NULL, NULL)
#else
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);
#define add_dlg_ok_button(dlg, text, flags, done, data) \
add_dlg_button_do(dlg, text, flags, ok_dialog, NULL, done, data)
#define add_dlg_button(dlg, text, flags, handler, data) \
add_dlg_button_do(dlg, text, flags, handler, data, NULL, NULL)
#endif
extern const struct widget_ops button_ops;
void dlg_format_buttons(struct terminal *, struct widget_data *, int, int, int *, int, int *, enum format_align, int);
#endif