שתשת                                        	incdir	"include:"
	include	"exec/execbase.i"
	include	"libraries/gadtools.i"
	include	"libraries/gadutil.i"
	include	"libraries/gadutil_lib.i"
	include	"LVOs.i"
	include	"gadutil_20to30comp.i"

start:
	move.l	_AbsExecBase.w,a6
	lea.l	libdatas(pc),a2		; Open all needed libraries
	move.w	(a2)+,d2
.openlib:
	move.l	(a2),a1			; Get library name pointer
	moveq.l	#36,d0
	CallLib	OpenLibrary
	move.l	d0,(a2)+		; Save base address
	dbeq	d2,.openlib		; Continue until done or error
	beq.s	.closelibs

	bsr.w	TestProgram

.closelibs:
	lea.l	libdatas(pc),a2		; Close all opened libraries
	move.w	(a2)+,d2
.closelib:
	move.l	(a2)+,d0		; Get base address for library
	beq.s	.closedone
	move.l	d0,a1
	CallLib	CloseLibrary
	dbra	d2,.closelib
.closedone:
	moveq.l	#0,d0
	rts

;----------------------------- library data ----------------------------------
libdatas:	dc.w	5-1

dosbase:	dc.l	dosname
GUtilBase:	dc.l	gadutilname
GfxBase:	dc.l	gfxname
IntuiBase:	dc.l	intuiname
UtilBase:	dc.l	utilname

dosname:	dc.b	'dos.library',0
gadutilname:	dc.b	'gadutil.library',0
gfxname:	dc.b	'graphics.library',0
intuiname:	dc.b	'intuition.library',0
utilname:	dc.b	'utility.library',0
	even

;------------------------------ The test program -----------------------------
TestProgram:
	movem.l	d0-a6,-(sp)
	move.l	LibList(a6),LVGTTags+4 ; Set list pointer for ListView gadget
	move.l	GUtilBase(pc),a6

	move.l	a6,a0			; Check for latest version of GadUtil
	moveq.l	#GADUTIL_VER,d0
	moveq.l	#GADUTIL_REV,d1
	CallLib	GU_CheckVersion
	beq.w	.wrongver
.verok:	
	lea.l	catalogname(pc),a0	; Open the catalog to use
	moveq.l	#0,d0
	CallLib	GU_OpenCatalog
	move.l	d0,catalog

	lea.l	mybss,a5		; Get pointer to BSS
	suba.l	a0,a0			; Lock the default public screen
	CallLib	LockPubScreen,IntuiBase(pc)
	move.l	d0,screen(a5)
	beq.w	.noscreen

	lea.l	glist(pc),a0		; Pointer to gadget list pointer
	lea.l	gadgets(pc),a1		; LayoutGadget structures
	move.l	d0,a2			; Screen pointer
	lea.l	LayoutTags(pc),a3	; Tags for LayoutGadgetsA

	move.l	sc_Font(a2),textattr	; Use the screen's font
	move.l	GUtilBase(pc),a6
	CallLib	GU_LayoutGadgetsA	; Lay out the gadgets
	move.l	a0,priv_info(a5)	; Save pointer to PrivateInfo
	beq.w	.unlocksc

	lea.l	window_tags(pc),a1	; Get window tags

	move.l	screen(a5),a0		; WA_Top = screen->Font->ta_YSize + 3
	move.l	sc_Font(a0),a0
	moveq.l	#0,d0
	move.w	ta_YSize(a0),d0
	addq.w	#3,d0
	move.l	d0,WinTop(a1)
	
	move.l	farright(pc),d0		; WA_InnerWidth = farright+LEFT_OFFSET
	addq.l	#LEFT_OFFSET,d0
	move.l	d0,InnerWidth(a1)

	move.l	farbottom(pc),d0	; WA_InnerHeight = farbotton+TOP_OFFSET
	addq.l	#TOP_OFFSET,d0
	move.l	d0,InnerHeight(a1)

	suba.l	a0,a0			; Open the window
	CallLib	OpenWindowTagList,IntuiBase(pc)
	move.l	d0,main_win(a5)
	beq.s	.freegads		; Error opening the window

	move.l	d0,a0			; Refresh everything in the window
	suba.l	a1,a1
	CallLib	GU_RefreshWindow,GUtilBase(pc)

	lea.l	MyNewMenu(pc),a0	; Create menu structure
	move.l	priv_info(a5),a1
	suba.l	a2,a2
	lea.l	layoutmenutags(pc),a3	
	CallLib	GU_CreateLocMenuA
	move.l	d0,menustrip(a5)
	beq.s	.closewin

	move.l	d0,a1			; Attach the menus to the window
	move.l	IntuiBase(pc),a6
	move.l	main_win(a5),a0
	CallLib	SetMenuStrip
	tst.l	d0
	beq.s	.freemenus

	move.l	main_win(a5),a0
	bsr.w	process_window_events	; Wait for and process all events
	
