/**
 * Nettle Wimp_Poll / Wimp code headers
 * (C) Nettle developers 2000-2001
 *
 * $Id: wimp,v 1.30 2002/02/02 21:39:44 ijeffray Exp $
 */

#ifndef WIMP_H
#define WIMP_H

#include "nettle.h"

/* These may be better as an enum */
#define MENU_NONE          0
#define MENU_ICONBAR       1
#define MENU_TERMINAL      2
#define MENU_CONNECTION    3
#define MENU_TERMINAL_TYPE 4
#define MENU_HOTLIST       5
#define MENU_TERMLIST      6
#define MENU_LINEED_TYPE   7
#define MENU_ZAPFONTLIST   8
#define MENU_CURSOR_TYPE   9

#define RECEIVE_BLOCK_LENGTH	0x400

extern void closedown_wimp(void);

extern void wimp_nullreasoncode(void);
extern void redraw_window(union wimp_poll_block *);
extern void open_window(struct wimp_openwindow_block *, int);
extern void open_window_centred(int);
extern void close_window(int);
extern void wimp_mouse_click(int /*x*/, int /*y*/, int /*buttons*/,
                            int /*window*/, int /*icon*/);
extern void drag_finished(void);
extern void key_pressed(int, int, int, int);
extern void wimp_menu_selection(int */*selection*/);
extern void lose_caret(int);
extern void gain_caret(int);
extern void wimp_message(union wimp_poll_block *);
extern void wimp_message_ack(union wimp_poll_block *);
extern void mode_change(void);

extern void set_caret_position(int, int, int, int);
extern void check_set_caret_position(int, int);

extern void set_termsize_icons(int, int, int, int, struct coords, int);
extern bool read_termsize_icons(int, int, int, int, struct coords *, int *);
extern int read_lineeditor_type (int, int);
extern enum nettle_terminal read_terminal_type (int, int);

extern void create_terminal_type_menu(int window_handle, int text_icon, int by_icon);
extern void create_lineeditor_type_menu(int window_handle, int text_icon, int by_icon);
extern void create_connection_type_menu(int window_handle, int text_icon, int by_icon);

/*
 * Description:  Create a menu for the cursor type and place it beside
 *               the icon designated
 * Parameters:   window_handle = handle of the window we're called from
 *               text_icon = the icon that holds the current text for
 *                           this menu (info&menu style)
 *               by_icon = the icon beside which the menu should be
 *                         placed (the menu icon)
 * Returns:      none
 */
void create_cursor_type_menu(int window_handle, int text_icon, int by_icon);

/*
 * Call back function for url_receivebroadcast.
 *
 * @param url        Url to be handled
 * @param checkonly  non-zero if we should only check if the return can be handle
 *
 * @return non-zero if url has been [or can be] handled
 */
int wimp_handleurl(const char *url, int checkonly);

extern void clipboard_claim (void);
extern void clipboard_datarequest (struct session_struct *);

#endif
