#ifndef LIBRARIES_BGUI_MACROS_H
#define LIBRARIES_BGUI_MACROS_H
/*
**	$VER: libraries/bgui_macros.h 41.1 (17.4.96)
**	bgui.library macros.
**
**	(C) Copyright 1996 Ian J. Einman.
**
**	(C) Copyright 1993-1996 Jaba Development.
**	(C) Copyright 1993-1996 Jan van den Baard.
**	All Rights Reserved.
**/

#ifndef LIBRARIES_BGUI_H
#include <libraries/bgui.h>
#endif /* LIBRARIES_BGUI_H */

/*****************************************************************************
 *
 *	General object creation macros.
 */
#define LabelObject	BGUI_NewObject(BGUI_LABEL_IMAGE
#define FrameObject	BGUI_NewObject(BGUI_FRAME_IMAGE

#define HGroupObject	BGUI_NewObject(BGUI_GROUP_GADGET
#define VGroupObject	BGUI_NewObject(BGUI_GROUP_GADGET, GROUP_Style, GRSTYLE_VERTICAL
#define ButtonObject	BGUI_NewObject(BGUI_BUTTON_GADGET
#define ToggleObject	BGUI_NewObject(BGUI_BUTTON_GADGET, GA_ToggleSelect, TRUE
#define CycleObject	BGUI_NewObject(BGUI_CYCLE_GADGET
#define CheckBoxObject	BGUI_NewObject(BGUI_CHECKBOX_GADGET
#define InfoObject	BGUI_NewObject(BGUI_INFO_GADGET
#define StringObject	BGUI_NewObject(BGUI_STRING_GADGET
#define PropObject	BGUI_NewObject(BGUI_PROP_GADGET
#define IndicatorObject	BGUI_NewObject( BGUI_INDICATOR_GADGET
#define ProgressObject	BGUI_NewObject( BGUI_PROGRESS_GADGET
#define SliderObject	BGUI_NewObject( BGUI_SLIDER_GADGET
#define PageObject	BGUI_NewObject( BGUI_PAGE_GADGET
#define MxObject	BGUI_NewObject( BGUI_MX_GADGET
#define ListviewObject	BGUI_NewObject( BGUI_LISTVIEW_GADGET
#define ExternalObject	BGUI_NewObject( BGUI_EXTERNAL_GADGET, GA_Left, 0, GA_Top, 0, GA_Width, 0, GA_Height, 0
#define SeparatorObject	BGUI_NewObject( BGUI_SEPARATOR_GADGET

#define WindowObject	BGUI_NewObject( BGUI_WINDOW_OBJECT
#define FileReqObject	BGUI_NewObject( BGUI_FILEREQ_OBJECT
#define CommodityObject	BGUI_NewObject( BGUI_COMMODITY_OBJECT

#define EndObject	TAG_END)

/* Typo */
#define SeperatorObject         SeparatorObject

/*****************************************************************************
 *
 *	Label creation.
 */
#define Label(l)		LAB_Label, l
#define UScoreLabel(l,u)	LAB_Label, l, LAB_Underscore, u
#define Style(s)		LAB_Style, s
#define Place(p)		LAB_Place, p

/*****************************************************************************
 *
 *	Frames.
 */
#define ButtonFrame		FRM_Type, FRTYPE_BUTTON
#define RidgeFrame		FRM_Type, FRTYPE_RIDGE
#define DropBoxFrame		FRM_Type, FRTYPE_DROPBOX
#define NeXTFrame		FRM_Type, FRTYPE_NEXT
#define RadioFrame		FRM_Type, FRTYPE_RADIOBUTTON
#define XenFrame		FRM_Type, FRTYPE_XEN_BUTTON
#define TabAboveFrame		FRM_Type, FRTYPE_TAB_ABOVE
#define TabBelowFrame		FRM_Type, FRTYPE_TAB_BELOW
#define BorderFrame		FRM_Type, FRTYPE_BORDER

/* For clarity. */
#define StringFrame		RidgeFrame
#define MxFrame                 RadioFrame

#define FrameTitle(t)		FRM_Title, t

/* Built-in back fills */
#define ShineRaster		FRM_BackFill, SHINE_RASTER
#define ShadowRaster		FRM_BackFill, SHADOW_RASTER
#define ShineShadowRaster	FRM_BackFill, SHINE_SHADOW_RASTER
#define FillRaster		FRM_BackFill, FILL_RASTER
#define ShineFillRaster         FRM_BackFill, SHINE_FILL_RASTER
#define ShadowFillRaster	FRM_BackFill, SHADOW_FILL_RASTER
#define ShineBlock		FRM_BackFill, SHINE_BLOCK
#define ShadowBlock		FRM_BackFill, SHADOW_BLOCK

/*****************************************************************************
 *
 *	Vector images.
 */