;------------------------------- Exit routines -------------------------------
.clearmenus:
	move.l	IntuiBase(pc),a6
	CallLib	ClearMenuStrip
.freemenus:
	move.l	GUtilBase(pc),a6
	move.l	menustrip(a5),a0
	CallLib	GU_FreeMenus
.closewin:
	move.l	main_win(a5),a0
	CallLib	CloseWindow,IntuiBase(pc)	
.freegads:
	move.l	priv_info(a5),a0	; Free all gadgets
	move.l	GUtilBase(pc),a6
	CallLib	GU_FreeLayoutGadgets
.unlocksc:
	suba.l	a0,a0			; No name pointer
	move.l	screen(a5),a1		; Pointer to the locked screen
	CallLib	UnlockPubScreen,IntuiBase(pc)
.noscreen:
	move.l	catalog(pc),a0		; Close the opened catalog
	CallLib	GU_CloseCatalog,GUtilBase(pc)
.wrongver:
	movem.l	(sp)+,d0-a6
	rts

;------------------ Wait for and process window events -----------------------
; Inputs: A0 - Window pointer
;
process_window_events:
	movem.l	d0-a6,-(sp)
.WaitEvent:
	move.l	_AbsExecBase.w,a6
	move.l	32(sp),a0		; Get pointer to window
	move.l	wd_UserPort(a0),a0	; Get UserPort
	CallLib	WaitPort		; Wait for a message
.GetEvent:
	move.l	32(sp),a0		; Get window pointer
	bsr.w	GetIMessage		; Get the message and process REFRESH
	bmi.s	.GetEvent		; Get next event if IDCMP_REFRESHWIN
	beq.s	.WaitEvent		; Continue waiting if no message

.checkgadup:
	cmp.l	#IDCMP_GADGETUP,d3	; Any gadget released ?
	bne.w	.CheckGadDown		; Nope! Check for gadget down messages
	move.w	gg_GadgetID(a2),d1	; Get GadgetID
	bchg	#1,$bfe001
	cmp.w	#MSG_NEXTDRIVE,d1	; Button 1 pressed ?
	bne.s	.CheckButton2		; Nope! Check more gadgets

	moveq.l	#DRIVE_MX_GAD,d0	; Find MX gadget
	lea.l	gadgets(pc),a0
	CallLib	GU_GetGadgetPtr,GUtilBase(pc)
	beq.s	.GetEvent		; Gadget not found

	move.l	d0,a0			; Gadget to change
	move.l	32(sp),a1		; Window pointer
	suba.l	a2,a2
	lea.l	act(pc),a3		; Tags
	move.l	4(a3),d0		; Get current active entry
	addq.l	#1,d0			; Add one
	cmp.l	#3,d0			; Check for max value
	bls.s	.HighOk
	moveq.l	#0,d0			; Activate first if too high value
.HighOk:
	move.l	d0,4(a3)
	CallLib	GU_SetGadgetAttrsA

	bra.b	.GetEvent		; Get next event

.CheckButton2:
	cmp.w	#MSG_PREVDRIVE,d1	; Button 2 pressed ?
	bne.s	.CheckButton3

	moveq.l	#DRIVE_MX_GAD,d0	; Find MX gadget
	lea.l	gadgets(pc),a0
	CallLib	GU_GetGadgetPtr,GUtilBase(pc)
	beq.s	.GetEvent		; Gadget not found

	move.l	d0,a0			; Gadget to change
	move.l	32(sp),a1		; Window pointer
	suba.l	a2,a2
	lea.l	act(pc),a3		; Tags
	move.l	4(a3),d0		; Get current active entry
	subq.l	#1,d0			; Subtract one
	bpl.s	.LowOk			; Ok if 0 or greater
	moveq.l	#3,d0			; Too low - use largest possible value
