/*
  GEOS dialog box functions

  by Maciej 'YTM/Elysium' Witkowiak
*/

#ifndef	_GDLGBOX_H
#define _GDLGBOX_H

char __fastcall__ DoDlgBox(const char *dboxstring);
char RstrFrmDialogue(void);

/* These are custom, predefined dialog boxes, I'm sure you'll find them usable
   Most of them show 2 lines of text 						*/

char __fastcall__ DlgBoxYesNo(const char *line1, const char *line2);
char __fastcall__ DlgBoxOkCancel(const char *line1, const char *line2);
void __fastcall__ DlgBoxOk(const char *line1, const char *line2);
char __fastcall__ DlgBoxGetString(char *myString, char strLength,
				  const char *line1, const char *line2);
char __fastcall__ DlgBoxFileSelect(const char *classtxt, char ftype,
				   char *fname);

/* This is a more general dialog box, works like printf in a window */
char MessageBox(char mode, const char *format, ...);

/* mode argument for MessageBox() */
enum {
    MB_EMPTY=0,
    MB_OK,
    MB_OKCANCEL,
    MB_YESNO,
    MB_LAST };

/* Now the command string type */

typedef void dlgBoxStr;

/* and command string commands - macros */

#define DB_DEFPOS(pattern) (char)(DEF_DB_POS | (pattern))
#define DB_SETPOS(pattern,top,bot,left,right) \
	(char)(SET_DB_POS | (pattern)), (char)(top), (char)(bot), \
	(unsigned)(left), (unsigned)(right)
#define DB_ICON(i,x,y)  (char)(i), (char)(x), (char)(y)
#define DB_TXTSTR(x,y,text) (char)DBTXTSTR, (char)(x), (char)(y), (text)
#define DB_VARSTR(x,y,ptr) (char)DBVARSTR, (char)(x), (char)(y), (char)(ptr)
#define DB_GETSTR(x,y,ptr,length) (char)DBGETSTRING, (char)(x), (char)(y), (char)(ptr), (char)(length)
#define DB_SYSOPV(ptr) (char)DBSYSOPV, (unsigned)(ptr)
#define DB_GRPHSTR(ptr) (char)DBGRPHSTR, (unsigned)(ptr)
#define DB_GETFILES(x,y) (char)DBGETFILES, (char)(x), (char)(y)
#define DB_OPVEC(ptr) (char)DBOPVEC, (unsigned)(ptr)
#define DB_USRICON(x,y,ptr) (char)DBUSRICON, (char)(x), (char)(y), (unsigned)(ptr)
#define DB_USRROUT(ptr) (char)DB_USR_ROUT, (unsigned)(ptr)
#define DB_END (char)NULL

/*
  part of constants below is used internally, but some are useful for macros above
*/

/* icons for DB_ICON */
#define	OK		1
#define	CANCEL		2
#define	YES		3
#define	NO		4
#define	OPEN		5
#define	DISK		6
/* commands - internally used by command macros */
#define	DBTXTSTR	11
#define	DBVARSTR	12
#define	DBGETSTRING	13
#define	DBSYSOPV	14
#define	DBGRPHSTR	15
#define	DBGETFILES	16
#define	DBOPVEC		17
#define	DBUSRICON	18
#define	DB_USR_ROUT	19
/* icons tabulation in standard window */
#define	DBI_X_0		1
#define	DBI_X_1		9
#define	DBI_X_2		17
#define	DBI_Y_0	  	8
#define	DBI_Y_1		40
#define	DBI_Y_2		72
/* standard window size defaults */
#define	SET_DB_POS	0
#define	DEF_DB_POS	0x80
#define	DEF_DB_TOP	32
#define	DEF_DB_BOT	127
#define	DEF_DB_LEFT	64
#define	DEF_DB_RIGHT	255
/* text tabulation in standard window */
#define	TXT_LN_1_Y	16
#define	TXT_LN_2_Y	32
#define	TXT_LN_3_Y	48
#define	TXT_LN_4_Y	64
#define	TXT_LN_5_Y	80
#define	TXT_LN_X	16
/* system icons size */
#define	SYSDBI_HEIGHT	16
#define	SYSDBI_WIDTH	6
/* dialogbox string offsets */
#define	OFF_DB_FORM	0
#define	OFF_DB_TOP	1
#define	OFF_DB_BOT	2
#define	OFF_DB_LEFT	3
#define	OFF_DB_RIGHT	5
#define	OFF_DB_1STCMD	7

#endif