#define GetPath                 VIT_BuiltIn, BUILTIN_GETPATH
#define GetFile                 VIT_BuiltIn, BUILTIN_GETFILE
#define CheckMark		VIT_BuiltIn, BUILTIN_CHECKMARK
#define PopUp			VIT_BuiltIn, BUILTIN_POPUP
#define ArrowUp                 VIT_BuiltIn, BUILTIN_ARROW_UP
#define ArrowDown		VIT_BuiltIn, BUILTIN_ARROW_DOWN
#define ArrowLeft		VIT_BuiltIn, BUILTIN_ARROW_LEFT
#define ArrowRight		VIT_BuiltIn, BUILTIN_ARROW_RIGHT

/*****************************************************************************
 *
 *	Group class macros.
 */
#define StartMember		GROUP_Member
#define EndMember		TAG_END, 0
#define Spacing(p)		GROUP_Spacing, p
#define HOffset(p)		GROUP_HorizOffset, p
#define VOffset(p)		GROUP_VertOffset, p
#define LOffset(p)		GROUP_LeftOffset, p
#define ROffset(p)		GROUP_RightOffset, p
#define TOffset(p)		GROUP_TopOffset, p
#define BOffset(p)		GROUP_BottomOffset, p
#define VarSpace(w)		GROUP_SpaceObject, w
#define EqualWidth		GROUP_EqualWidth, TRUE
#define EqualHeight		GROUP_EqualHeight, TRUE

/*****************************************************************************
 *
 *	Layout macros.
 */
#define FixMinWidth		LGO_FixMinWidth, TRUE
#define FixMinHeight		LGO_FixMinHeight, TRUE
#define Weight(w)		LGO_Weight, w
#define FixWidth(w)		LGO_FixWidth, w
#define FixHeight(h)		LGO_FixHeight, h
#define Align			LGO_Align, TRUE
#define FixMinSize		FixMinWidth, FixMinHeight
#define FixSize(w,h)		FixWidth(w), FixHeight(h)
#define NoAlign                 LGO_NoAlign, TRUE

/*****************************************************************************
 *
 *	Page class macros.
 */
#define PageMember		PAGE_Member

/*****************************************************************************
 *
 *	"Quick" button creation macros.
 */
#define Button(label,id)\
	ButtonObject,\
		LAB_Label,		label,\
		GA_ID,			id,\
		ButtonFrame,\
	EndObject

#define KeyButton(label,id)\
	ButtonObject,\
		LAB_Label,		label,\
		LAB_Underscore,         '_',\
		GA_ID,			id,\
		ButtonFrame,\
	EndObject

#define Toggle(label,state,id)\
	ToggleObject,\
		LAB_Label,		label,\
		GA_ID,			id,\
		GA_Selected,		state,\
		ButtonFrame,\
	EndObject

#define KeyToggle(label,state,id)\
	ToggleObject,\
		LAB_Label,		label,\
		LAB_Underscore,         '_',\
		GA_ID,			id,\
		GA_Selected,		state,\
		ButtonFrame,\
	EndObject

#define XenButton(label,id)\
	ButtonObject,\
		LAB_Label,		label,\
		GA_ID,			id,\
		XenFrame,\
	EndObject

#define XenKeyButton(label,id)\
	ButtonObject,\
		LAB_Label,		label,\
		LAB_Underscore,         '_',\
		GA_ID,			id,\
		XenFrame,\
	EndObject

#define XenToggle(label,state,id)\
	ToggleObject,\
		LAB_Label,		label,\
		GA_ID,			id,\
		GA_Selected,		state,\
		XenFrame,\
	EndObject

#define XenKeyToggle(label,state,id)\
	ToggleObject,\
		LAB_Label,		label,\
		LAB_Underscore,         '_',\
		GA_ID,			id,\
		GA_Selected,		state,\
		XenFrame,\
	EndObject

/*****************************************************************************
 *
 *	"Quick" cycle creation macros.
 */
#define Cycle(label,labels,active,id)\
	CycleObject,\
		LAB_Label,		label,\
		GA_ID,			id,\
		ButtonFrame,\
		CYC_Labels,		labels,\
		CYC_Active,		active,\
	EndObject

#define KeyCycle(label,labels,active,id)\
	CycleObject,\
		LAB_Label,		label,\
		LAB_Underscore,         '_',\
		GA_ID,			id,\
		ButtonFrame,\
		CYC_Labels,		labels,\
		CYC_Active,		active,\
	EndObject

#define XenCycle(label,labels,active,id)\
	CycleObject,\
		LAB_Label,		label,\
		GA_ID,			id,\
		XenFrame,\
		CYC_Labels,		labels,\
		CYC_Active,		active,\
	EndObject

#define XenKeyCycle(label,labels,active,id)\
	CycleObject,\
		LAB_Label,		label,\
		LAB_Underscore,         '_',\
		GA_ID,			id,\
		XenFrame,\
		CYC_Labels,		labels,\
		CYC_Active,		active,\
	EndObject