.LowOk:
	move.l	d0,4(a3)
	CallLib	GU_SetGadgetAttrsA

	bra.w	.GetEvent

.CheckButton3:
	cmp.w	#MSG_REQUESTER,d1	; Button 3 pressed ?
	bne.s	.CheckButton4

	move.l	32(sp),a0		; Block input of main window
	CallLib	GU_BlockInput,GUtilBase(pc)

	moveq.l	#50,d1
	CallLib	Delay,dosbase(pc)

	move.l	32(sp),a0		; Unblock input of main window
	CallLib	GU_FreeInput,GUtilBase(pc)

	bra.w	.GetEvent

.CheckButton4:
	cmp.w	#MSG_DRIVE,d1		; Button 4 pressed ?
	bne.w	.GetEvent
	bchg	#1,$bfe001
	bra.w	.GetEvent	

.CheckGadDown:
	cmp.l	#IDCMP_GADGETDOWN,d3	; Check for GADGETDOWN message
	bne.s	.CheckMouse
	cmp.w	#DRIVE_MX_GAD,gg_GadgetID(a2)	; MX gadget pressed ?
	bne.w	.GetEvent
	move.l	d2,act+4		; Save new active entry number
	bra.w	.GetEvent		; Get next event

.CheckMouse:
	cmp.l	#IDCMP_MOUSEMOVE,d3
	bne.s	.CheckMenu
	moveq.l	#MSG_SELECTITEM,d0
	lea.l	gadgets(pc),a0
	CallLib	GU_GetGadgetPtr,GUtilBase(pc)
	beq.w	.GetEvent

	move.l	d0,a0			; Gadget to check for
	move.l	msgcoords(a5),d0	; Coordinates to check against
	CallLib	GU_CoordsInGadBox
	beq.w	.GetEvent		; Coordinates not in box
	
	bchg	#1,$bfe001		; Toggle LED
	bra.w	.GetEvent

.CheckMenu:
	cmp.l	#IDCMP_MENUPICK,d3
	bne.s	.CheckClose
.checkitem:
	move.w	d2,d0			; Packed menu number to D0
	move.l	menustrip(a5),a0	; Menustrip address
	move.l	IntuiBase(pc),a6
	CallLib	ItemAddress,IntuiBase(pc) ; Get address of this menu item
	tst.l	d0
	beq.w	.GetEvent
	move.l	d0,a0			; Save it for return
	move.l	mi_SIZEOF(a0),d0	; MenuItem->UserData
	cmp.l	#5,d0			; Check for QUIT item
	beq.s	.Exit
	move.w	mi_NextSelect(a0),d2	; Get next packed menu number
	bra.s	.checkitem		; Process all menu messages
	
.CheckClose:
	cmp.l	#IDCMP_CLOSEWINDOW,d3	; Close gadget pressed ?
	bne.w	.GetEvent		; Nope! Get next message
.Exit
	movem.l	(sp)+,d0-a6
	rts

;---------------------- Get a message from the window ------------------------
; Input:
;	A0 = pointer to window
; Output:
;	A2 = Message IAddress
;	D2 = Message Code
;	D3 = Message Class
; Flags:
;	 Z =  1 for no message (use BEQ)
;	 Z =  0 for a valid message other than IDCMP_REFRESHWINDOW
;	 N =  1 for a IDCMP_REFRESHWINDOW message (use BMI)
;
;------------------------------------------------------------------------------
GetIMessage:
	move.l	a0,-(sp)		; Save window pointer
	move.l	wd_UserPort(a0),a0	; Get UserPort

	CallLib	GU_GetIMsg,GUtilBase(pc)
	beq.s	.NoMessage		; No message - return
	move.l	d0,a1
	move.l	im_IAddress(a1),a2	; IAddress to A2
	moveq.l	#0,d2			; Clear code longword
	move.w	im_Code(a1),d2		; Code to D2
	move.l	im_Class(a1),d3		; Class to D3
	move.l	im_MouseX(a1),msgcoords(a5)
	CallLib	GU_ReplyIMsg		; Reply the message

	cmp.l	#IDCMP_REFRESHWINDOW,d3	; Do window need to be refreshed ?
	bne.b	.NoMessage		; Nope! Check next message!
	move.l	(sp),a0
	CallLib	GU_BeginRefresh		; Start refreshing window
	move.l	(sp),a0
	moveq.l	#TRUE,d0
	CallLib	GU_EndRefresh		; Refreshing done
	moveq.l	#-1,d0			; Set N flag
