/* 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_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_CHECK_BUTTON (1 << 1)
+#define GD_TYPE_RADIO_BUTTON (1 << 2)
+#define GD_TYPE_DRAWING_AREA (1 << 3)
+#define GD_TYPE_TEXTINPUT_ALPHANUMERIC (1 << 4)
+#define GD_TYPE_TEXTINPUT_NUMERIC (1 << 5)
+#define GD_TYPE_SCROLLBAR_VERTICAL (1 << 6)
+#define GD_TYPE_SCROLLBAR_HORIZONTAL (1 << 7)
#define GD_TYPE_BUTTON (GD_TYPE_NORMAL_BUTTON | \
+ GD_TYPE_CHECK_BUTTON | \
GD_TYPE_RADIO_BUTTON)
#define GD_TYPE_SCROLLBAR (GD_TYPE_SCROLLBAR_VERTICAL | \
GD_TYPE_SCROLLBAR_HORIZONTAL)
#define GDI_HEIGHT 5
#define GDI_TYPE 6
#define GDI_STATE 7
-#define GDI_RADIO_NR 8
-#define GDI_RADIO_PRESSED 9
+#define GDI_CHECKED 8
+#define GDI_RADIO_NR 9
#define GDI_NUMBER_VALUE 10
#define GDI_NUMBER_MIN 11
#define GDI_NUMBER_MAX 12
#define GDI_ALT_DESIGN_UNPRESSED 17
#define GDI_ALT_DESIGN_PRESSED 18
#define GDI_DESIGN_BORDER 19
-#define GDI_EVENT_MASK 20
-#define GDI_EVENT 21
-#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_INFO_TEXT 29
+#define GDI_DECORATION_DESIGN 20
+#define GDI_DECORATION_POSITION 22
+#define GDI_DECORATION_SIZE 21
+#define GDI_DECORATION_SHIFTING 23
+#define GDI_EVENT_MASK 24
+#define GDI_EVENT 25
+#define GDI_CALLBACK_INFO 26
+#define GDI_CALLBACK_ACTION 27
+#define GDI_AREA_SIZE 28
+#define GDI_ITEM_SIZE 29
+#define GDI_SCROLLBAR_ITEMS_MAX 30
+#define GDI_SCROLLBAR_ITEMS_VISIBLE 31
+#define GDI_SCROLLBAR_ITEM_POSITION 32
+#define GDI_INFO_TEXT 33
typedef void (*gadget_function)(void *);
int x, y; /* position of rectangle in Pixmap */
};
+struct GadgetDecoration
+{
+ struct GadgetDesign design; /* decoration design structure */
+ int x, y; /* position of deco on the gadget */
+ int width, height; /* width and height of decoration */
+ int xshift, yshift; /* deco shifting when gadget pressed */
+};
+
struct GadgetEvent
{
unsigned long type; /* event type */
int width, height; /* gadget size */
unsigned long type; /* type (button, text input, ...) */
unsigned long state; /* state (pressed, released, ...) */
+ boolean checked; /* check/radio button state */
int radio_nr; /* number of radio button series */
- boolean radio_pressed; /* radio button state */
boolean mapped; /* gadget is active */
struct GadgetDesign design[2]; /* 0: normal; 1: pressed */
struct GadgetDesign alt_design[2]; /* alternative design */
+ struct GadgetDecoration deco; /* decoration on top of gadget */
int design_border; /* border size of gadget decoration */
unsigned long event_mask; /* possible events for this gadget */
struct GadgetEvent event; /* actual gadget event */
struct GadgetInfo *CreateGadget(int, ...);
void FreeGadget(struct GadgetInfo *);
-void ClickOnGadget(struct GadgetInfo *);
-void AdjustScrollbar(struct GadgetInfo *, int, int);
-void ModifyTextInputTextValue(struct GadgetInfo *, char *);
-void ModifyTextInputNumberValue(struct GadgetInfo *, int);
+void ModifyGadget(struct GadgetInfo *, int, ...);
+void RedrawGadget(struct GadgetInfo *);
void MapGadget(struct GadgetInfo *);
void UnmapGadget(struct GadgetInfo *);
+void UnmapAllGadgets();
+void RemapAllGadgets();
+
+boolean anyTextGadgetActive();
+void ClickOnGadget(struct GadgetInfo *, int);
void HandleGadgets(int, int, int);
void HandleGadgetsKeyInput(KeySym);