#define PopCycle(label,labels,active,id)\
	CycleObject,\
		LAB_Label,		label,\
		GA_ID,			id,\
		ButtonFrame,\
		CYC_Labels,		labels,\
		CYC_Active,		active,\
		CYC_Popup,		TRUE,\
	EndObject

#define KeyPopCycle(label,labels,active,id)\
	CycleObject,\
		LAB_Label,		label,\
		LAB_Underscore,         '_',\
		GA_ID,			id,\
		ButtonFrame,\
		CYC_Labels,		labels,\
		CYC_Active,		active,\
		CYC_Popup,		TRUE,\
	EndObject

#define XenPopCycle(label,labels,active,id)\
	CycleObject,\
		LAB_Label,		label,\
		GA_ID,			id,\
		XenFrame,\
		CYC_Labels,		labels,\
		CYC_Active,		active,\
		CYC_Popup,		TRUE,\
	EndObject

#define XenKeyPopCycle(label,labels,active,id)\
	CycleObject,\
		LAB_Label,		label,\
		LAB_Underscore,         '_',\
		GA_ID,			id,\
		XenFrame,\
		CYC_Labels,		labels,\
		CYC_Active,		active,\
		CYC_Popup,		TRUE,\
	EndObject

/*****************************************************************************
 *
 *	"Quick" checkbox creation macros.
 */
#define CheckBox(label,state,id)\
	CheckBoxObject,\
		LAB_Label,		label,\
		GA_ID,			id,\
		ButtonFrame,\
		FRM_Flags,		FRF_EDGES_ONLY,\
		GA_Selected,		state,\
	EndObject, FixMinSize

#define KeyCheckBox(label,state,id)\
	CheckBoxObject,\
		LAB_Label,		label,\
		LAB_Underscore,         '_',\
		GA_ID,			id,\
		ButtonFrame,\
		FRM_Flags,		FRF_EDGES_ONLY,\
		GA_Selected,		state,\
	EndObject, FixMinSize

#define XenCheckBox(label,state,id)\
	CheckBoxObject,\
		LAB_Label,		label,\
		GA_ID,			id,\
		XenFrame,\
		FRM_Flags,		FRF_EDGES_ONLY,\
		GA_Selected,		state,\
	EndObject, FixMinSize

#define XenKeyCheckBox(label,state,id)\
	CheckBoxObject,\
		LAB_Label,		label,\
		LAB_Underscore,         '_',\
		GA_ID,			id,\
		XenFrame,\
		FRM_Flags,		FRF_EDGES_ONLY,\
		GA_Selected,		state,\
	EndObject, FixMinSize

#define CheckBoxNF(label,state,id)\
	CheckBoxObject,\
		LAB_Label,		label,\
		GA_ID,			id,\
		ButtonFrame,\
		FRM_Flags,		FRF_EDGES_ONLY,\
		GA_Selected,		state,\
	EndObject

#define KeyCheckBoxNF(label,state,id)\
	CheckBoxObject,\
		LAB_Label,		label,\
		LAB_Underscore,         '_',\
		GA_ID,			id,\
		ButtonFrame,\
		FRM_Flags,		FRF_EDGES_ONLY,\
		GA_Selected,		state,\
	EndObject,

#define XenCheckBoxNF(label,state,id)\
	CheckBoxObject,\
		LAB_Label,		label,\
		GA_ID,			id,\
		XenFrame,\
		FRM_Flags,		FRF_EDGES_ONLY,\
		GA_Selected,		state,\
	EndObject,

#define XenKeyCheckBoxNF(label,state,id)\
	CheckBoxObject,\
		LAB_Label,		label,\
		LAB_Underscore,         '_',\
		GA_ID,			id,\
		XenFrame,\
		FRM_Flags,		FRF_EDGES_ONLY,\
		GA_Selected,		state,\
	EndObject,

/*****************************************************************************
 *
 *	"Quick" info object creation macros.
 */
#define InfoFixed(label,text,args,numlines)\
	InfoObject,\
		LAB_Label,		label,\
		ButtonFrame,\
		FRM_Flags,		FRF_RECESSED,\
		INFO_TextFormat,	text,\
		INFO_Args,		args,\
		INFO_MinLines,		numlines,\
		INFO_FixTextWidth,	TRUE,\
	EndObject

#define InfoObj(label,text,args,numlines)\
	InfoObject,\
		LAB_Label,		label,\
		ButtonFrame,\
		FRM_Flags,		FRF_RECESSED,\
		INFO_TextFormat,	text,\
		INFO_Args,		args,\
		INFO_MinLines,		numlines,\
	EndObject

/*****************************************************************************
 *
 *	"Quick" string/integer creation macros.
 */
#define String(label,contents,maxchars,id)\
	StringObject,\
		LAB_Label,		label,\
		RidgeFrame,\
		STRINGA_TextVal,	contents,\
		STRINGA_MaxChars,	maxchars,\
		GA_ID,			id,\
	EndObject

