;---------------T----------T-----------------------T
; AGAiff
;
; Last Change > 2.8.94
; Include > hotkey.s
; 2.8.1994	Starting twice is now handled correctly.

InitHotkey	tst.l	cxbase-j(a5)
	bne.s	.ok
	rts
.ok	lea	NewBroker1-j(a5),a4
	move.l	4.w,a6
	LIBCALL	CreateMsgPort
	move.l	d0,20(a4)
	bne.s	.cont1
	rts
.cont1	st	cx_error-j(a5)
	move.l	cxbase(pc),a6
	move.l	a4,a0
	moveq	#0,d0
	LIBCALL	CxBroker
	lea	Broker1(pc),a0
	move.l	d0,(a0)
	beq	FreePort
	clr.w	cx_error-j(a5)
	moveq	#CX_FILTER,d0
	sub.l	a0,a0
	sub.l	a1,a1
	LIBCALL	CreateCxObj
	tst.l	d0
	beq	FreeBroker
	move.l	d0,a2
	move.l	d0,a0
	lea	Hotkey.text-j(a5),a1
	LIBCALL	SetFilter
	moveq	#CX_SEND,d0
	move.l	20(a4),a0
	move.l	#CXCMD_APPEAR,a1
	LIBCALL	CreateCxObj
	tst.l	d0
	beq	FreeBroker
	move.l	d0,a3
	move.l	Broker1-j(a5),a0
	move.l	a2,a1
	LIBCALL	AttachCxObj
	move.l	a2,a0
	move.l	a3,a1
	LIBCALL	AttachCxObj
	moveq	#1,d0
	bsr	ActivateHotkey
	move.l	NewBroker1+20-j(a5),a0
	move.b	MP_SIGBIT(a0),Signal.cx-j(a5)
	st	ok_freecx
	rts

ActivateHotkey	move.l	cxbase-j(a5),a6
	move.l	Broker1-j(a5),a0
	LIBCALL	ActivateCxObj
	rts

ok_freecx	dc.w	0

FreeHotkey	tst.l	cxbase-j(a5)
	bne.s	.ok
	rts
.ok	tst.w	ok_freecx-j(a5)
	bne.s	.ok2
	rts
.ok2	move.l	cxbase-j(a5),a6
FreeBroker	move.l	Broker1-j(a5),a0
	LIBCALL	RemoveCxObj
	move.l	Broker1-j(a5),a0
	LIBCALL	DeleteCxObjAll
FreePort	move.l	4.w,a6
	lea	NewBroker1-j(a5),a4
	move.l	20(a4),a0
	LIBCALL	DeleteMsgPort
	move.w	#-1,Signal.cx-j(a5)
	rts

cx_error	dc.w	0

NewBroker1	dc.b	5,0
	dc.l	BrokerName,BrokerTitle,BrokerText
	dc.w	NBU_NOTIFY!NBU_UNIQUE,4
	dc.b	0,0
	dc.l	0
	dc.w	0
	dc.l	0
Broker1	dc.l	0
BrokerName	dc.b	"AGAiff",0
BrokerTitle	dc.b	"AGAiff ©1993-1997 by Michael Krause!",0
BrokerText	dc.b	"Low-Level Image Converter",0

EvalCxMessage	lea	NewBroker1-j(a5),a0
	move.l	20(a0),a0
	move.l	4.w,a6
	LIBCALL	GetMsg
	move.l	d0,d6
	move.l	d0,a0
	move.l	cxbase-j(a5),a6
	LIBCALL	CxMsgID
	move.l	d0,d2
	move.l	4.w,a6
	move.l	d6,a1
	LIBCALL	ReplyMsg

	cmp.l	#CXCMD_DISABLE,d2
	beq	DisableCode
	cmp.l	#CXCMD_ENABLE,d2
	beq	EnableCode
	cmp.l	#CXCMD_APPEAR,d2
	beq	ShowWindow
	cmp.l	#CXCMD_DISAPPEAR,d2
	beq	HideWindow
	cmp.l	#CXCMD_KILL,d2
	beq	QuitAll
	cmp.l	#CXCMD_UNIQUE,d2
	beq	ShowWindow
	rts
QuitAll	bsr	HideWindow
	st	w4mquitflag
	rts
DisableCode	moveq	#0,d0
	bra	ActivateHotkey
EnableCode	moveq	#1,d0
	bra	ActivateHotkey

