amiga-bootcamp/09_intuition/frameworks/mui/06-widgets-overview.md
Ilia Sharin 94a3ad1614 doc: MUI framework documentation — whitepaper overview, SDK-derived architecture, layout mockups
- README.md: comprehensive whitepaper-style overview with historical context,
  paradigm shift analysis, BOOPSI comparison, version history (Stefan Stuntz
  as sole author 1.0-3.8), licensing model breakdown, parallel evolution
  timeline (NeXTSTEP/Qt/MUI convergence), community-sourced developer values
- 02-architecture.md: complete rewrite from MUI 3.8 SDK sources — object
  lifecycle state machine, three-level resource binding, method dispatch chain,
  notification system with sequence diagrams, layout engine internals
  (3-pass constraint system), input handling, dynamic object linking,
  rendering model, tag ID namespace
- 05-layout-system.md: Mermaid visual mockups for VGroup, HGroup, nested
  groups, column grids, scrollgroups, file requester real-world example,
  layout algorithm and resize sequence diagrams
- frameworks/README.md: framework index with comparison table
- All content in American English
2026-04-23 16:46:58 -04:00

7.2 KiB

← Home · Intuition · Frameworks

Widgets Overview

MUI provides a comprehensive set of built-in widget classes. This section provides a quick tour of the most commonly used ones with code snippets.

Text

The Text class displays static text. It supports control codes for formatting.

Child, TextObject,
    MUIA_Text_Contents, "\33cCentered text",
    End,

Text Control Codes (MUIX_)

Code Effect
\33c or MUIX_C Center align
\33r or MUIX_R Right align
\33l or MUIX_L Left align
\33b or MUIX_B Bold
\33i or MUIX_I Italic
\33u or MUIX_U Underline

Multiple codes can be combined:

"\33c\33bBold centered text"

Common Text Attributes

Attribute Description
MUIA_Text_Contents The string to display
MUIA_Text_HiChar Underline this character as shortcut
MUIA_Text_PreParse Pre-parse string with control codes
MUIA_Text_SetVMax Set vertical maximum to font height
MUIA_Text_SetMin Set minimum size to text dimensions

String

The String class is a single-line text input field.

Child, StringObject,
    StringFrame,
    MUIA_String_Contents, "Default text",
    MUIA_String_MaxLen, 256,
    MUIA_String_Format, MUIV_String_Format_Left,
    End,

String Attributes

Attribute Description
MUIA_String_Contents Current string contents
MUIA_String_MaxLen Maximum length
MUIA_String_Format Left, center, or right alignment
MUIA_String_Integer Parse contents as integer
MUIA_String_Accept Valid character set
MUIA_String_Reject Invalid character set

Buttons

The simplest button uses the SimpleButton macro:

Child, SimpleButton("OK"),

This is shorthand for:

Child, TextObject,
    ButtonFrame,
    MUIA_Background, MUII_ButtonBack,
    MUIA_Text_Contents, "OK",
    MUIA_Text_PreParse, "\33c",
    MUIA_InputMode, MUIV_InputMode_RelVerify,
    End,

List and Listview

Lists store lines of data. A Listview wraps a List with scrollbars and input handling.

Basic Listview

Child, ListviewObject,
    MUIA_Listview_Input, FALSE,
    MUIA_Listview_List, ListObject,
        ReadListFrame,
        MUIA_List_ConstructHook, MUIV_List_ConstructHook_String,
        MUIA_List_DestructHook,  MUIV_List_DestructHook_String,
        End,
    End,

Adding Items

char *entry = "New item";
DoMethod(list, MUIM_List_InsertSingle, entry, MUIV_List_Insert_Bottom);

Clearing the List

DoMethod(list, MUIM_List_Clear);

List Attributes

Attribute Description
MUIA_List_SourceArray Initialize from a NULL-terminated array
MUIA_List_ConstructHook Hook to construct entries
MUIA_List_DestructHook Hook to destruct entries
MUIA_List_CompareHook Hook for sorting
MUIA_List_DisplayHook Hook for custom rendering
MUIA_List_Quiet Suppress updates during bulk operations
MUIA_List_Active Currently selected entry

Specialized List Classes

Class Purpose
Floattext Display multi-line text with word wrap
Dirlist Display directory contents
Volumelist Display mounted volumes
Scrmodelist Display available screen modes

Numeric Family

Slider

