home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Amiga Shareware Floppies / ma21.dms / ma21.adf / MUIBuilder / examplessource / e / Small.e < prev    next >
Text File  |  1994-01-09  |  3KB  |  106 lines

  1. OPT OSVERSION=37
  2.  
  3. MODULE 'muimaster', 'libraries/mui'
  4. MODULE 'utility/tagitem', 'utility/hooks'
  5. MODULE 'intuition/classes', 'intuition/classusr'
  6.  
  7. CONST MUI_TRUE = 1
  8.  
  9.  
  10. PROC main()
  11.  
  12.     DEF signal, result_DoMethod, running = TRUE
  13.  
  14.     DEF app, wi_smallexample, lv_label_0, lv_label_1, bt_ok, bt_cancel
  15.  
  16.     IF (muimasterbase := OpenLibrary('muimaster.library',0)) = NIL
  17.         CleanUp(100)
  18.     ENDIF
  19.  
  20. app := ApplicationObject,
  21.         MUIA_Application_Author, 'Eric Totel',
  22.         MUIA_Application_Base, 'SMALL',
  23.         MUIA_Application_Title, 'Small Example',
  24.         MUIA_Application_Version, '1.0',
  25.         MUIA_Application_Copyright, '(c) 1993 Eric Totel',
  26.         MUIA_Application_Description, 'Here is a small example of MUI-Builder',
  27.         MUIA_HelpFile, 'ExamplesDoc/small.guide',
  28.         SubWindow, wi_smallexample := WindowObject,
  29.             MUIA_Window_Title, 'Small example',
  30.             MUIA_HelpNode, 'WI_smallexample',
  31.             WindowContents, GroupObject,
  32.                 Child, GroupObject,
  33.                     GroupFrameT( 'two lists' ),
  34.                     MUIA_Group_Horiz, MUI_TRUE,
  35.                     Child, lv_label_0 := ListviewObject,
  36.                         MUIA_Listview_List, DirlistObject,
  37.                             MUIA_Dirlist_Directory, 'progdir:',
  38.                             MUIA_Dirlist_DrawersOnly, FALSE,
  39.                             MUIA_Dirlist_FilesOnly, FALSE,
  40.                             MUIA_Dirlist_FilterDrawers, FALSE,
  41.                             MUIA_Dirlist_MultiSelDirs, FALSE,
  42.                             MUIA_Dirlist_RejectIcons, FALSE,
  43.                             MUIA_Dirlist_SortDirs, MUIV_Dirlist_SortDirs_First,
  44.                             MUIA_Dirlist_SortHighLow, FALSE,
  45.                             MUIA_Dirlist_SortType, 0,
  46.                         End,
  47.                     End,
  48.                     Child, lv_label_1 := ListviewObject,
  49.                         MUIA_Listview_List, VolumelistObject,
  50.                             InputListFrame,
  51.                         End,
  52.                     End,
  53.                 End,
  54.                 Child, GroupObject,
  55.                     MUIA_Group_Horiz, MUI_TRUE,
  56.                     MUIA_Group_SameWidth, MUI_TRUE,
  57.                     Child, bt_ok := KeyButton( 'OK', "o" ),
  58.                     Child, bt_cancel := KeyButton( 'Cancel', "c" ),
  59.                 End,
  60.             End,
  61.         End,
  62.     End
  63.  
  64.     /* Notify : clicking buttons => OUT */
  65.     doMethod( bt_ok, [ MUIM_Notify, MUIA_Pressed, FALSE, app, 2, MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit ] )
  66.     doMethod( bt_cancel, [ MUIM_Notify, MUIA_Pressed, FALSE, app, 2, MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit ] )
  67.  
  68.     /* Notify : close gadget => end of application */
  69.     doMethod( wi_smallexample, [ MUIM_Notify, MUIA_Window_CloseRequest, MUI_TRUE, app, 2, MUIM_Application_ReturnID, MUIV_Application_ReturnID_Quit ] )
  70.  
  71.     /* Open the window */
  72.     set( wi_smallexample, MUIA_Window_Open, MUI_TRUE )
  73.  
  74.     WHILE running
  75.         result_DoMethod := doMethod( app, [ MUIM_Application_Input, {signal} ] )
  76.         SELECT result_DoMethod
  77.             CASE MUIV_Application_ReturnID_Quit
  78.                 running := FALSE
  79.         ENDSELECT
  80.         IF signal THEN Wait( signal )
  81.     ENDWHILE
  82.  
  83.     MuI_DisposeObject( app )
  84.  
  85. ENDPROC
  86.  
  87.  
  88. PROC doMethod( obj:PTR TO object, msg:PTR TO msg )
  89.  
  90.     DEF h:PTR TO hook, o:PTR TO object, dispatcher
  91.  
  92.     IF obj
  93.         o := obj-SIZEOF object     /* instance data is to negative offset */
  94.         h := o.class
  95.         dispatcher := h.entry      /* get dispatcher from hook in iclass */
  96.         MOVEA.L h,A0
  97.         MOVEA.L msg,A1
  98.         MOVEA.L obj,A2           /* probably should use CallHookPkt, but the */
  99.         MOVEA.L dispatcher,A3    /*   original code (DoMethodA()) doesn't. */
  100.         JSR (A3)                 /* call classDispatcher() */
  101.         MOVE.L D0,o
  102.         RETURN o
  103.     ENDIF
  104.  
  105. ENDPROC NIL
  106.