                       Modula-Interface for MUI 3.6

                     MUI (C) 1993-97 by Stefan Stuntz

                                   * * *

                         Modula Interfaces done by

                        Christian "Kochtopf" Scholz
                             (up to MUI v2.2)

                             Olaf "Olf" Peters
                           (MUI v3.1 and above)

                                Snke Tesch
                         (PrivateMuiClass.def/mod)

                               Stefan Tieman
                           (Cyclone interfaces)

                                   * * *

                         Report should be send to:

                Olaf Peters <olf@informatik.uni-bremen.de>
                           (M2Amiga interfaces)

              Snke Tesch <soenke.tesch@elmshorn.netsurf.de>
                         (PrivateMuiClass.def/mod)

                 Stefan Tiemann <tiemant@uni-muenster.de>
                           (Cyclone interfaces)

                                   * * *

                    The Modula Interfaces are Freeware.


===================
Directory Structure
===================


Cyclone/#?   - interfaces for the Cyclone compiler by Marcel Timmermans.

M2Amiga/#?   - interfaces for the M2Amiga compiler by A+L AG

Shared/#?    - interfaces that do compile with both compilers and
                   documentation.


=============
Release Notes
=============

v3.6.4 (22.1.97, olf * Aminet)

  * added interfaces for the Cyclone compiler (done by by Stefan Tiemann).

  * introduced the a new directory structure (see above)

v3.6.3 (14.12.96, olf * Aminet)

  * Template Sources for private custom classes are now included
      (PrivateMuiClass.def/mod). These files were written by Snke Tesch,
      thanks very much for contributing!

v3.6.2 (22.9.96, olf)

  * MuiD.def: added missing Attribute NumericCheckAllSizes

v3.6.1 (8.9.96, olf)

  * fixed a few flaws in the Class1/2/3 demosources (thanks to Stefan
      Tiemann for the hints).

v3.6 (13.8.96, olf * Aminet)

  * updated the interfaces for MUI 3.6

v3.3.4 (5.6.96, olf)

  * MuiL: moRedraw wrongly returned a value and the flags parameter was of
      type LONGINT instead of MADFlagSet. (Soenke Tesch)

v3.3.3 (26.4.96, olf)

  * MuiD: Grrr, misnamed the Settingsgroup Method (mp instead of mm).

v3.3.2 (25.4.96, olf)

  * MuiD/MuiClasses: added missing Methods SettingsgroupGadgetsToConfig,
      SettingsgroupConfigToGadgets and GetConfigItem (needed when
      developing CustomClass-Prefs for MUI-Prefs).

  * MuiClasses: OBJ_pen() now returns a pointer to an array of WORD, so you
      can get the pennumber of a MUI-Pen by simply calling i.e.
      OBJ_pen(obj)^[mpenHalfshine]

  * MuiClasses: the mNotifyData structure was missing the mndObjectID - blame
      Stuntzi ;-)

v3.3.1 (13.3.96, olf)

  * as the StackParms compiler-option *may* lead into problems it has been
      removed from the interfaces. (Stefan Tiemann)

  * optimization: MuiClasses/FillMinMaxInfo now uses WITH and INC
      Statement, saving some bytes when compiling. (Stefan Tiemann)

  * optimization: MuiClasses/MakeDispatcher had a VAR parameter while the
      Pointer is not being changed. (Stefan Tiemann)

  * fixed a bug in MuiD.def/mInputHandlerNode: node had to be ed.MinNode,
      not ed.MinNodePtr (Stefan Tiemann)

  * MuiClassSupport: new procedure setSuper to set an attribute of your
      superclass.

  * fixed a bug in MuiClasses/MakeDispatcher that would badly crash the
      machine when used in a public custom class (= library):
      IClass^.dispatcher.data is reserved for MUI, now using
      IClass^.userData. Nevertheless the bug didn't occur with private
      customclasses.

  * added the missing DataSpaceFind Method to MuiD.def and MuiClasses.def
      (blame Stuntzi for forgetting it in the C-Headers ;-)

v3.3 (21.2.96, olf)

  * updated the interfaces for MUI 3.3

  * ATTENTION: new parameter 'flags' for moObtainPen()!

v3.2.2 (7.2.96, olf)

  * introduced MuiClassSupport: some functions to make life easier when
      creating own customclasses. See docs/MuiClassSupport.doc for
      documentation, Class2.mod and Class3.mod for example usage.

  -when using MUIOBSOLETE=TRUE in MuiMacros, the TagBuffer was too small.
      Fixed. (Marc Ewert)

  * Demosources now also use MuiClassSupport and do compile again. They
      didn't in v3.2.1 due to the changes from Stefan Schulz (APTR moved to
      MuiD).

v3.2.1 (3.2.96, olf)

  * updated the interfaces for MUI 3.2

  * included Stuntzi's automatic headers (these have not been updated in
      the MUI 3.2 distribution)

  * included some changes from Stefan 'eau' Schulz and Christian 'Kochtopf'
      Scholz (Thanks!)

  * fixed MOLabelFlags (flags were misaligned, thanks to Marc Ewert for
      reporting!)

v3.1.1 (27.11.95, olf)

  * MuiD.def now really has the MUIOBSOLETE compiler option. This was
      missing in the MUI 3.1 release.

  * due to Stuntzi's automatic headerfile generation, MUI2COMPAT will not
      be supported any longer.

  * Demos now compile with MUIOBSOLETE set to FALSE, which also means they
      will only run with MUI 3 (and above). Be careful, they do *not* check
      which MUI version you're using!