#define KeyString(label,contents,maxchars,id)\
	StringObject,\
		LAB_Label,		label,\
		LAB_Underscore,         '_',\
		RidgeFrame,\
		STRINGA_TextVal,	contents,\
		STRINGA_MaxChars,	maxchars,\
		GA_ID,			id,\
	EndObject

#define TabString(label,contents,maxchars,id)\
	StringObject,\
		LAB_Label,		label,\
		RidgeFrame,\
		STRINGA_TextVal,	contents,\
		STRINGA_MaxChars,	maxchars,\
		GA_ID,			id,\
		GA_TabCycle,		TRUE,\
	EndObject

#define TabKeyString(label,contents,maxchars,id)\
	StringObject,\
		LAB_Label,		label,\
		LAB_Underscore,         '_',\
		RidgeFrame,\
		STRINGA_TextVal,	contents,\
		STRINGA_MaxChars,	maxchars,\
		GA_ID,			id,\
		GA_TabCycle,		TRUE,\
	EndObject

#define Integer(label,contents,maxchars,id)\
	StringObject,\
		LAB_Label,		label,\
		RidgeFrame,\
		STRINGA_LongVal,	contents,\
		STRINGA_MaxChars,	maxchars,\
		GA_ID,			id,\
	EndObject

#define KeyInteger(label,contents,maxchars,id)\
	StringObject,\
		LAB_Label,		label,\
		LAB_Underscore,         '_',\
		RidgeFrame,\
		STRINGA_LongVal,	contents,\
		STRINGA_MaxChars,	maxchars,\
		GA_ID,			id,\
	EndObject

#define TabInteger(label,contents,maxchars,id)\
	StringObject,\
		LAB_Label,		label,\
		RidgeFrame,\
		STRINGA_LongVal,	contents,\
		STRINGA_MaxChars,	maxchars,\
		GA_ID,			id,\
		GA_TabCycle,		TRUE,\
	EndObject

#define TabKeyInteger(label,contents,maxchars,id)\
	StringObject,\
		LAB_Label,		label,\
		LAB_Underscore,         '_',\
		RidgeFrame,\
		STRINGA_LongVal,	contents,\
		STRINGA_MaxChars,	maxchars,\
		GA_ID,			id,\
		GA_TabCycle,		TRUE,\
	EndObject

/*
 *	STRINGA_Pens & STRINGA_ActivePens pen-pack macro.
 */
#define PACKPENS(a,b) (((b<<8)&0xFF00)|((a)&0x00FF))

/*****************************************************************************
 *
 *	"Quick" scroller creation macros.
 */
#define HorizScroller(label,top,total,visible,id)\
	PropObject,\
		LAB_Label,		label,\
		PGA_Top,		top,\
		PGA_Total,		total,\
		PGA_Visible,		visible,\
		PGA_Freedom,		FREEHORIZ,\
		GA_ID,			id,\
		PGA_Arrows,		TRUE,\
	EndObject

#define VertScroller(label,top,total,visible,id)\
	PropObject,\
		LAB_Label,		label,\
		PGA_Top,		top,\
		PGA_Total,		total,\
		PGA_Visible,		visible,\
		GA_ID,			id,\
		PGA_Arrows,		TRUE,\
	EndObject

#define KeyHorizScroller(label,top,total,visible,id)\
	PropObject,\
		LAB_Label,		label,\
		LAB_Underscore,         '_',\
		PGA_Top,		top,\
		PGA_Total,		total,\
		PGA_Visible,		visible,\
		PGA_Freedom,		FREEHORIZ,\
		GA_ID,			id,\
		PGA_Arrows,		TRUE,\
	EndObject

#define KeyVertScroller(label,top,total,visible,id)\
	PropObject,\
		LAB_Label,		label,\
		LAB_Underscore,         '_',\
		PGA_Top,		top,\
		PGA_Total,		total,\
		PGA_Visible,		visible,\
		GA_ID,			id,\
		PGA_Arrows,		TRUE,\
	EndObject

/*****************************************************************************
 *
 *	"Quick" indicator creation macros.
 */
#define Indicator(min,max,level,just)\
	IndicatorObject,\
		INDIC_Min,		min,\
		INDIC_Max,		max,\
		INDIC_Level,		level,\
		INDIC_Justification,	just,\
	EndObject

#define IndicatorFormat(min,max,level,just,format)\
	IndicatorObject,\
		INDIC_Min,		min,\
		INDIC_Max,		max,\
		INDIC_Level,		level,\
		INDIC_Justification,	just,\
		INDIC_FormatString,	format,\
	EndObject

/*****************************************************************************
 *
 *	"Quick" progress creation macros.
 */
#define HorizProgress(label,min,max,done)\
	ProgressObject,\
		LAB_Label,		label,\
		ButtonFrame,\
		FRM_Flags,		FRF_RECESSED,\
		PROGRESS_Min,		min,\
		PROGRESS_Max,		max,\
		PROGRESS_Done,		done,\
	EndObject

