#include #include "label.h" #define EVEP_WIDGET_FLAG_RO 0x01 #define EVEP_WIDGET_FLAG_HIDDEN 0x02 #define EVEP_WIDGET_FLAG_BUSY 0x04 struct EVEWidget; typedef uint8_t (*eve_widget_draw_t) (struct EVEWidget *, uint8_t); typedef int (*eve_widget_touch_t) (struct EVEWidget *, EVETouch *, uint16_t); typedef struct EVEWidget { EVERect g; EVEPage *page; eve_widget_draw_t draw; eve_widget_touch_t touch; eve_kbd_input_handler_t putc; EVELabel *label; uint8_t type; uint8_t flags; uint8_t tag0; uint8_t tagN; } EVEWidget; #include "widgets.h" typedef struct EVEWidgetSpec { EVERect g; EVEWidgetSpecT tspec; uint8_t type; uint8_t flags; } EVEWidgetSpec; typedef int (*eve_widget_create_t) (EVEWidget *, EVEWidgetSpec *, EVEPage *); typedef void (*eve_widget_destroy_t) (EVEWidget *); int eve_widget_create(EVEWidget *widget, EVEWidgetSpec *spec, EVEPage *page); void eve_widget_destroy(EVEWidget *widget); void eve_widget_init(EVEWidget *widget, uint8_t type, EVERect *g, EVEPage *page, eve_widget_draw_t draw, eve_widget_touch_t touch, eve_kbd_input_handler_t putc); size_t eve_widget_size(uint8_t type); void eve_widget_set_label(EVEWidget *widget, EVELabel *label); EVEWidget *eve_widget_next(EVEWidget *widget); void eve_widget_set_focus(EVEWidget *widget, EVERect *rect); void eve_widget_set_flags(EVEWidget *widget, uint8_t flags); void eve_widget_clr_flags(EVEWidget *widget, uint8_t flags);