Magic User Interface

Short description: Widget toolkit for AmigaOS

Magic User Interface

A screenshot of the MUI-based Ambient desktop.

Developer(s)| Stefan Stuntz
Initial release| 1993; 33 years ago (1993)
Stable release|

5.0 / June 19, 2015; 11 years ago (2015-06-19)

Operating system| AmigaOS, MorphOS
Platform| Amiga
Type| Widget toolkit
Licence| Proprietary/Shareware
Website| www.sasg.com/mui/

The Magic User Interface (MUI in short) is an object-oriented system by Stefan Stuntz to generate and maintain graphical user interfaces. With the aid of a preferences program, the user of an application has the ability to customize the system according to personal taste.

The Magic User Interface was written for AmigaOS and gained popularity amongst both programmers and users. It has been ported to PowerPC processors and adopted as the default GUI toolkit of the MorphOS operating system. The MUI application programmer interface has been cloned by the Zune toolkit used in the AROS Research Operating System.[1]

## Contents

* 1 History
* 2 Application theory
* 2.1 Example
* 3 Applications
* 4 Other GUI toolkits
* 5 Palette extension to Workbench defaults
* 6 See also
* 7 References
* 8 External links

## History

Creating GUI applications on Amiga was difficult for a very long time, mainly because the programmer got only a minuscule amount of support from the operating system. Beginning with Kickstart 2.0, the gadtools.library was a step in the right direction, however, even using this library to generate complex and flexible interfaces remained difficult and still required a great deal of patience.

The largest problem in existing tools for the creation of user interfaces was the inflexible output. Most of the programs were still using built-in fonts and window sizes, thus making the use of new high resolution graphics hardware adapters nearly unbearable. Even the preference programs on the Workbench were still only using the default fixed-width font.

In 1992 Stefan Stuntz started developing a new object-oriented GUI toolkit for Amiga. Main goals for new GUI toolkit were:

* Font sensitivity: Possible for the font to be set in every application.
* Changeable window sizes: Windows have a sizing gadget which allows users to change the window size until it suits their needs
* Flexibility: Elements can be changed by the user regarding their own personal tastes.
* Controlling by keyboard: Widgets can be controlled by the keyboard as well as by the mouse.
* System integration: Every program has an ARexx port and can be iconified or uniconified by pushing a gadget or by using the Commodities exchange program.
* Adjusting to its environment: Every application can be made to open on any screen and adapts itself to its environment.[2]

MUI was released as shareware. Starting from MUI 3.9 an unrestricted version is integrated with MorphOS, but a shareware key is still required to activate all user configuration options in AmigaOS.

## Application theory

UI development is done at source-code level without the aid of GUI builders. In MUI application the programmer only defines logical structure of the GUI and the layout is determined at run time depending on user configuration. Unlike on other GUI toolkits developer does not determine exact coordinates for UI objects but only their relative placement to each other using object groups. In traditional Intuition-based UI coding programmer had to calculate placement of gadgets relative to font and border sizes. By default all UI elements are resizable and change their size to match window size. It can also automatically switch into smaller font or hide UI elements if there is not enough space on screen to display window with full contents. This makes it very easy to build UI which adapts well to tiny and large displays as well.[3][4][5]

There are over 50 built-in MUI classes today and various third-party MUI classes.

### Example

// Complete MUI application
#include <libraries/mui.h>
#include <proto/muimaster.h>

// Sample application:
ApplicationObject,
SubWindow, WindowObject,
WindowContents, VGroup,
Child, TextObject, MUIA_Text_Contents, "Hello World!", End,
End,
End,
End;

This example code creates a small MUI application with the text "Hello World!" displayed on it. It is also possible to embed other BOOPSI based GUI toolkit objects inside a MUI application.

## Applications

Some notable applications that use MUI as a widget toolkit include:

