/* AmigaE OpenWindowTagList typ2 dispatcher ghh 2024 */
/* tagy pro OpenWindowTagList jsou ve strukture wintags -> tagitem */
MODULE 'intuition/intuition'
MODULE 'utility/tagitem'
PROC main()
DEF win:PTR TO window
DEF wintags:PTR TO tagitem
DEF class
DEF imess:PTR TO intuimessage
DEF quit
/* taglist je v hranatych zavorkach */
wintags:= [WA_Left, 10, /* pozice X */
WA_Top, 14, /* pozice Y */
WA_Width, 320, /* sirka */
WA_Height, 160, /* vyska */
WA_CloseGadget, TRUE, /* gadget zavreni okna */
WA_DragBar, TRUE, /* okno se da uchopit a pretahnout */
WA_DepthGadget, TRUE, /* gadget prepinani oken vpred-vzad */
WA_SizeBBottom, TRUE, /* dolni lista okna */
WA_SizeGadget, TRUE, /* gadget zmeny velikosti */
WA_IDCMP, IDCMP_CLOSEWINDOW, /* okno lze zavrit gadgetem (Intuition IDCMP) */
WA_Title, 'OpenWindowTagListTyp2', /* titulek na liste okna */
WA_MinWidth, 100, /* minimalni sirka okna */
WA_MinHeight, 50, /* minimalni vyska okna */
WA_MaxWidth, -1, /* maximalni sirka -1 = neomezene */
WA_MaxHeight, -1, /* maximalni vyska -1 = neomezene */
WA_Activate, TRUE, /* okno bude aktivni pri spusteni */
TAG_DONE, 0] /* konec taglistu */
win:= OpenWindowTagList(NIL,wintags)
quit:= FALSE
WHILE quit = FALSE /* smycka bezi dokud neobdrzi pokyn (quit:= TRUE) */
class:= NIL
IF imess:= GetMsg(win.userport) /* prijima zpravu z msg portu okna */
class:= imess.class /* imess.class - podle toho co je nastaveno v WA_IDCMP */
SELECT class /* podle obsahu zpravy se provede akce */
CASE IDCMP_CLOSEWINDOW /* pokud zprava obsahuje pokyn k zavreni okna */
quit:= TRUE /* tak prerusit smycku */
ENDSELECT
ReplyMsg(imess) /* odesle odpoved na svuj port */
ELSE
WaitPort(win.userport) /* ceka na zpravu z msg portu okna */
ENDIF
ENDWHILE /* konec smycky */
CloseWindow(win) /* zavre okno az se prerusi smycka */
ENDPROC
|