/*****************************************
 *************   structs.h   *************
 *****************************************/

#define INTUI_V36_NAMES_ONLY

#include <exec/exec.h>			/* For the Amiga specific types */
#include <libraries/commodities.h>	/* For CxObj */
#include <graphics/text.h>		/* For TextAttr */
#include <intuition/intuition.h>

/*** Note structure ***/

typedef struct note *note_p;

struct note {
	struct Window *win;
	WORD leftedge,topedge;
	WORD height,width;

	UBYTE backcolour;
	UBYTE textcolour;
	UBYTE caratcolour;

	struct Gadget gad;	/* The resize gadget */

	struct TextFont *font;		/* The note's font */
	char fontname[STRLEN_FONTNAME];
	struct TextAttr textattr;	/* The font's attributes */
	char fontstring[STRLEN_FONTNAME];

	char title[STRLEN_NOTETITLE];		/* The window dragbar text */
	char text[STRLEN_NOTETEXT];		/* The main note text */
	char pubscreen[STRLEN_PUBSCREEN];	/* Public screen name */

	struct {
		char *text;	/* Pointer to position in string of carat */	

		LONG xpos,ypos;
		LONG oldxpos,oldypos;
	}carat;

	/* Linked list node */

	struct Node node;

	/* Blocking requester for blocking mouse input */

	struct Requester blockreq;

	/* Menu stuff */

	APTR *visualinfo;
	struct Menu *menustrip;

};

/*** Main project structure ***/

typedef struct project *prj_p;

struct project {
	note_p notes[NO_NOTES];

	note_p curr_note;	/* Note on display in commodities window */

	BOOL projectchanged;
	BOOL abouttoquit;

	struct {
		UBYTE backcolour;
		UBYTE textcolour;
		UBYTE caratcolour;

		WORD noteheight,notewidth;

		struct TextFont *font;
		char notefont[STRLEN_FONTNAME];
		struct TextAttr textattr;

		char notefile[STRLEN_FNAME];

		BYTE cx_priority;
		BOOL cx_popup;
		char cx_popkey[STRLEN_CXPOPKEY];

		char pubscreen[STRLEN_PUBSCREEN];

		LONG clipunit;

		ULONG delay;

		BOOL emptyquit;
		BOOL hidewarn;
	}prefs;

	struct MsgPort *main_msg_port;

	CxObj *broker,*filter,*sender,*translate;
	struct MsgPort *broker_msg_port;

	/* Stuff for the listview gadget in the commodities window */

	struct List commodlist;

	/* Which colour is the cycle gadget showing ? */

	int commodcolour;

	/* Double click in the listview window ? */

	int lastclicked;
	ULONG doubleclickseconds,doubleclickmicros;

	/* Blocking requester for blocking mouse input in commodities win */

	struct Requester blockreq;

	/* Clipboard handle */

	struct IFFHandle *iffhandle;
};
