#ifndef ikui_h_included
#define ikui_h_included
/*========================================================================
    Copyright (c) 1996, Trustees of Columbia University 
    in the City of New York.  All rights reserved.
-----------------------------------------------------------------------

    File.......: ikui.h
    Author.....: Thomas Wu (thomaswu@columbia.edu)
    Created....: January 2, 1996

    Description: Interface between Kui and CKermit

========================================================================*/

/* defines used by KuiSetProperty */
#define KUI_TITLE           1000
#define KUI_FILE_TRANSFER   1001
#define KUI_TERM_TYPE       1002
#define KUI_TERM_FONT       1003
#define KUI_TERM_CMASK      1004
#define KUI_TERM_AUTODOWNLOAD 1005
#define KUI_TERM_CAPTURE    1006
#define KUI_TERM_PRINTERCOPY 1007
#define KUI_TERM_DEBUG      1008
#define KUI_TERM_PCTERM     1009
#define KUI_TERM_RESIZE     1010
#define KUI_TERM_URL_HIGHLIGHT 1011
#define KUI_TERM_REMCHARSET  1012
#define KUI_TERM_KEYCLICK   1013
#define KUI_LOCUS           1014
#define KUI_AUTO_LOCUS      1015
#define KUI_EXIT_WARNING    1016
#define KUI_GUI_DIALOGS     1017
#define KUI_GUI_TOOLBAR     1018
#define KUI_GUI_MENUBAR     1019
#define KUI_GUI_CLOSE       1020
#define KUI_GUI_TOOLBAR_VIS 1021
#define KUI_GUI_STATBAR_VIS 1022
#define KUI_GUI_MENUBAR_VIS 1023


struct _kui_init {
    char pos_init;		/* boolean if position set */
    unsigned long pos_x;
    unsigned long pos_y;
    char face_init;
    char * facename;
    char font_init;
    int  font_size;
    int  nomenubar;
    int  notoolbar;
    int  nostatusbar;
    int  nCmdShow;
    int  resizeMode;
    int  noclose;
};

void KuiSetProperty( int propid, intptr_t param1, intptr_t param2 );
int KuiGetProperty( int propid, void* out );

int KuiInit( void* hInstance, struct _kui_init * );
HANDLE KuiThreadInit( void* hInstance );
int KuiThreadCleanup( void* hInstance );
#endif
void KuiSetTerminalStatusText(int, char *);
void KuiSetTerminalConnectButton(int);
void KuiSetTerminalPosition(int, int);
void KuiSetTerminalSize(int, int);
void KuiSetTerminalResizeMode(int);
int  KuiGetTerminalResizeMode(void);
void KuiSetTerminalRunMode(int);
int KuiGetTerminalRunMode();
void KuiGetTerminalMaximisedSize(BOOL inChars, int* width, int* height);
#define STATUS_CMD_TERM   0
#define STATUS_LOCUS      1
#define STATUS_PROTO      2
#define STATUS_CURPOS     3
#define STATUS_HW         4

int KuiFileDialog(char *, char *, char *, int, BOOL, BOOL);

#ifdef CK_SHELL_NOTIFY
#ifndef KUI_NOTIF_I_NONE
#define KUI_NOTIF_I_NONE   0
#define KUI_NOTIF_I_INFO   1
#define KUI_NOTIF_I_WARN   2
#define KUI_NOTIF_I_ERR    3
#define KUI_NOTIF_I_USER   4
#endif /* KUI_NOTIF_I_NONE */

void KuiShowNotification(int icon, char* title, char * message);
#endif /* CK_SHELL_NOTIFY */

BOOL KuiRenderToEmfFile(int vmode, char* filename);
#ifdef CK_SAVE_TO_IMAGE
BOOL KuiRenderToBmpFile(int vmode, char* filename);
#ifdef CK_HAVE_GDIPLUS
BOOL KuiRenderToPngFile(int vmode, char* filename);
BOOL KuiRenderToGifFile(int vmode, char* filename);
#endif /* CK_HAVE_GDIPLUS */
BOOL KuiRenderSoftFontToFile(int fontbuffer, const char* filename);
#endif /* CK_SAVE_TO_IMAGE */

void KuiRefreshTerminal();