Child, SliderObject,
    MUIA_Numeric_Min, 0,
    MUIA_Numeric_Max, 100,
    MUIA_Numeric_Value, 50,
    MUIA_Slider_Horiz, TRUE,
    End,

Knob

Child, KnobObject,
    MUIA_Numeric_Min, 0,
    MUIA_Numeric_Max, 255,
    End,

Levelmeter

Child, LevelmeterObject,
    MUIA_Numeric_Min, 0,
    MUIA_Numeric_Max, 100,
    MUIA_Levelmeter_Label, "Volume",
    End,

Numericbutton

A compact popup slider:

Child, NumericbuttonObject,
    MUIA_Numeric_Min, 0,
    MUIA_Numeric_Max, 999,
    End,

Cycle

A cycle gadget cycles through a set of string labels:

static char *choices[] = { "First", "Second", "Third", NULL };

Child, CycleObject,
    MUIA_Cycle_Entries, choices,
    End,

Or using the shorthand macro:

Child, MUI_MakeObject(MUIO_Cycle, NULL, choices),

Radio

Radio buttons for exclusive selection:

static char *options[] = { "Option A", "Option B", "Option C", NULL };

Child, RadioObject,
    MUIA_Radio_Entries, options,
    End,

Or using the shorthand:

Child, MUI_MakeObject(MUIO_Radio, NULL, options),

Gauge

A horizontal or vertical progress bar:

Child, GaugeObject,
    MUIA_Gauge_Current, 50,
    MUIA_Gauge_Max, 100,
    MUIA_Gauge_Horiz, TRUE,
    End,

Scale

A percentage display:

Child, ScaleObject,
    MUIA_Scale_Horiz, TRUE,
    End,

Colorfield and Palette

Colorfield

Displays a color that can be changed:

Child, ColorfieldObject,
    MUIA_Colorfield_RGB, rgb_value,
    End,

Palette

A full palette selection gadget:

Child, PaletteObject,
    MUIA_Palette_Entries, palette_entries,
    End,

Image and Bitmap

Image

Display a built-in or custom image:

Child, ImageObject,
    MUIA_Image_Spec, MUII_Close,
    End,

Standard images include MUII_Close, MUII_TapePlay, MUII_TapeStop, MUII_TapePause, MUII_ArrowLeft, MUII_ArrowRight, MUII_ArrowUp, MUII_ArrowDown, and many others.

Bitmap

Display a custom bitmap:

Child, BitmapObject,
    MUIA_Bitmap_Width, 32,
    MUIA_Bitmap_Height, 32,
    MUIA_Bitmap_Bitmap, myBitMap,
    MUIA_Bitmap_Transparent, 0,
    End,

Bodychunk

Create a bitmap from an ILBM body chunk (useful for embedding images):

Child, BodychunkObject,
    MUIA_Bitmap_Width, 32,
    MUIA_Bitmap_Height, 32,
    MUIA_Bitmap_Bitmap, myBitMap,
    MUIA_Bodychunk_Body, body_data,
    MUIA_Bodychunk_Compression, cmpByteRun1,
    MUIA_Bodychunk_Depth, 5,
    MUIA_Bodychunk_Masking, mskHasMask,
    End,

Popup Classes

Popstring

Base class for popup string gadgets. Usually subclassed rather than used directly.

Popasl

Popup an ASL file or font requester:

Child, PopaslObject,
    MUIA_Popstring_String, StringObject, StringFrame, End,
    MUIA_Popasl_Type, ASL_FileRequest,
    MUIA_Popasl_StartHook, &startHook,
    End,

Poplist

Popup a simple list:

Child, PoplistObject,
    MUIA_Popstring_String, StringObject, StringFrame, End,
    MUIA_Poplist_Array, string_array,
    End,

Popobject

Popup any arbitrary object tree:

Child, PopobjectObject,
    MUIA_Popstring_String, StringObject, StringFrame, End,
    MUIA_Popobject_Object, ListviewObject,
        MUIA_Listview_List, customList,
        End,
    End,

Register

A tabbed group where each page is a separate group:

Child, RegisterGroup(labels),
    Child, VGroup,
        /* Page 1 contents */
        End,
    Child, VGroup,
        /* Page 2 contents */
        End,
    Child, VGroup,
        /* Page 3 contents */
        End,
    End,

Where labels is a NULL-terminated array of tab titles:

static char *labels[] = { "General", "Advanced", "About", NULL };

Previous: Layout System Next: Windows and Applications