----- BEGIN Olf's Notes for v3.1 ------------------------------------------

While updating the Modula interfaces to MUI-3 I have made some minor
changes to MUIClasses (to make them more "Modula-like"), so don't wonder,
if your programs do not compiled out of the box with the new interface.
However my changes should not affect too many programs, so I hope you can
live with them.

Also there are some compiler-options in the modules which may need some
explanation, they are:

  MUIOBSOLETE

set this to TRUE to enable all the tags that have been declared obsolete
during MUI-development. *Please* try to update your programs so they
compile with MUIOBSOLETE set to FALSE.

  MUI2COMPAT

In MUI-3 some tags have been declared obsolete which have been heavily used
in MUI-2 apps (i.e. maWindowCycleChain). If you want your programs to be
MUI-2 compatible, but have eliminated all your MUIOBSOLETE tags, you should
set this option to TRUE.

  MUI3

In MuiMacros some MUI-3 specific Macrocalls have been added. If you set
this attribute to FALSE they will be excluded from compilation, so you may
check if your application will still run under MUI-2. I have not included
this option in MuiD and MuiClasses because of lazyness ;-)

The interfaces are not too heavily tested, but I'm currently developing a
bigger application with them (which also uses custom-classes). At least I
didn't discover any bugs until now (Nov 18, 1995) :-)

Anyway, if you discover any bugs or missing tags, please contact Christian
or me, to ensure they are included in the next release of the Interfaces.

My address is:

Olaf Peters
Kulmer Str. 7
28237 Bremen

eMail preferred: olf@informatik.uni-bremen.de

Have fun!

  Olf

----- END Olf's Notes -----------------------------------------------------


Here are the files you need to write MUI-Programs with M2Amiga.
Present are in this version the macros defined in mui.h. They are
implemented in MuiMacros and in MuiClasses (the ones related to
custom-class-programming)


Description of the files :

    MuiD.def        : Definitions of MethodIDs, AttributeIDs, etc.
    MuiD.mod        : Some additional PROCEDUREs for some #define's in mui.h
    MuiL.def        : The interface for muimaster.library
    MuiSupport.def  : Additional PROCEDUREs like DoMethod or fail.
    MuiSupport.mod  : The implementation of these PROCEDUREs.
    MuiMacros.def   : Some Macros converted from mui.h
    MuiMacros.mod   : The implementation of these.
    MuiClasses.def  : some things you need to write own classes
    MuiClasses.mod  : implementation of the macros defined in mui.h for classes
    MuiTest.mod     : A sample Module showing how to use the interface.
    ListDemo.mod    : A sample Listview programm showing an DisplayHook!
    Class1.mod      : A sample Module showing how to write own classes in M2.

    In this version you have to compile the interface yourself.
    For this can you use the CompilerScript. It will compile the
    interface and copy the files to m2:modules/sym|obj.


The History :

22.10.1993 MuiSupport : changed fail-PROCEDURE, that it makes no use of
                        Terminal, but now uses Arts.Requester.
           MuiMacros  : Added macros AddMember, DelMember, MakeHook,
                        MakeID, PopUp
26.10.1993 supplied CompilerScript
9.2.1994   MuiD       : Updates to 1.5 (Popasl, Popstring, PopObject... )
                        added mPaletteEntry, mScrmodelist.
           MuiL       : Updates to 1.5 (Custom Class Functions)
                        changed return-value of mAslRequest to BOOLEAN 
                                                (thanx to Thilo Stoeferle)
                        provided muiMasterVersion, etc. like System-Defs.
           MuiSupport : fail will set app to NIL, now VAR-parameter 
                        (so you can use it in a CLOSE-Routine)
                                                (thanx to Martin Koyro)
           MuiMacros  : now it supports StrPtr instead of ARRAY OF CHAR.
                        set the symbol Locale to TRUE to get it. (defaults to FALSE)
                        added some macros by Martin Koyro (KeyRadio, (Key)Cycle, (Key)Slider)
           MuiClasses : new Module which implements things to write own classes.
           ComboBox   : removed - use PopObject for a Popup-List.
           ListDemo   : New Demo to show how to do lists.
18.2.1994  MuiMacros  : Added functions for Register and the Pop*-Classes.
                        Added some new Label-Macros (LLabel,... )
           MUIClasses : Added some macro-definitions and rearranged a bit the
                        module. Now you can do easily custom classes with it.
                        (i hope :) So look at it for more info and look also
                        at Class1.mod which shows how it is used.
           Class1.mod : new demo which shows how to do custom classes.
25.6.1994  MuiD,      
           MuiMacros,
           MuiL       : upgraded to version 2.1
                        added a new symbol MUIObsolete to MuiMacros. Set it to true,
                        if you want the obsolete Macros, now you should use mMakeObj
                        for them.
                        Problems with MakeObject-Definition - does not work.
                        I don't know why - you ? ;-) Please tell me!
                        (so you should set MuiObsolete to TRUE ;-)

           MuiClasses : changed name from MUIClasses to MuiClasses - please note!!
11.7.1994  MuiL.def   : changed MakeObject to use the right registers. Now works!!


Note :

This time I just wanted to say that this stuff is _completely_ untested because of lack
of time. I am just happy that it compiles ;-)
I think that I have the next days some free hours to play with the new MUI (perhaps
writing a class :-)
Perhaps I will then release a new version on aminet...

For bug-reports or suggestion please send me a note. Thanks.

My email-address :

    ruebe@pool.informatik.rwth-aachen.de


Greets,
     Kochtopf
