AmigaOS/MorphOS MUI C++ Wrapper Classes is a modern C++17 library that provides wrapper classes for the Magic User Interface (MUI) on AmigaOS and MorphOS. These classes simplify interaction with the MUI API, enabling developers to use C++ idioms and abstractions to build robust and maintainable user interfaces. The library encapsulates MUI elements within object-oriented classes, improving code readability and reducing the need for low-level MUI calls, thus allowing developers to focus on higher-level design and functionality.
Not all MUI classes/attributes/methods are implemented! (work in progress)
- AmigaOS.cpp.wrapper (https://github.com/tdolphin-org/AmigaOS.cpp.wrapper) located in path ../AmigaOS.cpp.wrapper
- MorphOS SDK3.18+
- TextEditor developer files
- NList developer files
- AmigaOS.cpp.wrapper (https://github.com/tdolphin-org/AmigaOS.cpp.wrapper) located in path ../AmigaOS.cpp.wrapper
- bebbo/amiga-gcc
- AmigaOS MUI5 developer files or AmigaOS MUI3.8 developer files
- TextEditor developer files
- NList developer files
- AmigaOS.cpp.wrapper (https://github.com/tdolphin-org/AmigaOS.cpp.wrapper) located in path ../AmigaOS.cpp.wrapper
- MorphOS SDK deb
- setup-cross-sdk.sh script
- TextEditor developer files
- NList developer files
AmigaOS3 m68k (Linux cross compilation)
$ make cross_aos_m68k
*AmigaOS3 m68k rebuild, parallel on 4 threads/cores (Linux cross compilation) *
$ make clean ; make cross_aos_m68k -j 4
MorphOS PowerPC compilation
$ make mos_ppc
MorphOS rebuild
$ make clean ; make mos_ppc
MorphOS PowerPC (Linux cross compilation)
$ make cross_mos_ppc
MorphOS PowerPC rebuild, parallel on 4 threads/cores (Linux cross compilation)
$ make clean ; make cross_mos_ppc -j 4
obj -> morphos -> ppc -> *.o
-> amigaos -> m68k -> *.o
lib -> morphos -> ppc -> libMUIcpp.a
-> amigaos -> m68k -> libMUIcpp.a
basic example
All code in one file, see: Main.cpp
advanced example
Code extended and divided in many files (Components), see: advanced
| MUI class | C++ class | Wrapper | Builder | Source Notifier | Dest Notifier |
|---|---|---|---|---|---|
| MUIC_Application | MUI::Application | in progress | in progress | - | in progress |
| MUIC_Area | MUI::Area | in progress | in progress | in progress | in progress |
| MUIC_Argstring | - | - | - | - | - |
| MUIC_Balance | MUI::Balance | Ready | Ready | not applicable | not applicable |
| MUIC_Bitmap | - | - | - | - | - |
| MUIC_Bodychunk | - | - | - | - | - |
| MUIC_Boopsi | - | - | - | - | - |
| MUIC_Coloradjust | MUI::Coloradjust | Ready | Ready | - | - |
| MUIC_Colorfield | MUI::Colorfield | Ready | Ready | - | - |
| MUIC_Cycle | MUI::Cycle | Ready | Ready | Ready | Ready |
| MUIC_Datamap | - | - | - | - | - |
| MUIC_Dataspace | - | - | - | - | - |
| MUIC_Dirlist | - | - | - | - | - |
| MUIC_Dtpic | MUI::Dtpict | Ready | Ready | - | - |
| MUIC_Family | MUI::Family | in progress | in progress | in progress | in progress |
| MUIC_Filepanel | - | - | - | - | - |
| MUIC_Floattext | MUI::Floattext | in progress | in progress | - | - |
| MUIC_Fontdisplay | - | - | - | - | - |
| MUIC_Fontpanel | MUI::Fontpanel | Ready | Ready | - | - |
| MUIC_Gadget | MUI::Gadget | Ready | Ready | not applicable | not applicable |
| MUIC_Gauge | MUI::Gauge | Ready | Ready | - | - |
| MUIC_Group | MUI::Group | in progress | in progress | in progress | in progress |
| MUIC_Image | MUI::Image | in progress | in progress | - | - |
| MUIC_Keyadjust | - | - | - | - | - |
| MUIC_Knob | - | - | - | - | - |
| MUIC_Levelmeter | - | - | - | - | - |
| MUIC_List | MUI::List | in progress | in progress | in progress | in progress |
| MUIC_Listview | MUI::Listview | in progress | in progress | - | - |
| MUIC_Mccprefs | - | - | - | - | - |
| MUIC_Menu | MUI::Menu | Ready | Ready | in progress | in progress |
| MUIC_Menuitem | MUI::Menuitem | in progress | Ready | in progress | in progress |
| MUIC_Menustrip | MUI::Menustrip | in progress | Ready | - | - |
| MUIC_Notify | MUI::Notify | in progress | Ready | in progress | in progress |
| MUIC_Numericbutton | - | - | - | - | - |
| MUIC_Numeric | MUI::Numeric | Ready | Ready | - | - |
| MUIC_Objectmap | - | - | - | - | - |
| MUIC_Palette | - | - | - | - | - |
| MUIC_Panel | MUI::Panel | Ready | Ready | not applicable | not applicable |
| MUIC_Penadjust | - | - | - | - | - |
| MUIC_Pendisplay | MUI::Pendisplay | Ready | Ready | in progress | in progress |
| MUIC_Pixmap | - | - | - | - | - |
| MUIC_Popasl | MUI::Popasl | Ready | Ready | - | - |
| MUIC_Poplist | - | - | - | - | - |
| MUIC_Popobject | - | - | - | - | - |
| MUIC_Poppen | MUI::Poppen | Ready | Ready | not applicable | not applicable |
| MUIC_Popscreen | - | - | - | - | - |
| MUIC_Popstring | MUI::Popstring | Ready | Ready | - | - |
| MUIC_Process | - | - | - | - | - |
| MUIC_Prop | MUI::Prop | Ready | Ready | Ready | Ready |
| MUIC_Radio | MUI::Radio | Ready | Ready | - | - |
| MUIC_Rectangle | MUI::Rectangle | Ready | Ready | not applicable | - |
| MUIC_Register | MUI::Register | Ready | Ready | not applicable | Ready |
| MUIC_Scale | MUI::Scale | Ready | Ready | - | - |
| MUIC_Screenmodepanel | - | - | - | - | - |
| MUIC_Scrmodelist | - | - | - | - | - |
| MUIC_Scrollbar | MUI::Scrollbar | Ready | Ready | - | - |
| MUIC_Scrollgroup | MUI::Scrollgroup | in progress | Ready | - | - |
| MUIC_Selectgroup | - | - | - | - | - |
| MUIC_Semaphore | - | - | - | - | - |
| MUIC_Slave | - | - | - | - | - |
| MUIC_Slider | MUI::Slider | Ready | Ready | - | - |
| MUIC_String | MUI::String | in progress | in progress | in progress | in progress |
| MUIC_Textdata | - | - | - | - | - |
| MUIC_Text | MUI::Text | in progress | in progress | - | - |
| MUIC_Title | MUI::Title | in progress | Ready | - | - |
| MUIC_Virtgroup | MUI::Virtgroup | in progress | Ready | - | - |
| MUIC_Volumelist | - | - | - | - | - |
| MUIC_Window | MUI::Window | in progress | in progress | in progress | in progress |
| ... | ... | - | - | - | - |
| MCC class | C++ class | Wrapper | Builder | Source Notifier | Dest Notifier |
|---|---|---|---|---|---|
| MUIC_Busy | MUI::Busy | Ready | Ready | - | - |
| ... | ... | - | - | - | - |
Method comments in Wrapper classes are mostly from MUI documentation.