.NoMessage:
	move.l	(sp)+,a0
	rts

;------------------------ Datas for LayoutGadgetsA ---------------------------
LayoutTags:
	dc.l	GU_RightExtreme,	farright
	dc.l	GU_LowerExtreme,	farbottom
	dc.l	GU_MinimumIDCMP,	MinimumIDCMP
ta:	dc.l	GU_DefTextAttr,		0
cat:	dc.l	GU_Catalog,		0
	dc.l	GU_AppStrings,		AppStrings
	dc.l	TAG_DONE

textattr:	equ	ta+4	
catalog:	equ	cat+4

farright:	dc.l	0
farbottom:	dc.l	0

;------------------ Data for localizing of the program -----------------------

DRIVE_MX_GAD:	equ	11

MSG_NEXTDRIVE:	equ	0
MSG_PREVDRIVE:	equ	1
MSG_DRIVE:	equ	2
MSG_CHECKME:	equ	3
MSG_REQUESTER:	equ	4
MSG_FILENAME:	equ	5
MSG_INTEGER:	equ	6
MSG_DRAGME:	equ	7
MSG_SCROLLME:	equ	8
MSG_SELECTITEM:	equ	9
MSG_SELECTCOL:	equ	10

MNU_1_TITLE:	equ	100
MNI_1_IT1:	equ	101
MNI_1_IT2:	equ	102
MNI_1_IT3:	equ	103
MNS_1_IT3_1:	equ	104
MNS_1_IT3_2:	equ	105
MNI_1_IT4:	equ	106

AppStrings:
	dc.l	MSG_NEXTDRIVE,	MSG_NEXTDRIVE_STR
	dc.l	MSG_PREVDRIVE,	MSG_PREVDRIVE_STR
	dc.l	MSG_DRIVE,	MSG_DRIVE_STR
	dc.l	MSG_CHECKME,	MSG_CHECKME_STR
	dc.l	MSG_REQUESTER,	MSG_REQUESTER_STR
	dc.l	MSG_FILENAME,	MSG_FILENAME_STR
	dc.l	MSG_INTEGER,	MSG_INTEGER_STR
	dc.l	MSG_DRAGME,	MSG_DRAGME_STR
	dc.l	MSG_SCROLLME,	MSG_SCROLLME_STR
	dc.l	MSG_SELECTITEM,	MSG_SELECTITEM_STR
	dc.l	MSG_SELECTCOL,	MSG_SELECTCOL_STR
	dc.l	MNU_1_TITLE,	MNU_1_TITLE_STR
	dc.l	MNI_1_IT1,	MNI_1_IT1_STR
	dc.l	MNI_1_IT2,	MNI_1_IT2_STR
	dc.l	MNI_1_IT3,	MNI_1_IT3_STR
	dc.l	MNS_1_IT3_1,	MNS_1_IT3_1_STR
	dc.l	MNS_1_IT3_2,	MNS_1_IT3_2_STR
	dc.l	MNI_1_IT4,	MNI_1_IT4_STR

MSG_NEXTDRIVE_STR:	dc.b	'_Next drive',0
MSG_PREVDRIVE_STR:	dc.b	'_Prev drive',0
MSG_DRIVE_STR:		dc.b	'_Drive',0
MSG_CHECKME_STR:	dc.b	'C_heck me:',0
MSG_REQUESTER_STR:	dc.b	'_Requester',0
MSG_FILENAME_STR:	dc.b	'_Filename:',0
MSG_INTEGER_STR:	dc.b	'_Integer:',0
MSG_DRAGME_STR:		dc.b	'Dra_g me:',0
MSG_SCROLLME_STR:	dc.b	'Scr_oll me:',0
MSG_SELECTITEM_STR:	dc.b	'_Select an item:',0
MSG_SELECTCOL_STR:	dc.b	'Select _Color:',0

