/* InteractionWindow.h */

#ifndef Included_InteractionWindow_h
#define Included_InteractionWindow_h

/* InteractionWindow module depends on */
/* MiscInfo.h */
/* Audit */
/* Debug */
/* Definitions */
/* Screen */
/* EventLoop */
/* Menus */
/* MainWindowStuff */
/* WindowDispatcher */
/* TextEdit */
/* Memory */
/* GlobalWindowMenuList */
/* Main */
/* GrowIcon */
/* DataMunging */
/* FindDialog */

#include "Screen.h"
#include "EventLoop.h"
#include "Menus.h"

struct InteractionWindowRec;
typedef struct InteractionWindowRec InteractionWindowRec;

/* forward declarations */
struct MainWindowRec;


/* create a new interaction window.  the caller is responsible for registering the */
/* interaction window with the main window. */
InteractionWindowRec*	NewInteractionWindow(struct MainWindowRec* MainWindow);

/* dispose of a interaction window.  the interaction window notifies the main window */
/* that owns it. */
void									DisposeInteractionWindow(InteractionWindowRec* Window);

/* event handling routines for the interaction window */
void									InteractionWindowDoIdle(InteractionWindowRec* Window,
												MyBoolean CheckCursorFlag, OrdType XLoc, OrdType YLoc,
												ModifierFlags Modifiers);
void									InteractionWindowBecomeActive(InteractionWindowRec* Window);
void									InteractionWindowBecomeInactive(InteractionWindowRec* Window);
void									InteractionWindowJustResized(InteractionWindowRec* Window);
void									InteractionWindowDoMouseDown(OrdType XLoc, OrdType YLoc,
												ModifierFlags Modifiers, InteractionWindowRec* Window);
void									InteractionWindowDoKeyDown(unsigned char KeyCode,
												ModifierFlags Modifiers, InteractionWindowRec* Window);
void									InteractionWindowClose(InteractionWindowRec* Window);
void									InteractionWindowUpdator(InteractionWindowRec* Window);
void									InteractionWindowMenuSetup(InteractionWindowRec* Window);
void									InteractionWindowDoMenuCommand(InteractionWindowRec* Window,
												MenuItemType* MenuItem);

/* add a string to the interaction window.  linefeeds correspond to system linefeed */
/* strings.  the string is a non-null-terminated block of data with explicit size. */
MyBoolean							InteractionWindowAppendString(InteractionWindowRec* Window,
												char* Data, long Length);

#endif
