/* gadget types */
-#define GD_TYPE_NORMAL_BUTTON (1<<0)
-#define GD_TYPE_RADIO_BUTTON (1<<1)
-#define GD_TYPE_DRAWING_AREA (1<<2)
-#define GD_TYPE_TEXTINPUT (1<<3)
-#define GD_TYPE_TEXTOUTPUT (1<<4)
-#define GD_TYPE_NUMBERINPUT (1<<5)
-#define GD_TYPE_NUMBEROUTPUT (1<<6)
-#define GD_TYPE_SCROLLBAR_VERTICAL (1<<7)
-#define GD_TYPE_SCROLLBAR_HORIZONTAL (1<<8)
+#define GD_TYPE_NORMAL_BUTTON (1 << 0)
+#define GD_TYPE_RADIO_BUTTON (1 << 1)
+#define GD_TYPE_DRAWING_AREA (1 << 2)
+#define GD_TYPE_TEXTINPUT_ALPHANUMERIC (1 << 3)
+#define GD_TYPE_TEXTINPUT_NUMERIC (1 << 4)
+#define GD_TYPE_SCROLLBAR_VERTICAL (1 << 5)
+#define GD_TYPE_SCROLLBAR_HORIZONTAL (1 << 6)
#define GD_TYPE_BUTTON (GD_TYPE_NORMAL_BUTTON | \
GD_TYPE_RADIO_BUTTON)
#define GD_TYPE_SCROLLBAR (GD_TYPE_SCROLLBAR_VERTICAL | \
GD_TYPE_SCROLLBAR_HORIZONTAL)
+#define GD_TYPE_TEXTINPUT (GD_TYPE_TEXTINPUT_ALPHANUMERIC | \
+ GD_TYPE_TEXTINPUT_NUMERIC)
/* gadget events */
-#define GD_EVENT_PRESSED (1<<0)
-#define GD_EVENT_RELEASED (1<<1)
-#define GD_EVENT_MOVING (1<<2)
-#define GD_EVENT_REPEATED (1<<3)
-#define GD_EVENT_OFF_BORDERS (1<<4)
-#define GD_EVENT_TEXT_RETURN (1<<5)
-#define GD_EVENT_TEXT_LEAVING (1<<6)
+#define GD_EVENT_PRESSED (1 << 0)
+#define GD_EVENT_RELEASED (1 << 1)
+#define GD_EVENT_MOVING (1 << 2)
+#define GD_EVENT_REPEATED (1 << 3)
+#define GD_EVENT_OFF_BORDERS (1 << 4)
+#define GD_EVENT_TEXT_RETURN (1 << 5)
+#define GD_EVENT_TEXT_LEAVING (1 << 6)
/* gadget button states */
#define GD_BUTTON_UNPRESSED 0
#define GDI_DESIGN_BORDER 19
#define GDI_EVENT_MASK 20
#define GDI_EVENT 21
-#define GDI_CALLBACK 22
-#define GDI_AREA_SIZE 23
-#define GDI_ITEM_SIZE 24
-#define GDI_SCROLLBAR_ITEMS_MAX 25
-#define GDI_SCROLLBAR_ITEMS_VISIBLE 26
-#define GDI_SCROLLBAR_ITEM_POSITION 27
+#define GDI_CALLBACK_INFO 22
+#define GDI_CALLBACK_ACTION 23
+#define GDI_AREA_SIZE 24
+#define GDI_ITEM_SIZE 25
+#define GDI_SCROLLBAR_ITEMS_MAX 26
+#define GDI_SCROLLBAR_ITEMS_VISIBLE 27
+#define GDI_SCROLLBAR_ITEM_POSITION 28
+#define GDI_DESCRIPTION_TEXT 29
-typedef void (*gadget_callback_function)(void *);
+typedef void (*gadget_function)(void *);
struct GadgetDesign
{
int item_xsize, item_ysize; /* size of each item in drawing area */
};
+struct GadgetTextInput
+{
+ char value[MAX_GADGET_TEXTSIZE]; /* text string in input field */
+ int number_value; /* integer value, if numeric */
+ int number_min; /* minimal allowed numeric value */
+ int number_max; /* maximal allowed numeric value */
+ int size; /* maximal size of input text */
+ int cursor_position; /* actual cursor position */
+};
+
struct GadgetScrollbar
{
int items_max; /* number of items to access */
{
int id; /* internal gadget identifier */
int custom_id; /* custom gadget identifier */
+ char *description_text; /* short text describing gadget */
int x, y; /* gadget position */
int width, height; /* gadget size */
unsigned long type; /* type (button, text input, ...) */
int radio_nr; /* number of radio button series */
boolean radio_pressed; /* radio button state */
boolean mapped; /* gadget is active */
- long number_value;
- char text_value[MAX_GADGET_TEXTSIZE];
- int text_size; /* maximal size of input text */
struct GadgetDesign design[2]; /* 0: normal; 1: pressed */
struct GadgetDesign alt_design[2]; /* alternative design */
int design_border; /* border size of gadget decoration */
unsigned long event_mask; /* possible events for this gadget */
struct GadgetEvent event; /* actual gadget event */
- gadget_callback_function callback;
+ gadget_function callback_info; /* function for pop-up info text */
+ gadget_function callback_action; /* function for gadget action */
struct GadgetDrawingArea drawing; /* fields for drawing area gadget */
+ struct GadgetTextInput text; /* fields for text input gadget */
struct GadgetScrollbar scrollbar; /* fields for scrollbar gadget */
struct GadgetInfo *next; /* next list entry */
};
void ClickOnGadget(struct GadgetInfo *);
void AdjustScrollbar(struct GadgetInfo *, int, int);
+void ModifyTextInputTextValue(struct GadgetInfo *, char *);
+void ModifyTextInputNumberValue(struct GadgetInfo *, int);
void MapGadget(struct GadgetInfo *);
void UnmapGadget(struct GadgetInfo *);