MNU_1_TITLE_STR:	dc.b	' ',$00,'Project',0
MNI_1_IT1_STR:		dc.b	'O',$00,'Open...',0
MNI_1_IT2_STR:		dc.b	'S',$00,'Save',0
MNI_1_IT3_STR:		dc.b	' ',$00,'Print',0
MNS_1_IT3_1_STR:	dc.b	' ',$00,'Draft',0
MNS_1_IT3_2_STR:	dc.b	' ',$00,'NLQ',0
MNI_1_IT4_STR:		dc.b	'Q',$00,'Quit',0

catalogname:	dc.b	'BetterTest.catalog',0
	even

;------------------------------- Window datas --------------------------------

INTUIIDCMP:	equ	IDCMP_REFRESHWINDOW!IDCMP_CLOSEWINDOW!IDCMP_MENUPICK

WINGADS:	equ	WFLG_DRAGBAR!WFLG_DEPTHGADGET!WFLG_CLOSEGADGET

window_tags:
	dc.l	WA_Left,	0,	WA_Top
WinTop:	equ	*-window_tags
	dc.l	0,		WA_InnerWidth
InnerWidth:EQU	*-window_tags
	dc.l	0,		WA_InnerHeight
InnerHeight:EQU	*-window_tags
	dc.l	0,		WA_IDCMP,INTUIIDCMP
MinimumIDCMP:	equ	*-4
	dc.l	WA_Flags,	WINGADS!WFLG_ACTIVATE!WFLG_SMART_REFRESH!WFLG_REPORTMOUSE
	dc.l	WA_NewLookMenus,	TRUE
	dc.l	WA_Gadgets
glist:	dc.l	0
	dc.l	WA_Title,WinTitle
emptytag:
	dc.l	TAG_DONE

layoutmenutags:
	dc.l	GTMN_NewLookMenus,	TRUE,	TAG_DONE
	
WinTitle:	dc.b	"GadUtil library test",0
	even

;----------------------------- Gadget datas ----------------------------------
LEFT_OFFSET:	equ	6
TOP_OFFSET:	equ	3

StdGTTags:
	dc.l	GT_Underscore,	'_',		TAG_DONE
	
NextDriveGad:
	dc.l	GU_GadgetKind,	BUTTON_KIND,	GU_LocaleText,	MSG_NEXTDRIVE
	dc.l	GU_Left,	LEFT_OFFSET,	GU_Top,		TOP_OFFSET
	dc.l	GU_AutoHeight,	4,		GU_AutoWidth,	20
StdButtonTags:
	dc.l	GU_Flags,	PLACETEXT_IN
StdGadTags:
	dc.l	GU_LabelHotkey,	TRUE
	dc.l	TAG_DONE

PrevDriveGad:
	dc.l	GU_GadgetKind,	BUTTON_KIND,	GU_LocaleText,	MSG_PREVDRIVE
	dc.l	GU_DupeWidth,	MSG_NEXTDRIVE,	GU_LeftRel,	MSG_NEXTDRIVE
	dc.l	GU_AddLeft,	INTERWIDTH
	dc.l	TAG_MORE,	StdButtonTags	

DriveGad:
	dc.l	GU_GadgetKind,	CYCLE_KIND,	GU_LocaleText,	MSG_DRIVE
	dc.l	GU_TopRel,	MSG_PREVDRIVE
	dc.l	GU_AddTop,	INTERHEIGHT,	GU_Flags,	PLACETEXT_LEFT
	dc.l	TAG_MORE,	StdGadTags

DriveGTTags:
	dc.l	GTCY_Labels,	CycleText,	TAG_MORE,	StdGTTags

ReqGad:
	dc.l	GU_GadgetKind,	BUTTON_KIND,	GU_LocaleText,	MSG_REQUESTER
	dc.l	GU_TopRel,	MSG_DRIVE,	GU_AddTop,	INTERHEIGHT
	dc.l	TAG_MORE,	StdButtonTags

