/*-*-C-*-
 * Generic gadgetry for Window CSE
 */


#ifndef __defined_gadget_h
#define __defined_gadget_h


extern GadgetPtr gadget_load (
    GadgetTemplatePtr template,
    int offset,
    RelocationTablePtr reloctable 
);
extern void gadget_save (
    TemplateInfoPtr tip,
    GadgetPtr gadget,
    GadgetTemplatePtr template
);
extern void gadget_size (
    GadgetPtr gadget,
    int *bodysize,
    int *stringsize,
    int *msgsize,
    int *numrelocs
);
extern GadgetPtr gadget_copy (GadgetPtr gadget);
extern void gadget_free (GadgetPtr gadget);

extern error * gadget_open_dbox (GadgetPtr gadget);
extern error * gadget_close_dbox (GadgetPtr gadget);
extern error * gadget_reopen_dbox (WindowPtr win, GadgetPtr gadget);
extern error * gadget_dbox_mouse_click (
    MouseClickPtr mouse,
    unsigned int modifiers,
    GadgetPtr gadget
);
extern error * gadget_dbox_key_pressed (
    GadgetPtr gadget,
    KeyPressPtr key,
    Bool *consumed
);
extern error * gadget_dbox_update_componentid (
    GadgetPtr gadget,
    ComponentID old,
    ComponentID new
);
extern error * gadget_dbox_update_window_name (
    GadgetPtr gadget,
    char *name
);
extern Bool gadget_drop_icon (
    GadgetPtr gadget,
    int icon
);
extern error * gadget_object_drop (
    GadgetPtr gadget,
    int icon,
    ObjectClass class,
    char *name
);
extern error * gadget_gadget_drop (
    GadgetPtr dest,
    int icon,
    GadgetPtr gadget
);

extern error * gadget_ab_init (GadgetPtr gadget);
extern error * gadget_note_new_default_action_button (GadgetPtr gadget);
extern error * gadget_note_new_cancel_action_button (GadgetPtr gadget);
extern error * gadget_ab_apply (GadgetPtr gadget);

extern error * gadget_bx_init (GadgetPtr gadget);
extern error * gadget_bx_apply (GadgetPtr gadget);

extern error * gadget_lb_alignpos (GadgetPtr gadget, int *horiz, int *vert);

extern error * gadget_rb_make_radio_group (WindowObjPtr window);
extern error * gadget_rb_select_radio_group (WindowObjPtr window);

extern error * gadget_rb_apply (GadgetPtr gadget);
extern error * gadget_rb_update_group (GadgetPtr gadget, int group);

extern error * gadget_sl_apply (GadgetPtr gadget);

extern error * gadget_nr_init (GadgetPtr gadget);
extern error * gadget_nr_apply (GadgetPtr gadget);
extern error * gadget_nr_slider (GadgetPtr gadget);
extern error * gadget_nr_numerical (GadgetPtr gadget);
extern error * gadget_nr_display (GadgetPtr gadget);
extern error * gadget_nr_writable (GadgetPtr gadget);
extern error * gadget_nr_update_display_width (GadgetPtr gadget, int width);

extern error * gadget_ss_init (GadgetPtr gadget);
extern error * gadget_ss_numerical (GadgetPtr gadget);
extern error * gadget_ss_display (GadgetPtr gadget);
extern error * gadget_ss_writable (GadgetPtr gadget);
extern int gadget_ss_min_maxselectedstringlen (GadgetPtr gadget);

extern error * gadget_wi_apply (GadgetPtr gadget);

extern error * gadget_uk_init (GadgetPtr gadget);
extern error * gadget_uk_apply (GadgetPtr gadget);
extern error * gadget_uk_offset (
    GadgetPtr gadget,
    int icon,
    MouseClickPtr mouse
);

extern error * gadget_link_writables (WindowObjPtr window);


#endif
