home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Magazyn Amiga Shareware Floppies
/
ma21.dms
/
ma21.adf
/
MUIBuilder
/
examplessource
/
e
/
Small.e
< prev
next >
Wrap
Text File
|
1994-01-09
|
3KB
|
106 lines
OPT OSVERSION=37
MODULE 'muimaster', 'libraries/mui'
MODULE 'utility/tagitem', 'utility/hooks'
MODULE 'intuition/classes', 'intuition/classusr'
CONST MUI_TRUE = 1
PROC main()
DEF signal, result_DoMethod, running = TRUE
DEF app, wi_smallexample, lv_label_0, lv_label_1, bt_ok, bt_cancel
IF (muimasterbase := OpenLibrary('muimaster.library',0)) = NIL
CleanUp(100)
ENDIF
app := ApplicationObject,
MUIA_Application_Author, 'Eric Totel',
MUIA_Application_Base, 'SMALL',
MUIA_Application_Title, 'Small Example',
MUIA_Application_Version, '1.0',
MUIA_Application_Copyright, '(c) 1993 Eric Totel',
MUIA_Application_Description, 'Here is a small example of MUI-Builder',
MUIA_HelpFile, 'ExamplesDoc/small.guide',
SubWindow, wi_smallexample := WindowObject,
MUIA_Window_Title, 'Small example',
MUIA_HelpNode, 'WI_smallexample',
WindowContents, GroupObject,
Child, GroupObject,
GroupFrameT( 'two lists' ),
MUIA_Group_Horiz, MUI_TRUE,
Child, lv_label_0 := ListviewObject,
MUIA_Listview_List, DirlistObject,
MUIA_Dirlist_Directory, 'progdir:',
MUIA_Dirlist_DrawersOnly, FALSE,
MUIA_Dirlist_FilesOnly, FALSE,
MUIA_Dirlist_FilterDrawers, FALSE,
MUIA_Dirlist_MultiSelDirs, FALSE,
MUIA_Dirlist_RejectIcons, FALSE,
MUIA_Dirlist_SortDirs, MUIV_Dirlist_SortDirs_First,
MUIA_Dirlist_SortHighLow, FALSE,
MUIA_Dirlist_SortType, 0,
End,
End,
Child, lv_label_1 := ListviewObject,
MUIA_Listview_List, VolumelistObject,
InputListFrame,
End,
End,
End,
Child, GroupObject,
MUIA_Group_Horiz, MUI_TRUE,
MUIA_Group_SameWidth, MUI_TRUE,
Child, bt_ok := KeyButton( 'OK', "o" ),
Child, bt_cancel := KeyButton( 'Cancel', "c" ),
End,
End,
End,
End
/* Notify : clicking buttons => OUT */
doMethod( bt_ok, [ MUIM_Notify, MUIA_Pressed, FALSE, app, 2, MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit ] )
doMethod( bt_cancel, [ MUIM_Notify, MUIA_Pressed, FALSE, app, 2, MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit ] )
/* Notify : close gadget => end of application */
doMethod( wi_smallexample, [ MUIM_Notify, MUIA_Window_CloseRequest, MUI_TRUE, app, 2, MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit ] )
/* Open the window */
set( wi_smallexample, MUIA_Window_Open, MUI_TRUE )
WHILE running
result_DoMethod := doMethod( app, [ MUIM_Application_Input, {signal} ] )
SELECT result_DoMethod
CASE MUIV_Application_ReturnID_Quit
running := FALSE
ENDSELECT
IF signal THEN Wait( signal )
ENDWHILE
MuI_DisposeObject( app )
ENDPROC
PROC doMethod( obj:PTR TO object, msg:PTR TO msg )
DEF h:PTR TO hook, o:PTR TO object, dispatcher
IF obj
o := obj-SIZEOF object /* instance data is to negative offset */
h := o.class
dispatcher := h.entry /* get dispatcher from hook in iclass */
MOVEA.L h,A0
MOVEA.L msg,A1
MOVEA.L obj,A2 /* probably should use CallHookPkt, but the */
MOVEA.L dispatcher,A3 /* original code (DoMethodA()) doesn't. */
JSR (A3) /* call classDispatcher() */
MOVE.L D0,o
RETURN o
ENDIF
ENDPROC NIL