CheckBoxGad:
	dc.l	GU_Width,	CHECKBOX_WIDTH,	GU_Height,	CHECKBOX_HEIGHT
	dc.l	GU_GadgetKind,	CHECKBOX_KIND,	GU_LocaleText,	MSG_CHECKME
	dc.l	GU_AlignRight,	MSG_NEXTDRIVE,	GU_Flags,	PLACETEXT_LEFT
	dc.l	TAG_MORE,	StdGadTags
		
FileNameGad:
	dc.l	GU_GadgetKind,	STRING_KIND,	GU_TopRel,	MSG_REQUESTER
	dc.l	GU_LocaleText,	MSG_FILENAME,	GU_AutoHeight,	4
	dc.l	GU_AlignLeft,	MSG_CHECKME
	dc.l	GU_AddTop,	INTERHEIGHT,	GU_AlignRight,	DRIVE_MX_GAD
	dc.l	GU_AddWidth,	4,		TAG_MORE,	StdGadTags

IntegerGad:
	dc.l	GU_GadgetKind,	INTEGER_KIND,	GU_TopRel,	MSG_FILENAME
	dc.l	GU_LocaleText,	MSG_INTEGER,	GU_AddTop,	INTERHEIGHT
	dc.l	TAG_MORE,	StdGadTags

DriveMxGad:
	dc.l	GU_GadgetKind,	MX_KIND,	GU_AlignTop,	MSG_NEXTDRIVE
	dc.l	GU_Width,	MX_WIDTH,	GU_Height,	MX_HEIGHT
	dc.l	GU_AdjustTop,	2,		GU_Flags,	PLACETEXT_LEFT!NG_HIGHLABEL
	dc.l	GU_LeftRel,	MSG_PREVDRIVE,	GU_AddLeftChar, 7
	dc.l	GU_GadgetText,	MxText,		GU_LabelHotkey,	TRUE
	dc.l	TAG_DONE
	
MXGadGTTags:
	dc.l	GTMX_Labels,	CycleText,	GTMX_Spacing,	2
act:	dc.l	GTMX_Active,	2,		TAG_DONE
activemx:	equ	act+4

SliderGad:
	dc.l	GU_GadgetKind,	SLIDER_KIND,	GU_AlignLeft,	MSG_FILENAME
	dc.l	GU_AlignRight,	MSG_FILENAME,	GU_AutoHeight,	4
	dc.l	GU_TopRel,	MSG_INTEGER,	GU_AddTop,	INTERHEIGHT
	dc.l	GU_AddWidth,	-13,		GU_Flags,	PLACETEXT_LEFT
	dc.l	GU_LocaleText,	MSG_DRAGME,	TAG_MORE,	StdGadTags

SliderGTTags:
	dc.l	GTSL_Min,	-50,	GTSL_Max,	50
	dc.l	GTSL_Level,	10,	GTSL_MaxLevelLen,3
	dc.l	GTSL_LevelFormat,	sliderform
	dc.l	GTSL_LevelPlace,	PLACETEXT_RIGHT
	dc.l	TAG_MORE,	StdGTTags

ListViewGad:
	dc.l	GU_GadgetKind,	LISTVIEW_KIND,	GU_AlignTop,	MSG_DRIVE
	dc.l	GU_AlignBottom,	MSG_INTEGER,	GU_LocaleText,	MSG_SELECTITEM
	dc.l	GU_LeftRel,	MSG_INTEGER,	GU_Columns,	26
	dc.l	GU_Flags,	PLACETEXT_ABOVE!NG_HIGHLABEL
	dc.l	GU_AddLeft,	10
	dc.l	TAG_MORE,	StdGadTags

LVGTTags:
	dc.l	GTLV_Labels,	NULL,		GTLV_ShowSelected,	-1
	dc.l	TAG_MORE,	StdGTTags

ScrollGad:
	dc.l	GU_GadgetKind,	SCROLLER_KIND,	GU_LocaleText,	MSG_SCROLLME
	dc.l	GU_AlignLeft,	MSG_DRAGME,	GU_AlignRight,	MSG_INTEGER
	dc.l	GU_TopRel,	MSG_DRAGME,	GU_AddTop,	INTERHEIGHT
	dc.l	GU_Flags,	PLACETEXT_LEFT,	GU_AddWidth,	20
	dc.l	GU_DupeHeight,	MSG_DRAGME,	TAG_MORE,	StdGadTags

