#define ED_BUTTON_EXIT_XSIZE 90
#define ED_BUTTON_EXIT_YSIZE 20
+#define ED_BUTTON_COUNT_YPOS 60
+#define ED_BUTTON_COUNT_XSIZE 20
+#define ED_BUTTON_COUNT_YSIZE 20
#define ED_BUTTON_MINUS_XPOS 2
-#define ED_BUTTON_MINUS_YPOS 60
-#define ED_BUTTON_MINUS_XSIZE 20
-#define ED_BUTTON_MINUS_YSIZE 20
+#define ED_BUTTON_MINUS_YPOS ED_BUTTON_COUNT_YPOS
+#define ED_BUTTON_MINUS_XSIZE ED_BUTTON_COUNT_XSIZE
+#define ED_BUTTON_MINUS_YSIZE ED_BUTTON_COUNT_YSIZE
#define ED_WIN_COUNT_XPOS (ED_BUTTON_MINUS_XPOS+ED_BUTTON_MINUS_XSIZE+2)
-#define ED_WIN_COUNT_YPOS ED_BUTTON_MINUS_YPOS
+#define ED_WIN_COUNT_YPOS ED_BUTTON_COUNT_YPOS
#define ED_WIN_COUNT_XSIZE 52
-#define ED_WIN_COUNT_YSIZE ED_BUTTON_MINUS_YSIZE
+#define ED_WIN_COUNT_YSIZE ED_BUTTON_COUNT_YSIZE
#define ED_BUTTON_PLUS_XPOS (ED_WIN_COUNT_XPOS+ED_WIN_COUNT_XSIZE+2)
-#define ED_BUTTON_PLUS_YPOS ED_BUTTON_MINUS_YPOS
-#define ED_BUTTON_PLUS_XSIZE ED_BUTTON_MINUS_XSIZE
-#define ED_BUTTON_PLUS_YSIZE ED_BUTTON_MINUS_YSIZE
+#define ED_BUTTON_PLUS_YPOS ED_BUTTON_COUNT_YPOS
+#define ED_BUTTON_PLUS_XSIZE ED_BUTTON_COUNT_XSIZE
+#define ED_BUTTON_PLUS_YSIZE ED_BUTTON_COUNT_YSIZE
#define ED_COUNT_GADGET_XPOS 16
#define ED_COUNT_GADGET_YPOS (16+3*MINI_TILEY+64)
/* gadget types */
#define GD_TYPE_NORMAL_BUTTON (1<<0)
-#define GD_TYPE_TWO_STATE_BUTTON (1<<1)
+#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_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
/* gadget creation tags */
#define GDI_END 0
-#define GDI_ID 1
+#define GDI_CUSTOM_ID 1
#define GDI_X 2
#define GDI_Y 3
#define GDI_WIDTH 4
#define GDI_HEIGHT 5
#define GDI_TYPE 6
#define GDI_STATE 7
-#define GDI_ALT_STATE 8
-#define GDI_NUMBER_VALUE 9
-#define GDI_TEXT_VALUE 10
-#define GDI_DESIGN_UNPRESSED 11
-#define GDI_DESIGN_PRESSED 12
-#define GDI_ALT_DESIGN_UNPRESSED 13
-#define GDI_ALT_DESIGN_PRESSED 14
-#define GDI_EVENT_MASK 15
-#define GDI_EVENT 16
-#define GDI_CALLBACK 17
+#define GDI_RADIO_NR 8
+#define GDI_RADIO_PRESSED 9
+#define GDI_NUMBER_VALUE 10
+#define GDI_NUMBER_MIN 11
+#define GDI_NUMBER_MAX 12
+#define GDI_TEXT_VALUE 13
+#define GDI_TEXT_SIZE 14
+#define GDI_TEXT_BORDER 15
+#define GDI_DESIGN_UNPRESSED 16
+#define GDI_DESIGN_PRESSED 17
+#define GDI_ALT_DESIGN_UNPRESSED 18
+#define GDI_ALT_DESIGN_PRESSED 19
+#define GDI_EVENT_MASK 20
+#define GDI_EVENT 21
+#define GDI_CALLBACK 22
+#define GDI_AREA_SIZE 23
+#define GDI_ITEM_SIZE 24
typedef void (*gadget_callback_function)(void *);
{
unsigned long type; /* event type */
int button; /* button number for button events */
+ int x, y; /* gadget position at event time */
+ boolean off_borders; /* mouse pointer outside gadget? */
+};
+
+struct GadgetDrawingArea
+{
+ int area_xsize, area_ysize; /* size of drawing area (in items) */
+ int item_xsize, item_ysize; /* size of each item in drawing area */
};
struct GadgetInfo
{
- int id; /* gadget identifier */
+ int id; /* internal gadget identifier */
+ int custom_id; /* custom gadget identifier */
int x, y; /* gadget position */
int width, height; /* gadget size */
unsigned long type; /* type (button, text input, ...) */
unsigned long state; /* state (pressed, released, ...) */
- boolean alt_state; /* alternative state */
+ 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 */
+ int text_border; /* border size of text input gadget */
struct GadgetDesign design[2]; /* 0: normal; 1: pressed */
struct GadgetDesign alt_design[2]; /* alternative design */
unsigned long event_mask; /* possible events for this gadget */
struct GadgetEvent event; /* actual gadget event */
gadget_callback_function callback;
+ struct GadgetDrawingArea drawing; /* fields for drawing area gadget */
struct GadgetInfo *next; /* next list entry */
};
struct GadgetInfo *CreateGadget(int, ...);
void FreeGadget(struct GadgetInfo *);
+void ClickOnGadget(struct GadgetInfo *);
+
void MapGadget(struct GadgetInfo *);
void UnmapGadget(struct GadgetInfo *);
void HandleGadgets(int, int, int);
+void HandleGadgetsKeyInput(KeySym);
#endif