#define VertProgress(label,min,max,done)\
	ProgressObject,\
		LAB_Label,		label,\
		ButtonFrame,\
		FRM_Flags,		FRF_RECESSED,\
		PROGRESS_Min,		min,\
		PROGRESS_Max,		max,\
		PROGRESS_Done,		done,\
		PROGRESS_Vertical,	TRUE,\
	EndObject

#define HorizProgressFS(label,min,max,done,fstr)\
	ProgressObject,\
		LAB_Label,		label,\
		ButtonFrame,\
		FRM_Flags,		FRF_RECESSED,\
		PROGRESS_Min,		min,\
		PROGRESS_Max,		max,\
		PROGRESS_Done,		done,\
		PROGRESS_FormatString,	fstr,\
	EndObject

#define VertProgressFS(label,min,max,done,fstr)\
	ProgressObject,\
		LAB_Label,		label,\
		ButtonFrame,\
		FRM_Flags,		FRF_RECESSED,\
		PROGRESS_Min,		min,\
		PROGRESS_Max,		max,\
		PROGRESS_Done,		done,\
		PROGRESS_Vertical,	TRUE,\
		PROGRESS_FormatString,	fstr,\
	EndObject

/*****************************************************************************
 *
 *	"Quick" slider creation macros.
 */
#define HorizSlider(label,min,max,level,id)\
	SliderObject,\
		LAB_Label,		label,\
		SLIDER_Min,		min,\
		SLIDER_Max,		max,\
		SLIDER_Level,		level,\
		GA_ID,			id,\
	EndObject

#define VertSlider(label,min,max,level,id)\
	SliderObject,\
		LAB_Label,		label,\
		SLIDER_Min,		min,\
		SLIDER_Max,		max,\
		SLIDER_Level,		level,\
		PGA_Freedom,		FREEVERT,\
		GA_ID,			id,\
	EndObject

#define KeyHorizSlider(label,min,max,level,id)\
	SliderObject,\
		LAB_Label,		label,\
		LAB_Underscore,         '_',\
		SLIDER_Min,		min,\
		SLIDER_Max,		max,\
		SLIDER_Level,		level,\
		GA_ID,			id,\
	EndObject

#define KeyVertSlider(label,min,max,level,id)\
	SliderObject,\
		LAB_Label,		label,\
		LAB_Underscore,         '_',\
		SLIDER_Min,		min,\
		SLIDER_Max,		max,\
		SLIDER_Level,		level,\
		PGA_Freedom,		FREEVERT,\
		GA_ID,			id,\
	EndObject

/*****************************************************************************
 *
 *	"Quick" mx creation macros.
 */
#define RightMx(label,labels,active,id)\
	MxObject,\
		GROUP_Style,		GRSTYLE_VERTICAL,\
		LAB_Label,		label,\
		MX_Labels,		labels,\
		MX_Active,		active,\
		GA_ID,			id,\
	EndObject, FixMinSize

#define LeftMx(label,labels,active,id)\
	MxObject,\
		GROUP_Style,		GRSTYLE_VERTICAL,\
		LAB_Label,		label,\
		MX_Labels,		labels,\
		MX_Active,		active,\
		MX_LabelPlace,		PLACE_LEFT,\
		GA_ID,			id,\
	EndObject, FixMinSize

#define RightMxKey(label,labels,active,id)\
	MxObject,\
		GROUP_Style,		GRSTYLE_VERTICAL,\
		LAB_Label,		label,\
		LAB_Underscore,         '_',\
		MX_Labels,		labels,\
		MX_Active,		active,\
		GA_ID,			id,\
	EndObject, FixMinSize

#define LeftMxKey(label,labels,active,id)\
	MxObject,\
		GROUP_Style,		GRSTYLE_VERTICAL,\
		LAB_Label,		label,\
		LAB_Underscore,         '_',\
		MX_Labels,		labels,\
		MX_Active,		active,\
		MX_LabelPlace,		PLACE_LEFT,\
		GA_ID,			id,\
	EndObject, FixMinSize

#define Tabs(label,labels,active,id)\
	MxObject,\
		MX_TabsObject,		TRUE,\
		LAB_Label,		label,\
		MX_Labels,		labels,\
		MX_Active,		active,\
		GA_ID,			id,\
	EndObject, FixMinHeight

#define TabsKey(label,labels,active,id)\
	MxObject,\
		MX_TabsObject,		TRUE,\
		LAB_Label,		label,\
		LAB_Underscore,         '_',\
		MX_Labels,		labels,\
		MX_Active,		active,\
		GA_ID,			id,\
	EndObject, FixMinHeight

