/*
 * WimpIface header
 */

// This new type to help knowing in which context FYEO_load_file() was called 
typedef enum {
 ICONBAR, WINDOW, DATAOPEN
}  Load_Context;

static void FYEO_init_boxes(void);
static void FYEO_current_is_display_box(FYEO_display *Display);
static void FYEO_current_is_standard_box(void);
static void FYEO_init_dlist(void);
static void FYEO_insert_in_dlist(FYEO_display *Display);
static void FYEO_remove_from_dlist(FYEO_display *Display);
static FYEO_display *FYEO_alloc_display(void);
static void FYEO_free_display(FYEO_display *Display);
static void FYEO_title_process(FYEO_display *Display);
static void FYEO_title_waiting(FYEO_display *Display);
static void FYEO_resize_window(FYEO_display *Display);
static void FYEO_redo_window(FYEO_display *Display,wimp_redrawstr R);
static void FYEO_update_window(FYEO_display *Display);
static void FYEO_display_window(FYEO_display *Display);
static BOOL FYEO_create_window(FYEO_display *Display);
static BOOL FYEO_destroy_window(FYEO_display *Display);
static BOOL FYEO_init_display(FYEO_process *Process);
static void FYEO_destroy_display(FYEO_display *Display);
static void FYEO_destroy_all_display(void);
static void FYEO_process_file(char *Filename,int Filetype);
static BOOL FYEO_load_file(FYEO_display *Display, Load_Context Context);
static void FYEO_force_file(char *Filename);
static void FYEO_info_aboutprog(void);
static void FYEO_info_aboutpic(FYEO_display *Display);
static void FYEO_output_settings_init(output_settings * OutputSettingsPtr);
static void FYEO_output_settings_term(void);
static void FYEO_output_settings_handler(dbox D,void * Handle);
static BOOL FYEO_output_settings_raw_handler(dbox D,void * Event,void * Handle);
static BOOL FYEO_output_settings_raw_unknown_handler(wimp_eventstr * E, void * Handle);
static void FYEO_input_settings_init(input_settings * InputSettingsPtr);
static void FYEO_input_settings_term(void);
static void FYEO_input_settings_handler(dbox D,void * Handle);
static BOOL FYEO_input_settings_raw_handler(dbox D,void * Event,void * Handle);
static void FYEO_misc_settings_init(misc_settings * MiscSettingsPtr);
static void FYEO_misc_settings_term(void);
static void FYEO_misc_settings_handler(dbox D,void * Handle);
static BOOL FYEO_misc_settings_raw_handler(dbox D,void * Event,void * Handle);
static void FYEO_global_settings_init(FYEO_settings * SettingsPtr);
static void FYEO_global_settings_term(void);
static void FYEO_global_settings_handler(dbox D,void * Handle);
static void redraw_pref_windows(wimp_openstr* WinS, BOOL ToFront);
static BOOL FYEO_global_settings_raw_handler(dbox D , void * Event, void * Handle);
static void select_icon(dbox * D, int Icon);
static void FYEO_mag_handler(void *Display);
static BOOL FYEO_save_sprite(char *Filename,void *Display);
static void FYEO_create_icon_menu(void);
static void FYEO_destroy_icon_menu(void);
static void FYEO_create_window_menu(FYEO_display *Display);
static void FYEO_destroy_window_menu(FYEO_display *Display);
static void FYEO_icon_menu_proc(void *Handle,char *Hit);
static void FYEO_window_menu_proc(void *Display,char *Hit);
static void FYEO_window_event_handler(wimp_eventstr *E, void *Display);
static BOOL FYEO_window_unknown_handler(wimp_eventstr *E, void *Display);
static void FYEO_left_icon_click(wimp_i I);
static BOOL FYEO_icon_unknown_handler(wimp_eventstr *E,void *Handle);
static void FYEO_icon_load_handler(wimp_eventstr *E,void *Handle);
static void FYEO_load_settings(FYEO_settings *Settings);
static void FYEO_icone_init(void);
static void FYEO_icone_terminate(void);
static void FYEO_initialise(void);
static void FYEO_terminate(void);
static void FYEO_launch_help(void);



