diff options
Diffstat (limited to 'lib/widget/button.h')
-rw-r--r-- | lib/widget/button.h | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/lib/widget/button.h b/lib/widget/button.h new file mode 100644 index 0000000..5f21e1e --- /dev/null +++ b/lib/widget/button.h @@ -0,0 +1,58 @@ + +/** \file button.h + * \brief Header: WButton widget + */ + +#ifndef MC__WIDGET_BUTTON_H +#define MC__WIDGET_BUTTON_H + +/*** typedefs(not structures) and defined constants **********************************************/ + +#define BUTTON(x) ((WButton *)(x)) + +struct WButton; + +/* button callback */ +/* return 0 to continue work with dialog, non-zero to close */ +typedef int (*bcback_fn) (struct WButton * button, int action); + +/*** enums ***************************************************************************************/ + +typedef enum +{ + HIDDEN_BUTTON = 0, + NARROW_BUTTON = 1, + NORMAL_BUTTON = 2, + DEFPUSH_BUTTON = 3 +} button_flags_t; + +/*** structures declarations (and typedefs of structures)*****************************************/ + +typedef struct WButton +{ + Widget widget; + int action; /* what to do when pressed */ + + button_flags_t flags; /* button flags */ + hotkey_t text; /* text of button, contain hotkey too */ + int hotpos; /* offset hot KEY char in text */ + bcback_fn callback; /* callback function */ +} WButton; + +/*** global variables defined in .c file *********************************************************/ + +/*** declarations of public functions ************************************************************/ + +WButton *button_new (int y, int x, int action, button_flags_t flags, const char *text, + bcback_fn callback); +char *button_get_text (const WButton * b); +void button_set_text (WButton * b, const char *text); +int button_get_len (const WButton * b); + +cb_ret_t button_default_callback (Widget * w, Widget * sender, widget_msg_t msg, int parm, + void *data); +void button_mouse_default_callback (Widget * w, mouse_msg_t msg, mouse_event_t * event); + +/*** inline functions ****************************************************************************/ + +#endif /* MC__WIDGET_BUTTON_H */ |