#define TabsEqual(label,labels,active,id)\
	MxObject,\
		GROUP_EqualWidth,	TRUE,\
		MX_TabsObject,		TRUE,\
		LAB_Label,		label,\
		MX_Labels,		labels,\
		MX_Active,		active,\
		GA_ID,			id,\
	EndObject, FixMinHeight

#define TabsEqualKey(label,labels,active,id)\
	MxObject,\
		GROUP_EqualWidth,	TRUE,\
		MX_TabsObject,		TRUE,\
		LAB_Label,		label,\
		LAB_Underscore,         '_',\
		MX_Labels,		labels,\
		MX_Active,		active,\
		GA_ID,			id,\
	EndObject, FixMinHeight

#define USDTabs(label,labels,active,id)\
	MxObject,\
		MX_TabsObject,		TRUE,\
		LAB_Label,		label,\
		MX_Labels,		labels,\
		MX_Active,		active,\
		MX_TabsUpsideDown,	TRUE,\
		GA_ID,			id,\
	EndObject, FixMinHeight

#define USDTabsKey(label,labels,active,id)\
	MxObject,\
		MX_TabsObject,		TRUE,\
		LAB_Label,		label,\
		LAB_Underscore,         '_',\
		MX_Labels,		labels,\
		MX_Active,		active,\
		MX_TabsUpsideDown,	TRUE,\
		GA_ID,			id,\
	EndObject, FixMinHeight

#define USDTabsEqual(label,labels,active,id)\
	MxObject,\
		GROUP_EqualWidth,	TRUE,\
		MX_TabsObject,		TRUE,\
		LAB_Label,		label,\
		MX_Labels,		labels,\
		MX_Active,		active,\
		MX_TabsUpsideDown,	TRUE,\
		GA_ID,			id,\
	EndObject, FixMinHeight

#define USDTabsEqualKey(label,labels,active,id)\
	MxObject,\
		GROUP_EqualWidth,	TRUE,\
		MX_TabsObject,		TRUE,\
		LAB_Label,		label,\
		LAB_Underscore,         '_',\
		MX_Labels,		labels,\
		MX_Active,		active,\
		MX_TabsUpsideDown,	TRUE,\
		GA_ID,			id,\
	EndObject, FixMinHeight

/*****************************************************************************
 *
 *	"Quick" listview creation macros.
 */
#define StrListview(label,strings,id)\
	ListviewObject,\
		LAB_Label,		label,\
		GA_ID,			id,\
		LISTV_EntryArray,	strings,\
	EndObject

#define StrListviewSorted(label,strings,id)\
	ListviewObject,\
		LAB_Label,		label,\
		GA_ID,			id,\
		LISTV_EntryArray,	strings,\
		LISTV_SortEntryArray,	TRUE,\
	EndObject

#define ReadStrListview(label,strings)\
	ListviewObject,\
		LAB_Label,		label,\
		LISTV_EntryArray,	strings,\
		LISTV_ReadOnly,         TRUE,\
	EndObject

#define ReadStrListviewSorted(label,strings)\
	ListviewObject,\
		LAB_Label,		label,\
		LISTV_EntryArray,	strings,\
		LISTV_SortEntryArray,	TRUE,\
		LISTV_ReadOnly,         TRUE,\
	EndObject

#define MultiStrListview(label,strings,id)\
	ListviewObject,\
		LAB_Label,		label,\
		GA_ID,			id,\
		LISTV_EntryArray,	strings,\
		LISTV_MultiSelect,	TRUE,\
	EndObject

#define MultiStrListviewSorted(label,strings,id)\
	ListviewObject,\
		LAB_Label,		label,\
		GA_ID,			id,\
		LISTV_EntryArray,	strings,\
		LISTV_SortEntryArray,	TRUE,\
		LISTV_MultiSelect,	TRUE,\
	EndObject

/*****************************************************************************
 *
 *	"Quick" separator bar creation macros.
 */
#define VertSeparator\
	SeperatorObject,\
	EndObject, FixMinWidth

#define VertThinSeparator\
	SeperatorObject,\
		SEP_Thin,		TRUE,\
	EndObject, FixMinWidth

#define HorizSeparator\
	SeperatorObject,\
		SEP_Horiz,		TRUE,\
	EndObject, FixMinHeight

#define TitleSeparator(t)\
	SeperatorObject,\
		SEP_Horiz,		TRUE,\
		SEP_Title,		t,\
	EndObject, FixMinHeight

#define HTitleSeparator(t)\
	SeperatorObject,\
		SEP_Horiz,		TRUE,\
		SEP_Title,		t,\
		SEP_Highlight,		TRUE,\
	EndObject, FixMinHeight

#define CTitleSeparator(t)\
	SeperatorObject,\
		SEP_Horiz,		TRUE,\
		SEP_Title,		t,\
		SEP_CenterTitle,	TRUE,\
	EndObject, FixMinHeight

