/* drwAutofn.h */


#ifdef __cplusplus 
extern "C" {
#endif

extern void drw_show_mhan_win_static(void *userfndata, void *userval);
extern int drw_cmp_smenu_wlink_menu(void *listval, void *findval);
extern int drw_cmp_smenu_wlink(void *listval, void *findval);
extern int drw_cmp_smenu_wlink_wdfn(void *listval, void *findval);
extern void drw_init_asw_str(void *dataptr);
extern drw_autofn_smenu_wlink *drw_autofn_smenu_link(
                                  drw_sub_menu_wlink_data *smwd,
                                  drw_menu_defn_data *amdd,
                                  drw_autofn_wname_data *wdata,
                                  drw_autofn_fn_data *fndata);
extern void drw_autofn_msel_show_win(wimp_menu *mhan,
                                     int item,
                                     wimp_mouse_state buttontype);
extern void drw_autofn_establish_win_links(drw_gen_menu_str *gms);
extern void drw_autofn_attach_to_menu(void *userfndata, void *userval);
extern void *drw_link_w_autofn(wimp_w whan,
                               char *ext_tplte_path_name,
                               char *tfilename,
                               char *windowname,
                               int manual_fn_assign,
                               int userwincode,
                               void *userdata);
extern int drw_cmp_tfwi_names(char *name1,
                              char *name2,
                              char *defaultval);
extern int drw_autofn_get_tw(wimp_w whan,
                             char *ext_tplte_path_name,
                             char *tfilename,
                             char *windowname,
                             int has_derived_fns,
                             drw_autofn_data *mdata,
                             int find_menu_srce,
                             drw_autofn_template_data **tdataout,
                             drw_autofn_wname_data **wdataout,
                             drw_autofn_whan_data **whdataout,
                             int userwincode,
                             void *userdata,
                             int ignore_whdata,
                             drw_autofn_cr_flags cr_if_nf);
extern void drw_set_menu_ptr(char *inamebuff,
                             char *appname,
                             drw_menu_defn_data *amdd);
extern int drw_find_autofn_w(wimp_w whan,
                             char *ext_tplte_path_name,
                             char *tfilename,
                             char *windowname,
                             drw_autofn_whan_data **whdataout,
                             drw_autofn_wname_data **wdataout);
extern int drw_autofn_get_object_by_id(void *listval, void *findval);
extern wimp_i drw_find_iconno(wimp_w whan,
                              char *iconname,
                              int occnum,
                              os_box *obox);
extern drw_autofn_fn_data *drw_autofn_get_object_using_id(wimp_w whan,
                                                          int objectid,
                                               drw_autofn_data *mdata,
                                                          char *iconname);
extern wimp_i drw_autofn_find_iname(wimp_w whan,
                                    char *iconname,
                                    int objectid,
                                    int occnum);
extern void *drw_get_whan_data(wimp_w whan);
extern int drw_autofn_test_wdata_ntempty(void *listval, void *findval);
extern int drw_check_for_autofns(void);
extern int drw_find_autofn_whan(wimp_w whan);
extern drw_autofn_whan_data *drw_autofn_get_whdata(wimp_w whan);
extern drw_autofn_wname_data *drw_autofn_get_wdata(char *ext_tplte_path_name,
                                                   char *tfilename,
                                                   char *windowname);
extern void drw_init_autofn_defn_data(drw_autofn_icon_defn_data *icd);
extern int drw_autofn_cmp_icd(drw_autofn_icon_defn_data *oicd,
                              drw_autofn_icon_defn_data *icd,
                              drw_autofn_check_icd_flags checkflags);
extern int drw_autofn_cmp_template_name(void *listval, void *findval);
extern int drw_autofn_cmp_window_name(void *listval, void *findval);
extern drw_autofn_template_data *
           drw_autofn_find_template_data(drw_autofn_data *mdata);
extern drw_autofn_wname_data *drw_autofn_find_wname_data(drw_autofn_data *mdata,
                                                         drwGP searchhdr);
extern void drw_init_autofn_template_data(void *tdataptr);
extern void drw_init_autofn_wname_data(void *wdataptr);
extern void drw_init_autofn_whan_data(void *whdataptr);
extern void drw_init_autofn_fn_data(void *autofndataptr);
extern void drw_init_autofn_type_data(void *dataptr);
extern drw_autofn_fn_data *drw_new_auto_fn(wimp_w whan,
                                           wimp_i icon,
                                           char *ext_tplte_path_name,
                                           char *tfilename,
                                           char *windowname,
                                           char *iconname,
                                           char *objid,
                                           drw_fn_ptr autofn,
                                           drw_autofn_numbers fntype,
                                           drw_autofn_icon_defn_data *icd,
                                           int check_for_existing_fn,
                                           void *userdata);
extern void drw_reg_icon_whan_fn(wimp_w whan,
                                 wimp_i icon,
                                 char *extpathname,
                                 char *tfilename,
                                 char *windowname,
                                 char *iconname,
                                 drw_fn_ptr autofn,
                                 drw_autofn_numbers fntype,
                                 void *userdata);
extern drw_autofn_fn_data *drw_find_tplte_autofn(
                           drw_autofn_icon_defn_data *icd,
                           drw_autofn_wname_data **owdata);
extern void drw_set_ftd_fndata(void *userfndata, void *userval);
extern drw_autofn_fn_data *drw_autofn_get_derived_fns(
                                       drw_autofn_fn_data *fndata,
                                       char *ext_tplte_path_name,
                                       char *tfilename,
                                       char *windowname,
                                       char *icon_name,
                                       drw_autofn_icon_defn_data *icd);
extern int drw_autofn_cmp_hdefn_ftd(void *listval, void *findval);
extern void drw_set_hdefn_ftd_fndata(void *userfndata, void *userval);
extern void drw_autofn_link_hdefn_fn(drw_autofn_fn_data *fndata,
                                     drw_autofn_fn_data *hdefnfndata);
extern int drw_autofn_check_derived_tplte(int templateid,
                                          int windowid,
                                          char *exttpltename,
                                          char *tfilename,
                                          char *windowname,
                                          int *is_in_object);
extern int drw_autofn_any_derived_fns(wimp_w whan);
extern void drw_init_objos_data(void *dataptr);
extern int drw_autofn_find_objos_by_whdata_ids(void *listval, void *findval);
extern int drw_autofn_get_maxoccno_whdata_ids(drw_autofn_data *mdata);
extern int drw_autofn_get_maxocc_whdata_ids(wimp_w whan,
                                            char *objectname);
extern int drw_autofn_find_objos(void *listval, void *findval);
extern void drw_autofn_set_maxoccno(drw_autofn_data *mdata,
                                    drw_autofn_fn_data *fndata);
extern void drw_reset_escwdlist(void *userfndata, void *userval);
extern void drw_autofn_reset_escwd_list(drw_ll_hdr *escwdlist);
extern int drw_autofn_find_wdata_in_escwdlist(void *listval, void *findval);
extern drw_escwd_data *drw_autofn_add_escwd(drw_ll_hdr *escwdlist,
                                            drw_autofn_wname_data *owdata);
extern void drw_autofn_rmv_escwd(drw_ll_hdr *escwdlist,
                                 drw_autofn_wname_data *owdata);
extern void drw_do_get_derived_fn_refno(drw_autofn_fn_data *fndata,
                                        drw_autofn_data *mdata);
extern void drw_get_derived_fn_refno(void *userfndata, void *userval);
extern void drw_autofn_set_next_in_obj(drw_autofn_fn_data *ofndata,
                                       drw_autofn_fn_data *fndata);
extern void drw_set_dfn_icon_refno(void *userfndata, void *userval);
extern void drw_do_assign_dfn_icon_refno(drw_autofn_data *mdata,
                                         drw_autofn_fn_data *fndata);
extern void drw_assign_dfn_icon_refno(void *userfndata, void *userval);
extern int drw_find_obj_by_os_box(void *listval, void *findval);
extern int drw_find_obj_by_os_box_id(void *listval, void *findval);
extern void drw_do_set_derived_fn_icon_refno(drw_autofn_whan_data *whdata,
                                             drw_autofn_fn_data *fndata);
extern void drw_set_derived_fn_icon_refno(void *userfndata, void *userval);
extern int drw_autofn_get_iconname(wimp_window *wnd,
                                   int i,
                                   char **icon_name,
                                   drw_autofn_icon_defn_data *icd);
extern drw_object_data *drw_new_non_object_fn_data(drw_autofn_data *mdata,
                                                   drw_autofn_fn_data *fndata);
extern void *drw_get_initfn_data(drw_wimp_data *wpwd,
                                 char *objname,
                                 int occno);
extern drwGP drw_autofn_find_whan_data_node(drw_autofn_data *mdata,
                                            drwGP searchhdr);
extern void drw_autofn_del_autofn_data(drw_autofn_fn_data *fndata);
extern void drw_dereg_auto_fn(wimp_w whan,
                              wimp_i icon,
                              int deltype);
extern void drw_del_wh_fndata(void *userfndata, void *userval);
extern void drw_dereg_window(wimp_w whan);
extern void drw_set_autofn_mask(wimp_w whan,
                                wimp_i icon,
                                char *ext_tplte_path_name,
                                char *tfilename,
                                char *windowname,
                                char *iconname,
                                int occno,
                                drw_autofn_mask_flags fnmask);
extern drw_autofn_wname_data *drw_autofn_find_tw(char *appname,
                                           char *templatename,
                                           char *windowname,
                                           wimp_w whan,
                                           int ignore_whdata,
                                           drw_autofn_cr_flags cr_if_nf);
extern void drw_init_escwd_str(void *dataptr);
extern drw_shortcut_key_data *drw_autofn_fscut_by_name(
                                drw_autofn_wname_data *wdata,
                                                 char *scutname);
extern drw_shortcut_key_data *drw_autofn_fscut_and_itemno_by_name(
                                            drw_autofn_wname_data *wdata,
                                                             char *scutname,
                                                              int *itemno);
extern drw_shortcut_key_data *drw_autofn_fscut_by_key(
                                drw_autofn_wname_data *wdata,
                                          wimp_key_no wkeyno);
extern int drw_autofn_cmp_scut_name(void *listval, void *findval);
extern drw_shortcut_key_data *drw_autofn_add_scut(drw_ll_hdr *scutlist,
                                                  char *appname,
                                                  wimp_key_no key,
                                                  char *scutname,
                                                  int *new_scut);
extern void drw_autofn_rmv_scut(drw_ll_hdr *scutlist,
                                char *scutname);
extern void drw_decode_scut_opts(drw_shortcut_key_data *scut,
                                 char *optsbuff);
extern drw_autofn_type_data *drw_load_keypr_handler_fn(
                                            drw_autofn_wname_data *wdata,
                                                       char *handlername);
extern os_error *drw_autofn_load_shortcuts_file(char *appname,
                                                drw_ll_hdr *menulist,
                                                drw_ll_hdr *unusedmenulist,
                                     drw_modify_scut_user_fn userfn,
                                                void *userfndata,
                                                int assign_handler_fn,
                                                int *ibhasscuts);
extern void drw_load_scut_hfns(void *userfndata, void *userval);
extern void drw_load_scut_hfns_for_wdata(void *userfndata, void *userval);
extern void drw_load_scut_hfns_for_winlist(void *userfndata, void *userval);
extern void drw_autofn_load_scut_handler_fn(void);
extern int drw_find_scut_in_escwd_list(void *listval, void *findval);
extern int drw_find_scut_in_escwd_lists(drw_ll_hdr *escwdlist,
                                        wimp_key_no wkey);
extern int drw_autofn_cmp_scut_keyno(void *listval, void *findval);
extern drw_shortcut_key_data *drw_find_shortcut(drw_autofn_wname_data *wdata,
                                                wimp_key_no wkey);
extern int drw_autofn_scut_action(drw_shortcut_key_data *scut);
extern int drw_autofn_do_shortcut(wimp_w whan,
                                  wimp_i icon,
                                  wimp_key_no key,
                                  drw_autofn_whan_data *whdata,
                                  char *scutmodsandstr,
                                  drw_fn_ptr callkeyprfn);
extern int drw_find_wdata_for_menu_scut(void *listval, void *findval);
extern int drw_find_template_data_by_app(void *listval, void *findval);
extern void drw_link_scuts_for_menu(void *userfndata, void *userval);
extern void drw_link_menu_scuts(void *userfndata, void *userval);
extern void drw_reset_scut_links(void *userfndata, void *userval);
extern void drw_reset_wdata_menu_scut_links(void *userfndata, void *userval);
extern void drw_reset_menu_scut_links(void *userfndata, void *userval);
extern int drw_find_appn_tfiles_for_scut_reset(void *listval, void *findval);
extern int drw_find_scut_in_wdata_for_reset(void *listval, void *findval);
extern void drw_link_drwibar_scut_for_menu(void *userfndata, void *userval);
extern void drw_link_drwibar_menu_scuts(void *userfndata, void *userval);
extern void drw_reset_and_link_scut_links(void *userfndata, void *userval);
extern void drw_autofn_link_scuts_to_menus(char *appname,
                                           drwGP menulist,
                                           int resetlinks);
extern int drw_cmp_scut_menu_name(void *listval, void *findval);
extern void drw_link_scut_mpopup(void *userfndata, void *userval);
extern int drw_cmp_scut_by_app_name(void *listval, void *findval);
extern void drw_link_scuts_mpopup_for_wdata(void *userfndata, void *userval);
extern void drw_link_menu_scut_popups(void *userfndata, void *userval);
extern int drw_autofn_cmp_tname_by_app(void *listval, void *findval);
extern void drw_establish_scut_menu_links(char *appname,
                                          drwGP menulist);
extern int drw_find_any_scut_in_winlist(void *listval, void *findval);
extern int drw_find_appn_tfiles_scut(void *listval, void *findval);
extern int drw_autofn_any_shortcuts(char *appname);
extern void drw_set_auto_fns(void);
extern void drw_auto_fns_init(void);
extern void drw_adjust_autofn_iconno(void *userfndata, void *userval);
extern void drw_autofn_adjust_iconnos(wimp_w forwin,
                                      wimp_w adjustwin);
extern int drw_autofn_call_pre_wcr_fn(drw_fn_ptr autofn,
                                      wimp_i iconno,
                                      drw_autofn_data *mdata,
                                      void *userdata);
extern int drw_call_pre_wcr_ufn(drw_wimp_data *wpwd,
                                wimp_window *window,
                                int userwincode,
                                void *userdata);
extern int drw_call_pre_wcr_fn(wimp_window *window,
                               char *ext_tplte_path_name,
                               char *tfilename,
                               char *windowname,
                               int userwincode,
                               void *userdata);
extern wimp_i drw_autofn_cr_obj_icon(wimp_w whan,
                                     int x,
                                     int y,
                                     wimp_icon_create *wic,
                                     int clone_icon_data);
extern int drw_autofn_find_icn_in_obj(void *listval, void *findval);
extern void drw_autofn_new_icn_in_obj(drw_autofn_fn_data *ofndata,
                                      wimp_i icon);
extern int drw_cr_new_object(wimp_w whan,
                             char *tpltepathname,
                             char *tfilename,
                             char *windowname,
                             int useterrname,
                             int useterrno,
                             int userwincode,
                             void *userdata,
                             char *objtpltepname,
                             char *objtemplatename,
                             char *objwindowname,
                             char *objectname,
                             int *occno,
                             int keep_icon,
                             int x,
                             int y);
extern void drw_update_w_for_new_obj(wimp_w whan,
                                     wimp_i icon,
                                     int keep_icon);
extern int drw_autofn_new_object(wimp_w whan,
                                 char *tpltepathname,
                                 char *tfilename,
                                 char *windowname,
                                 int useterrname,
                                 int useterrno,
                                 int userwincode,
                                 void *userdata,
                                 char *objtpltepname,
                                 char *objtemplatename,
                                 char *objwindowname,
                                 char *objectname,
                                 int *occno,
                                 int keep_icon,
                                 int x,
                                 int y);
extern int drw_autofn_new_object_uinit(wimp_w whan,
                                       char *tpltepathname,
                                       char *tfilename,
                                       char *windowname,
                                       int useterrname,
                                       int useterrno,
                                       int userwincode,
                                       void *userdata,
                                       char *objtpltepname,
                                       char *objtemplatename,
                                       char *objwindowname,
                                       char *objectname,
                                       int *occno,
                                       int keep_icon,
                                       int x,
                                       int y,
                                       drw_user_object_init_fn oinitfn);
extern void drw_autofn_do_object_fn(wimp_w whan,
                                    int objectid,
                                    int actiontype);
extern void drw_move_icn_obj(void *userfndata, void *userval);
extern void drw_autofn_move_object_fn(wimp_w whan,
                                     int objectid,
                                     int x,
                                     int y,
                                     int moveby,
                                     os_box *boundedby);
extern void drw_autofn_move_objectto(wimp_w whan,
                                     int objectid,
                                     int x,
                                     int y,
                                     os_box *boundedby);
extern void drw_autofn_move_objectby(wimp_w whan,
                                     int objectid,
                                     int x,
                                     int y,
                                     os_box *boundedby);
extern void drw_hide_icn_obj(void *userfndata, void *userval);
extern void drw_autofn_hide_object(wimp_w whan,
                                   int objectid,
                                   int state);
extern void drw_autofn_remove_object(wimp_w whan,
                                     int objectid);
extern void drw_autofn_restore_object(wimp_w whan,
                                      int objectid);
extern int drw_autofn_any_fndata(wimp_w whan);
extern int drw_autofn_get_object_size(wimp_w whan,
                                      int objectid,
                                      int side);
extern int drw_autofn_get_object_bounds(wimp_w whan,
                                        int objectid,
                                        os_box *obox);
extern int drw_autofn_get_object_id(wimp_w whan,
                                    wimp_i icon,
                                    char *objectname,
                                    int occno);

#ifdef __cplusplus
}
#endif

