;Based on a C source from Amiga News 81 by Eric Totel
;Adapted in Blitz Basic 2 by Erwan Fouret

;Please use XINCLUDE "mui.bb2" instead defines below

;***** libraries/mui.h (c)Stefan Stuntz *****

#MUIO_Button=2

#MUIA_String_MaxLen=$80424984
#MUIA_String_Contents=$80428FFD
#MUIA_Frame=$8042AC64
#MUIV_Frame_String=4

#MUIA_Group_Child=$804226E6
#MUIA_Group_Horiz=$8042536B
#Child=#MUIA_Group_Child

#MUIA_Window_Title=$8042AD3D
#MUIA_Window_RootObject=$8042CBA5
#MUIA_Window_Open=$80428AA0
#MUIA_Window_CloseRequest=$8042E86E
#WindowContents=#MUIA_Window_RootObject

#MUIA_Application_Title=$804281B8
#MUIA_Application_Author=$80424842
#MUIA_Application_Base=$8042E07A
#MUIA_Application_Copyright=$8042EF4D
#MUIA_Application_Description=$80421FC6
#MUIA_Application_Version=$8042B33F
#MUIA_Application_Window=$8042BFE0
#SubWindow=#MUIA_Application_Window

#MUIV_Application_ReturnID_Quit=-1

#MUIM_Notify=$8042C9CB
#MUIA_Pressed=$80423535
#MUIM_Set=$8042549A
#MUIA_ShowMe=$80429BA8
#MUIM_Application_ReturnID=$804276EF
#MUIM_Application_Input=$8042D0F5

;***** BEGIN *****

WBStartup
NoCli:CloseEd

NEWTYPE.tags a.l:b:c:d:e:f:g:h:i:j:k:l:m:n:o:p:q:r:s:t:u:v:w:x:y:z:End NEWTYPE

DEFTYPE.tags atags,wtags,vtags,stags,htags,setags,dm1tags,dm2tags,dm3tags
DEFTYPE.l

Dim t$(10),*tp.b(10)

t$(0)="Test"                           ;Application Title
t$(1)="Erwan Fouret"                   ;Application Author
t$(2)="TEST"                           ;Application Base
t$(3)="Erwan Fouret"                   ;Application Copyright
t$(4)="An example of MUI application"  ;Application Description
t$(5)="$VER: TestMUIV1.0 (02.02.97)"   ;Application Version
t$(6)="Test"                           ;Window Title
t$(7)="Text"                           ;String Text
t$(8)="_Hide"                          ;Button Text
t$(9)="_Quit"                          ;Button Text

For i=0 To 9          ;We make pointers
 t$(i)=t$(i)+Chr$(0)  ;of strings
 *tp(i)=&t$(i)        ;for use in tags
Next i

*BT_Quit.b=MUI_MakeObjectA_(#MUIO_Button,&*tp(9))  ;We make two simple
*BT_Hide.b=MUI_MakeObjectA_(#MUIO_Button,&*tp(8))  ;buttons

stags\a=#MUIA_Frame,#MUIV_Frame_String  ;Tags definition
stags\c=#MUIA_String_MaxLen,80          ;for the creation
stags\e=#MUIA_String_Contents,*tp(7),0  ;of a string gadget

*STR_String.b=MUI_NewObjectA_("String.mui",stags) ;We make it

htags\a=#MUIA_Group_Horiz,1               ;Tags for an horizontal group
htags\c=#Child,*BT_Hide,#Child,*BT_Quit,0

vtags\a=#Child,*STR_String,#Child,MUI_NewObjectA_("Group.mui",htags),0
;Tags for a vertical group

wtags\a=#MUIA_Window_Title,*tp(6)                            ;Tags for
wtags\c=#WindowContents,MUI_NewObjectA_("Group.mui",vtags),0 ;a simple win

*MyWindow.b=MUI_NewObjectA_("Window.mui",wtags) ;We create the window

atags\a=#MUIA_Application_Title,*tp(0)       ;Tags
atags\c=#MUIA_Application_Author,*tp(1)      ;for
atags\e=#MUIA_Application_Base,*tp(2)        ;the
atags\g=#MUIA_Application_Copyright,*tp(3)   ;MUI
atags\i=#MUIA_Application_Description,*tp(4) ;appliaction
atags\k=#MUIA_Application_Version,*tp(5)
atags\m=#SubWindow,*MyWindow,0

*App.b=MUI_NewObjectA_("Application.mui",atags) ;The application is created !

DoMethod *BT_Hide,#MUIM_Notify,#MUIA_Pressed,0,*STR_String,3,#MUIM_Set,#MUIA_ShowMe,0
DoMethod *BT_Quit,#MUIM_Notify,#MUIA_Pressed,0,*App,2,#MUIM_Application_ReturnID,#MUIV_Application_ReturnID_Quit
;These methods specify the action to execute when a button is pressed

DoMethod *MyWindow,#MUIM_Notify,#MUIA_Window_CloseRequest,1,*App,2,#MUIM_Application_ReturnID,#MUIV_Application_ReturnID_Quit
;Quit if the window is closed

setags\a=#MUIA_Window_Open,1,0

SetAttrsA_ *MyWindow,setags  ;We open the Window

running=1

signal.l=0

While(running)                                          ;Main loop
 Select DoMethod(*App,#MUIM_Application_Input,&signal)  ;Is there a signal ???
 Case #MUIV_Application_ReturnID_Quit                      ;Quit ?
  running=0
 End Select
 If (running & signal) Wait_(signal)                    ;Wait next signal
Wend

MUI_DisposeObject_ *App                                 ;Free the application

End