* Aladdin4D \- 3D rendering/animation application
* Ambient \- desktop environment
* AmIRC \- IRC client
* Digital Universe \- desktop planetarium
* IBrowse \- web browser
* Origyn Web Browser \- web browser
* PageStream \- desktop publishing
* SimpleMail - email client
* Voyager - web browser
* YAM \- email client

## Other GUI toolkits

Currently there are two main widget toolkits in the Amiga world, which are competing with each other. The most widely used is MUI (adopted into AROS, MorphOS and in most Amiga programs), the other one is ReAction which was adopted in AmigaOS 3.5. There is in development a GTK MUI wrapper and it will allow the porting of various GTK based software.[6] There is also modern interfaces based on XML, Feelin.

## Palette extension to Workbench defaults

MUI extended Workbench's four-colour palette with four additional colours, allowing smoother gradients with less noticeable dithering. The MagicWB companion to MUI made use of this extended palette to provide more attractive icons to replace the dated Workbench defaults. MUI 4 added support for alpha blending and support for user defined widget shapes.

| MUI eight-colour palette

|

Colour  |  |  |  |  |  |  |  |
Red  | 149 | 000 | 255 | 59 | 123 | 175 | 170 | 255
Green  | 149 | 000 | 255 | 103 | 123 | 175 | 144 | 169
Blue  | 149 | 000 | 255 | 162 | 123 | 175 | 124 | 151

## See also

* ReAction GUI (ClassAct)
* Zune

## References

1. ↑ "AROS Research Operating System". http://aros.sourceforge.net/documentation/developers/zune-application-development.php.
2. ↑ Stuntzi, S: MUI User Documentation. 1997
3. ↑ "MUI Concepts". http://www.sasg.com/mui/concepts.html.
4. ↑ "The Amiga Computer Community Portal Website". http://amigaworld.net/modules/faq/index.php?cat_id=2#15.
5. ↑ Stuntzi, S: MUI Programmer Documentation. 1997
6. ↑ "GTK-MUI download". http://sourceforge.net/projects/gtk-mui/.

## External links

* MUI homepage
* Unofficial MUI nightly build directory
* Tutorial

* v
* t
* e

AmigaOS

Amiga technologies|

* AmigaBASIC
* AmigaDOS
* AmigaGuide
* ARexx
* Blitter object
* Exec/WarpOS
* Guru Meditation
* Hunk
* Installer
* Intuition
* Kickstart
* RAM disk
* Workbench
* XAD

Amiga GUIs|

* Ambient
* MUI
* ReAction
* Scalos
* Workbench
* Zune

File systems|

* CrossDOS
* OFS
* FFS
* PFS
* SFS
* UDF
* FAT
* NTFS

OS versions|

* AmigaOS version history
* AmigaOS 4

Software packs|

* Amiga Forever
* AmiKit

Other software|

* Aminet
* Amiga Reflections
* Demos
* Games
* Hollywood
* ADF
* IFF
* LHA
* WHDLoad
* WinUAE
* YAM
* AmiZilla

Influenced|

* AROS
* AtheOS
* BeOS
* DragonFly BSD
* MorphOS
* Syllable

Category

* v
* t
* e

MorphOS

Hardware|

* A1200
* A3000
* A3000T
* A3000UX
* A4000
* A4000T
* Efika
* Pegasos
* Mac Mini
* eMac
* Power Mac G4
* PowerBook G4
* iBook G4
* Power Mac G5

Components|

* AHI
* Ambient
* AmigaDOS
* CyberGraphX
* MUI
* PowerUP
* RAM disk
* TurboPrint
* WarpOS
* more...

File systems|

* FAT
* OFS
* FFS
* EXT2
* HFS
* NTFS
* PFS
* SFS

Software|

* Blender
* Cubic IDE
* Hollywood
* NetSurf
* Origyn Web Browser
* YAM
* more...

Games|

* Aquaria
* The Battle for Wesnoth
* Knights and Merchants
* OpenTTD
* Robin Hood
* Quake III
* Stratagus
* more...