#define CHTitleSeparator(t)\
	SeperatorObject,\
		SEP_Horiz,		TRUE,\
		SEP_Title,		t,\
		SEP_Highlight,		TRUE,\
		SEP_CenterTitle,	TRUE,\
	EndObject, FixMinHeight

#define TitleSeparatorLeft(t)\
	SeperatorObject,\
		SEP_Horiz,		TRUE,\
		SEP_Title,		t,\
		SEP_TitleLeft,		TRUE,\
	EndObject, FixMinHeight

#define HTitleSeparatorLeft(t)\
	SeperatorObject,\
		SEP_Horiz,		TRUE,\
		SEP_Title,		t,\
		SEP_Highlight,		TRUE,\
		SEP_TitleLeft,		TRUE,\
	EndObject, FixMinHeight

#define CTitleSeparatorLeft(t)\
	SeperatorObject,\
		SEP_Horiz,		TRUE,\
		SEP_Title,		t,\
		SEP_CenterTitle,	TRUE,\
		SEP_TitleLeft,		TRUE,\
	EndObject, FixMinHeight

#define CHTitleSeparatorLeft(t)\
	SeperatorObject,\
		SEP_Horiz,		TRUE,\
		SEP_Title,		t,\
		SEP_Highlight,		TRUE,\
		SEP_CenterTitle,	TRUE,\
		SEP_TitleLeft,		TRUE,\
	EndObject, FixMinHeight

/* Typos */
#define VertSeperator		VertSeparator
#define VertThinSeperator	VertThinSeparator
#define HorizSeperator		HorizSeparator
#define TitleSeperator		TitleSeparator
#define HTitleSeperator         HTitleSeparator
#define CTitleSeperator         CTitleSeparator
#define CHTitleSeperator	CHTitleSeparator

/*****************************************************************************
 *
 *	Some simple menu macros.
 */
#define Title(t)\
	{ NM_TITLE, t, NULL, 0, 0, NULL }
#define Item(t,s,i)\
	{ NM_ITEM, t, s, 0, 0, (APTR)i }
#define ItemBar\
	{ NM_ITEM, NM_BARLABEL, NULL, 0, 0, NULL }
#define SubItem(t,s,i)\
	{ NM_SUB, t, s, 0, 0, (APTR)i }
#define SubBar\
	{ NM_SUB, NM_BARLABEL, NULL, 0, 0, NULL }
#define End\
	{ NM_END, NULL, NULL, 0, 0, NULL }

/*****************************************************************************
 *
 *	Base class method macros.
 */
#define AddMap(object,target,map)\
	DoMethod( object, BASE_ADDMAP, target, map )

#define AddCondit(object,target,ttag,tdat,ftag,fdat,stag,sdat)\
	DoMethod( object, BASE_ADDCONDITIONAL, target,\
		  ttag, tdat,\
		  ftag, fdat,\
		  stag, sdat )

#define AddHook(object,hook)\
	DoMethod( object, BASE_ADDHOOK, hook )

#define RemMap(object,target)\
	DoMethod( object, BASE_REMMAP, target )

#define RemCondit(object,target)\
	DoMethod( object, BASE_REMCONDITIONAL, target )

#define RemHook( object,hook)\
	DoMethod( object, BASE_REMHOOK, hook )

/*****************************************************************************
 *
 *	Listview class method macros.
 */
#define AddEntry(window,object,entry,how)\
	BGUI_DoGadgetMethod( object, window, NULL, LVM_ADDSINGLE,\
			     NULL, entry, how, 0L )

#define AddEntryVisible(window,object,entry,how)\
	BGUI_DoGadgetMethod( object, window, NULL, LVM_ADDSINGLE,\
			     NULL, entry, how, LVASF_MAKEVISIBLE )

#define AddEntrySelect(window,object,entry,how)\
	BGUI_DoGadgetMethod( object, window, NULL, LVM_ADDSINGLE,\
			     NULL, entry, how, LVASF_SELECT )

#define InsertEntry(window,object,entry,where)\
	BGUI_DoGadgetMethod( object, window, NULL, LVM_INSERTSINGLE,\
			     NULL, where, entry, 0L )

#define InsertEntryVisible(window,object,entry,where)\
	BGUI_DoGadgetMethod( object, window, NULL, LVM_INSERTSINGLE,\
			     NULL, where, entry, LVASF_MAKEVISIBLE )

#define InsertEntrySelect(window,object,entry,where)\
	BGUI_DoGadgetMethod( object, window, NULL, LVM_INSERTSINGLE,\
			     NULL, where, entry, LVASF_SELECT )

#define ClearList(window,object)\
	BGUI_DoGadgetMethod( object, window, NULL, LVM_CLEAR, NULL )

#define FirstEntry(object)\
	DoMethod( object, LVM_FIRSTENTRY, NULL, 0L )

#define FirstSelected(object)\
	DoMethod( object, LVM_FIRSTENTRY, NULL, LVGEF_SELECTED )

#define LastEntry(object)\
	DoMethod( object, LVM_LASTENTRY, NULL, 0L )