ScrollGTTags:
	dc.l	GTSC_Top,	110,		GTSC_Total,	9
	dc.l	GTSC_Visible,	5,		GTSC_Arrows,	16
	dc.l	TAG_MORE,	StdGTTags
	
PaletteGad:
	dc.l	GU_GadgetKind,	PALETTE_KIND,	GU_LocaleText,	MSG_SELECTCOL
	dc.l	GU_LeftRel,	MSG_SCROLLME,	GU_AddLeft,	INTERWIDTH
	dc.l	GU_Flags,	PLACETEXT_ABOVE!NG_HIGHLABEL
	dc.l	GU_TopRel,	MSG_SELECTITEM,	GU_AdjustTop,	INTERHEIGHT
	dc.l	GU_AlignBottom,	MSG_SCROLLME,	GU_AlignRight,	MSG_SELECTITEM
	dc.l	TAG_MORE,	StdGadTags

PaletteGTTags:
	dc.l	GTPA_Depth,	2,		GTPA_IndicatorWidth,	36
	dc.l	TAG_MORE,	StdGTTags
	
CycleText:	dc.l	CyText1,CyText2,CyText3,CyText4,0
CyText1:	dc.b	"DF0:",0
CyText2:	dc.b	"DF1:",0
CyText3:	dc.b	"DF2:",0
CyText4:	dc.b	"DF3:",0
MxText:		dc.b	"Driv_e",0
sliderform:	dc.b	"%3ld",0
	even

gadgets:	GADGET	MSG_NEXTDRIVE,	NextDriveGad,	StdGTTags
		GADGET	MSG_PREVDRIVE,	PrevDriveGad,	StdGTTags
		GADGET	MSG_DRIVE,	DriveGad,	DriveGTTags
		GADGET	MSG_REQUESTER,	ReqGad,		StdGTTags
		GADGET	MSG_CHECKME,	CheckBoxGad,	StdGTTags
		GADGET	MSG_FILENAME,	FileNameGad,	StdGTTags
		GADGET	MSG_INTEGER,	IntegerGad,	StdGTTags
		GADGET	DRIVE_MX_GAD,	DriveMxGad,	MXGadGTTags
		GADGET	MSG_DRAGME,	SliderGad,	SliderGTTags
		GADGET	MSG_SELECTITEM,	ListViewGad,	LVGTTags
		GADGET	MSG_SCROLLME,	ScrollGad,	ScrollGTTags
		GADGET	MSG_SELECTCOL,	PaletteGad,	PaletteGTTags
		GADGET	-1,NULL,NULL

;--------------------------------- Menus ----------------------------------

MyNewMenu:	
	LOCMENU	NM_TITLE, MNU_1_TITLE,	0,	0,	0	; | Project |
	LOCMENU	NM_ITEM,  MNI_1_IT1,	0,	0,	1	; Open [O]
	LOCMENU	NM_ITEM,  MNI_1_IT2,	0,	0,	2	; Save [S]
	LOCMENU	NM_ITEM,  NM_BARLABEL,	0,	0,	0	; -----------

	LOCMENU	NM_ITEM,  MNI_1_IT3,	0,	0,	0	; Print...
	LOCMENU	NM_SUB,	  MNS_1_IT3_1,	0,	0,	3	;       Draft
	LOCMENU	NM_SUB,	  MNS_1_IT3_2,	0,	0,	4	;       NLQ
	LOCMENU	NM_ITEM,  NM_BARLABEL,	0,	0,	0	; -----------
	LOCMENU	NM_ITEM,  MNI_1_IT4,	0,	0,	5	; Quit [Q]

	LOCMENU	NM_END,	  NULL,		0,	0,	0

;------------------------------- End of menu data ----------------------------

	STRUCTURE	MyBSS,0
		LONG	screen
		LONG	main_win
		LONG	priv_info
		LONG	menustrip
		LONG	msgcoords
	LABEL	MyBSS_SIZEOF

	SECTION	TestProg,BSS
mybss:	ds.b	MyBSS_SIZEOF