* v
* t
* e

List of widget toolkits

Low-level|

| On AmigaOS|

* Intuition

|

On Classic Mac OS,
macOS|

| Unknown, native|

* Macintosh Toolbox

|

* Carbon

On Windows|

* Windows API

On Unix,
under X11|

* Xlib
* XCB
* X Toolkit Intrinsics, Xt, X-Toolkit

On BeOS, Haiku|

* BeOS, ZETA, Haiku

On cross-platform|

| CLI|

* OpenTK

|

* GDK
* SDL

Java|

* JOGL

On Android|

| CLI|

* Xamarin.Android

|

High-level|

| On AmigaOS|

* BOOPSI
* MUI
* ReAction GUI
* Zune

|

On Classic Mac OS,
macOS|

| Object Pascal|

* MacApp (v1, v2)

|

Objective-C,
Swift|

| Desktop|

* Cocoa

|

Mobile|

* Cocoa Touch

C++|

* MacApp (v3)
* PowerPlant
* THINK Class Library

CLI|

| Desktop|

* Xamarin.Mac

|

Mobile|

* Xamarin.iOS

On Windows|

| CLI|

| Desktop|

* Windows Forms
* XAML (Silverlight, WinRT XAML, WPF)
* XNA Framework

|

Web|

* XAML (Silverlight)

Mobile|

* XNA Framework

C++|

* MFC
* ATL
* WTL
* OWL

Object Pascal|

* VCL

On Unix,
under X11|

* Athena (Xaw)
* LessTif
* Motif
* OLIT
* XForms

On Android|

| C++|

* Qt for Android

|

Cross-platform,
by language|

| C|

* GTK
* IUP
* Tk
* wxC
* XForms
* XVT

|

C++|

* CEGUI
* CLX
* FLTK
* FOX toolkit
* GLUI
* Gtkmm
* JUCE
* Nana
* Qt
* Rogue Wave Views
* TnFOX
* Ultimate++
* VCF
* Wt
* wxWidgets
* YAAF
* SFML

Objective-C|

* GNUstep

CLI|

| Desktop|

* Gtk#
* Tao (OpenTK, TaoClassic)
* wx.NET
* UIML.NET
* MonoGame

|

Web|

* Moonlight

Mobile|

* MonoGame
* Xamarin.Forms

* DFL
* DlangUI
* DWT
* GtkD
* QtD
* wxD

Flash|

* Apache Flex (MXML)

Haskell|

* Gtk2Hs
* wxHaskell

Java|

| Desktop|

* AWT
* FXML (JavaFX)
* Qt Jambi
* Swing
* SWT
* wx4j
* jUIML

|

Web|

* GWT
* FXML (JavaFX)

Mobile|

* LWUIT

JavaScript|

* Dojo Toolkit
* Echo
* Ext JS
* Google Closure
* jQuery UI
* Qooxdoo
* YUI

Common Lisp|

* CAPI
* CLIM
* Common Graphics
* Ltk
* McCLIM

Lua|

* IUP
* wxLua

Pascal|

| Desktop|

* LCL

|

Mobile|

* LCL

Object Pascal|

| Desktop|

* CLX
* fpGUI
* IP Pascal
* LCL

|

Mobile|

* LCL

Perl|

* Perl/Tk
* wxPerl

PHP|

* PHP-GTK
* PHP-Qt
* wxPHP

Python|

* PyGObject
* PyGTK
* Pyjs
* PyQt
* PySide
* Tkinter
* wxPython

Ruby|

* Shoes
* FXRuby
* Ruby-GNOME2
* qtbindings
* QtRuby
* wxRuby

Tcl|

* Tcl/Tk

XML|

* GladeXML
* Lively Kernel
* Pyjs
* Rialto Toolkit
* XAML
* XUL
* UXP
* Wt

shell|

* whiptail
* dialog

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/Magic User Interface. Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Software:Magic_User_Interface&oldid=754164"
*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template