#define LastSelected(object)\
	DoMethod( object, LVM_LASTENTRY, NULL, LVGEF_SELECTED )

#define NextEntry(object,last)\
	DoMethod( object, LVM_NEXTENTRY, last, 0L )

#define NextSelected(object,last)\
	DoMethod( object, LVM_NEXTENTRY, last, LVGEF_SELECTED )

#define PrevEntry(object,last)\
	DoMethod( object, LVM_PREVENTRY, last, 0L )

#define PrevSelected(object,last)\
	DoMethod( object, LVM_PREVENTRY, last, LVGEF_SELECTED )

#define RemoveEntry(object,entry)\
	DoMethod( object, LVM_REMENTRY, NULL, entry )

#define RemoveEntryVisible(window,object,entry)\
	BGUI_DoGadgetMethod( object, window, NULL, LVM_REMENTRY, NULL, entry )

#define RefreshList(window,object)\
	BGUI_DoGadgetMethod( object, window, NULL, LVM_REFRESH, NULL )

#define RedrawList(window,object)\
	BGUI_DoGadgetMethod( object, window, NULL, LVM_REDRAW, NULL )

#define SortList(window,object)\
	BGUI_DoGadgetMethod( object, window, NULL, LVM_SORT, NULL )

#define LockList(object)\
	DoMethod( object, LVM_LOCKLIST, NULL )

#define UnlockList(window,object)\
	BGUI_DoGadgetMethod( object, window, NULL, LVM_UNLOCKLIST, NULL )

#define MoveEntry(window,object,entry,dir)\
	BGUI_DoGadgetMethod( object, window, NULL, LVM_MOVE, NULL,\
			     entry, dir )

#define MoveSelectedEntry(window,object,dir)\
	BGUI_DoGadgetMethod( object, window, NULL, LVM_MOVE, NULL,\
			     NULL, dir )

#define ReplaceEntry(window,object,old,new)\
	BGUI_DoGadgetMethod( object, window, NULL, LVM_REPLACE, NULL,\
			     old, new )

#define RemoveSelected(window,object)\
	BGUI_DoGadgetMethod( object, window, NULL, LVM_REMSELECTED, NULL )

/*****************************************************************************
 *
 *	Window class method macros.
 */
#define GadgetKey(wobj,gobj,key)\
	DoMethod( wobj, WM_GADGETKEY, NULL, gobj, key )

#define WindowOpen(wobj)\
	( struct Window * )DoMethod( wobj, WM_OPEN )

#define WindowClose(wobj)\
	DoMethod( wobj, WM_CLOSE )

#define WindowBusy(wobj)\
	DoMethod( wobj, WM_SLEEP )

#define WindowReady(wobj)\
	DoMethod( wobj, WM_WAKEUP )

#define HandleEvent(wobj)\
	DoMethod( wobj, WM_HANDLEIDCMP )

#define DisableMenu(wobj,id,set)\
	DoMethod( wobj, WM_DISABLEMENU, id, set )

#define CheckItem(wobj,id,set)\
	DoMethod( wobj, WM_CHECKITEM, id, set )

#define MenuDisabled(wobj,id)\
	DoMethod( wobj, WM_MENUDISABLED, id )

#define ItemChecked(wobj,id)\
	DoMethod( wobj, WM_ITEMCHECKED, id )

#define GetAppMsg(wobj)\
	( struct AppMessage * )DoMethod( wobj, WM_GETAPPMSG )

#define AddUpdate(wobj,id,target,map)\
	DoMethod( wobj, WM_ADDUPDATE, id, target, map )

#define GetSignalWindow(wobj)\
	( struct Window * )DoMethod( wobj, WM_GET_SIGNAL_WINDOW )

/*****************************************************************************
 *
 *	Commodity class method macros.
 */
#define AddHotkey(broker,desc,id,flags)\
	DoMethod( broker, CM_ADDHOTKEY, desc, id, flags )

#define RemHotkey(broker,id)\
	DoMethod( broker, CM_REMHOTKEY, id )

#define DisableHotkey(broker,id)\
	DoMethod( broker, CM_DISABLEHOTKEY, id )

#define EnableHotKey(broker,id)\
	DoMethod( broker, CM_ENABLEHOTKEY, id )

#define EnableBroker(broker)\
	DoMethod( broker, CM_ENABLEBROKER )

#define DisableBroker(broker)\
	DoMethod( broker, CM_DISABLEBROKER )

#define MsgInfo(broker,type,id,data)\
	DoMethod( broker, CM_MSGINFO,\
		  ( ULONG * )type,\
		  ( ULONG * )id,\
		  ( ULONG * )data )

/*****************************************************************************
 *
 *	FileReq class method macros.
 */
#define DoRequest(object)\
	DoMethod( object, FRM_DOREQUEST )

#endif /* LIBRARIES_BGUI_MACROS_H */
