****************************************************
* Simple "Hello World" window demo
* By Richard "PhatBoi" Collier
* PhatBoi@Armature.Com
****************************************************

.include 'taort'
.include 'ave/toolkit/toolkit'

tool 'hello',VP,F_MAIN,16384,0

	ent -:-

	defbegin 0
	defp ave,app,tkit,win,avo,msg,cnt,prp,layout,label
	defi evt,w,h
	
	qcall lib/argcargv,(-:p0,i0)
	
	;find the ave
	qcall sys/kn/dev/lookup,(avename.p:ave,app)
	ifnoterrno ave,true
		;open ave
		ncall ave,open,(ave,app,0,0:app)
		ifnoterrno app,true
			;open toolkit
			ncall ave,opentoolkit,(ave:tkit)
			if tkit!=0
				;get application props
				ncall app,getprop,(app:prp)

				;open dialog window
				ncall tkit,createdialog,(tkit,prp,appname.p,0.p,0,0,FDI_INNER|FDI_MIN|FDI_MAX|FDI_RESIZE|FDI_CONTENT|FDI_CLOSE|FDI_BORDER|FDI_TITLE|FDI_DRAG:win)
				if win!=0
					;get content gadget
					ncall win,getgadgets,(win:p~,p~,cnt)
					qcall ave/layout/open,(-:layout)
					
					ncall cnt,addlayout,(cnt,layout:-)
					
					ncall tkit,createlabel,(tkit,prp,hellotext.p,0.p,100,24,0,0,0:label)
					ncall cnt,add,(cnt,label,0:-)
					
					ncall cnt,getprefsize,(cnt:w,h)
				    ncall cnt,setsize,(cnt,w,h:-)
					
					ncall win,getprefsize,(win:w,h)
					ncall win,change,(win,0,0,w,h,CM_NONE:-)

					ncall app,add,(app,win,0:-)

					;update window
					ncall win,update,(win:-)
										
					;event loop
					repeat
						;wait till msg arrives
						ncall app,getevent,(app,-1.l:avo,msg,evt)
						continueif avo=0

						;pass out to event handler
						ncall avo,event,(avo,msg,evt:-)

						;free event
						ncall ave,freeevent,(ave,msg:-)
						
						if (avo=win && evt=EV_DIALOG_CLOSE)
							cpy EV_USER+00,evt
						endif
						
					until (evt=EV_USER+00)
				endif

				;close toolkit
				ncall ave,closetoolkit,(ave,tkit:-)
			endif

			;close ave
			ncall ave,close,(ave,app:i~)
		endif

		;exit
		qcall lib/exit,(0:-)
	endif
	ret
	defendnz
		
	data

avename:
	dc.b '/device/ave/',0

appname:
	dc.b 'Core',0

hellotext:
	dc.b 'Hello World!',0
	
nulltext:
	dc.b 0

toolend

.end
