;---------------T----------T-----------------------T
; AGAiff
;
; Last Change > 13.3.1994
; Include > presetswindow.s
; 13.3.1994	Window öffnet jetzt unter der Maus in der Mitte !

Gadget2		macro		; Gadget2 KIND,struct,tags
		moveq	#\1,d0
		lea	\2(pc),a1
		lea	\3(pc),a2
		bsr	mgsub2
		beq	pwnogadgets
		endm

OpenPresetsWindow
	tst.l	pwwindow-j(a5)
	bne.w	.already
	move.w	gad0+4(pc),d0
	addq.w	#8,d0
	move.w	d0,pwnewwindowtags+6-j(a5)
	move.w	gad0+6(pc),d0
	addq.w	#4,d0
	move.w	d0,pwnewwindowtags+14-j(a5)

	move.l	gadbase-j(a5),a6
	move.l	wbscreen(pc),a0
	sub.l	a1,a1
	LIBCALL	GetVisualInfoA
	move.l	d0,pwvisualinfo-j(a5)
	lea	pwglistpointer-j(a5),a0
	LIBCALL	CreateContext
	move.l	d0,pwgad-j(a5)
	beq	pwnocontext

	movem.w	gad0(pc),d0-d3
	movem.w	d0-d3,pwgad0-j(a5)
	move.w	gad0t+6(pc),pwgad0t+6-j(a5)

	Gadget2	LISTVIEW_KIND,pwgad0,pwgad0t
	move.l	d0,pwlvgadget-j(a5)

	move.l	intbase(pc),a6
	lea	pwnewwindow(pc),a0
	move.l	pwglistpointer(pc),nw_FirstGadget(a0)
	move.l	wbscreen(pc),a1
	move.w	18(a1),(a0)
	move.w	16(a1),2(a0)
	move.w	pwnewwindowtags+6(pc),d0
	move.w	pwnewwindowtags+14(pc),d1
	lsr.w	#1,d0
	lsr.w	#1,d1
	sub.w	d0,(a0)
	bpl.s	.0
	clr.w	(a0)
.0	sub.w	d1,2(a0)
	bpl.s	.1
	clr.w	2(a0)
.1	lea	pwnewwindowtags(pc),a1
	move.l	wbscreen(pc),nw_Screen(a0)
	LIBCALL	OpenWindowTagList
	move.l	d0,pwwindow-j(a5)
	beq	pwnowindow

	move.l	d0,a0
	move.l	wd_UserPort(a0),a0
	move.l	a0,pwwindowport-j(a5)
	move.b	MP_SIGBIT(a0),Signal.presetswin

	move.l	gadbase(pc),a6
	move.l	pwwindow(pc),a0
	sub.l	a1,a1
	LIBCALL	GT_RefreshWindow

	rts

.already	move.l	intbase(pc),a6
	move.l	pwwindow(pc),a0
	LIBCALL	WindowToFront
	move.l	pwwindow(pc),a0
	LIBCALL	ActivateWindow
	rts

mgsub2	move.l	pwgad-j(a5),a0
	move.l	#textattr,12(a1)
	move.l	pwvisualinfo-j(a5),22(a1)
	move.l	gadbase(pc),a6
	LIBCALL	CreateGadgetA
	move.l	d0,pwgad-j(a5)
	rts

pwwindow	dc.l	0
pwwindowport	dc.l	0
pwvisualinfo	dc.l	0
pwglistpointer	dc.l	0
pwgad	dc.l	0
pwlvgadget	dc.l	0

ClosePresetsWindow
	tst.l	pwwindow-j(a5)
	beq.s	pwalready
	move.l	intbase(pc),a6
	move.l	pwwindow(pc),a0
	LIBCALL	CloseWindow
	clr.l	pwwindow-j(a5)
	st	Signal.presetswin-j(a5)
pwnogadgets
pwnowindow	move.l	gadbase-j(a5),a6
	move.l	pwglistpointer(pc),a0
	LIBCALL	FreeGadgets
pwnocontext	move.l	gadbase-j(a5),a6
	move.l	pwvisualinfo-j(a5),a0
	LIBCALL	FreeVisualInfo
pwalready	rts

pwnewwindow	dc.w	0,0,0,0,1
	dc.l	LISTVIEWIDCMP!$200,$1100e
	dc.l	0,0,pwwindowname,0,0
	dc.w	0,0,-1,-1,15
pwnewwindowtags	dc.l	WA_InnerWidth,580
	dc.l	WA_InnerHeight,100
	dc.l	WA_AutoAdjust,1
	dc.l	TAG_DONE
pwwindowname	dc.b	"AGAiff Save Format Presets",0
	even

pwgad0	dc.w	0,0,0,0
	dc.l	0,0
	dc.w	0	;-> ID !! <-
	dc.l	0,0,0
pwgad0t	dc.l	GTLV_ScrollWidth,0
	dc.l	GTLV_Top,0
	dc.l	GTLV_Labels,PresetsList
	dc.l	GTLV_ShowSelected,0
	dc.l	GTLV_Selected,0
	dc.l	TAG_DONE

PresetsList	ds.b	MLH_SIZE

EvalPresetsWindowMessage
		move.l	gadbase(pc),a6
		move.l	pwwindowport(pc),a0
		LIBCALL	GT_GetIMsg
		tst.l	d0
		bne.s	.1
		rts
.1		move.l	d0,a1
		move.l	$14(a1),d4	;Class
		move.w	$18(a1),d5	;Code
		move.w	$1a(a1),d6	;Qualifier
		move.l	$1c(a1),a4	;IAddress
		LIBCALL	GT_ReplyIMsg
		tst.w	GUI_locknestcnt-j(a5)
		bne.s	.00001
		bsr	epwm1
.00001		tst.l	pwwindow-j(a5)
*** hier stand in 1.99b noch EvalWindowMessage-  SCHEIESSSSSEEE!!!
		bne.w	EvalPresetsWindowMessage
		rts

epwm1	cmp.l	#IDCMP_CLOSEWINDOW,d4
	beq	ClosePresetsWindow
	cmp.l	#IDCMP_GADGETUP,d4
	bne.s	.0
	move.w	38(a4),d0
	add.w	d0,d0
	add.w	d0,d0
	move.l	epwmtab(pc,d0.w),a0
	jmp	(a0)
.0	rts
epwmtab	dc.l	EPWMHG_list
EPWMHG_list	lea	PresetsList(pc),a0
	move.l	LH_HEAD(a0),a0
	subq.w	#1,d5
	bmi.s	.found
.1	move.l	LN_SUCC(a0),a0
	dbra	d5,.1
.found	move.w	LN_SIZE+32(a0),actsaveformat1-j(a5)
	move.w	LN_SIZE+34(a0),actsaveformat2-j(a5)
	move.w	LN_SIZE+36(a0),actcolsformat1-j(a5)
	move.w	LN_SIZE+38(a0),actcolsformat2-j(a5)
	bsr	UpdateFormatGadgets
	rts

PWUpdateList	movem.l	a2/a3/a6,-(sp)
		move.l	pwwindow(pc),d0
		beq.s	.ende
		move.l	d0,a0
		move.l	gadbase(pc),a6
		move.l	#TAG_DONE,-(sp)
		pea	PresetsList(pc)
		move.l	#GTLV_Labels,-(sp)
		move.l	sp,a3
		move.l	pwlvgadget(pc),a0
		move.l	pwwindow(pc),a1
		sub.l	a2,a2
		LIBCALL	GT_SetGadgetAttrsA
		add.w	#12,sp
.ende		movem.l	(sp)+,a2/a3/a6
		rts
