

                       MUI - MagicUserInterface

     Ein System zur Gestaltung von grafischen Benutzeroberflächen

                              Version 2.0

                         Benutzerdokumentation

                (c) Copyright 1992-94 by Stefan Stuntz

                             - ShareWare -

Einführung
**********

Das Konzept von MUI
===================

   MagicUserInterface, abgekürzt MUI, ist ein komplettes System zum
Erstellen und Verwalten von grafischen Benutzeroberflächen. Das
Generieren solcher Oberflächen war auf dem Amiga schon immer ein
großes Problem, weil dem Programmierer vom Betriebssystem dabei relativ
wenig Unterstützung geboten wird. Durch die Einführung der
`gadtools.library' unter Kickstart 2.0 war zwar ein erster Schritt in
die richtige Richtung getan, aber auch damit ist das Erzeugen einer
anspruchsvollen Oberfläche schwierig und langwierig. Es gibt zwar
mittlerweile zahlreiche Hilfsprogramme, welche die Arbeit mit der
`gadtools.library' vereinfachen sollen, doch auch die damit erzielten
Ergebnisse sind meist alles andere als befriedigend.

   Das größte Problem der herkömmlichen Tools liegt in deren relativ
unflexiblen Ergebnis. Die meisten Programme arbeiten heute immer noch
mit fest eingestellten Zeichensätzen und Fenstergrößen, obwohl das
im Zeitalter von hochauflösenden Grafikkarten eigentlich eine Zumutung
ist. Aber die Amiga-Benutzer sind ja in dieser Hinsicht leider sowieso
nicht allzu verwöhnt, selbst die Preferences-Programme auf der
Workbench verwenden alle noch den Standard-Zeichensatz `topaz/8'.

   Hier will MUI Abhilfe schaffen. Der zentrale Gedanke besteht dabei
darin, daß nur der Benutzer (und nicht der Programmierer) einer
Applikation weiß, wie diese auf seinem persönlichen Gerät am Besten
aussieht. Deswegen enthalten MUI Programme auch so gut wie keine
absoluten Größen- und Positionsangaben, der Programmierer
spezifiziert lediglich gewisse Gruppenzugehörigkeiten von
Bedienungselementen. Das eigentliche Plazieren der Objekte wird dann
während der Laufzeit des Programms nach den Vorgaben des Benutzers vom
MUI System übernommen.

   Eine MUI Applikation bietet ihrem Benutzer demnach viele wesentliche
Vorteile gegenüber normalen Programmen:

   - Zeichensatz-Sensitivität

     Bei jedem MUI Programm können die verwendeten Zeichensätze frei
     eingestellt werden. Vorbei sind die Zeiten in denen A2024-Besitzer
     mit winzig kleinen topaz/8 Programmen kämpfen müssen. MUI
     schränkt die Auswahl der Zeichensätze in keinster Weise ein, das
     gilt insbesondere auch für Proportionalschriften. Diese verleihen
     einem Programm zum einen ein wesentlich hübscheres und
     professionelleres Aussehen und verringern zum anderen den
     Platzbedarf erheblich.

   - Veränderbare Fenstergrößen

     Alle MUI-Fenster besitzen ein Sizing-Gadget mit dem sich die
     Größe beliebig bestimmen läßt. Je kleiner das Fenster, desto
     näher rücken die Bedienungselemente zusammen, je größer, desto
     mehr Platz ist für die Darstellung von Informationen vorhanden.
     Größe und Position eines Fensters lassen sich zudem dauerhaft
     abspeichern, damit man gleich nach dem Start einer Applikation
     seine Lieblingseinstellungen vor sich hat.

   - Flexibilität

     Nahezu alle Elemente einer Oberfläche können in ihrem Aussehen
     beeinflußt werden. Als Benutzer bestimmt man, wie dick die Rahmen
     sind, wie die Scrollbalken auszusehen haben, welche Images
     verwendet werden oder wieviel Platz zwischen den Zeilen eines
     Listviews eingefügt werden soll. MUI bietet hier eine Fülle von
     Möglichkeiten, auf die später noch genauer eingegangen wird.

   - Tastatur-Bedienbarkeit

     Normalerweise werden grafische Benutzeroberflächen, natürlich
     auch die von MUI, mit einer Maus bedient. Viele Benutzer würden
     allerdings auch gerne die Tastatur verwenden, weil das in manchen
     Fällen einfach schneller und bequemer ist. Deshalb lassen sich
     alle Objekte einer MUI Oberfläche, seien es nun String-Gadgets,
     Radio-Buttons oder Listen, ohne weiteres auch mit Tastatur
     steuern. Die Maus kann man dabei getrost bei Seite schieben, sie
     wird nicht mehr benötigt.

   - System-Integration

     MUI Applikationen arbeiten auf vielfältige Weise mit dem
     Betriebssystem zusammen. Jedes Programm kann etwa auf Knopfdruck
     (oder mit dem Commodities Exchange Programm) ikonifiziert und
     später wieder zum Leben erweckt werden. Außerdem besitzen alle
     Applikationen einen ARexx-Port, mit dem man unter anderem die
     komplette Benutzeroberfläche "fernsteuern" kann.

   - Umgebungsanpassung

     Einem MUI Programm ist es gleichgültig, ob es auf der Workbench
     oder einem anderem Public Screen läuft, ob die Auflösung 640x200
     oder 1280x1024 Pixel beträgt oder ob 4 oder 256 Farben zur
     Verfügung stehen. Jede Applikation kann vom Benutzer auf beliebige
     Bildschirme geschaltet werden und paßt sich dort automatisch an
     ihre Umgebung an.

   Alle eben genannten (und noch viele andere) Einstellungen können
vom Benutzer einer Applikation mit Hilfe des MUI Preferences Programms
vorgenommen werden und zwar je nach Notwendigkeit global oder für jede
Applikation einzeln.

Systemanforderungen
===================

   MUI läuft mit allen Betriebssystemversionen ab Kickstart 2.0 und
ist so programmiert daß es auch unter allen folgenden Versionen
arbeitet. Einige besondere Features bleiben jedoch den Besitzern von
aktuellen Betriebssystemversionen (Kickstart 3.0 oder aufwärts)
vorbehalten. Kickstart 1.3 wird nicht mehr unterstützt, die Zeiten sind
endgültig vorbei.

   Dringend anzuraten ist außerdem eine Festplatte, obwohl MUI sich
auch mit Diskettenlaufwerken zufrieden gibt. Bedingt durch das modulare
Konzept kann es dabei jedoch beim ersten Starten einer Applikation zu
etwas längeren Ladezeiten kommen.

   MUI stellt keine besonderen Anforderungen an den Prozessortyp, aber
auch hier gilt natürlich: je mehr desto besser. Für die Verwaltung
und das Layout von Fenstern sind teilweise komplizierte Berechnungen
nötig, die auf einem 68000er eventuell etwas langsam sind.

   Speicher kann man sowieso nie genug haben, ein Megabyte ist zum
Betrieb von MUI allerdings mehr als ausreichend. Bei (nur) 512 kByte
könnte es je nach Applikation etwas knapp werden.

Installation
============

   MUI wird mit dem Installer von Commodore ausgeliefert, deshalb ist
die Installation denkbar einfach. Ein simpler Doppelklick auf
`MUI-Install' startet den Vorgang, danach wird man vom Script weiter
geführt.

   Eine funktionsfähige MUI Installation besteht aus der
`muimaster.library' im `libs:' Verzeichnis sowie den Unterlibraries
für einige Bedienelemente im Verzeichnis `libs:mui/'. Außerdem sollte
sich das Preferences Programm zusammen mit den Voreinstellern der
Workbench im `sys:Prefs' Ordner befinden. Bei Verwendung des Installers
braucht man sich über die Anordnung jedoch keine Gedanken zu machen,
die Dateien werden automatisch an die richtigen Positionen kopiert.

Bedienen von MUI-Applikationen
******************************

Fenster
=======

   MUI Applikationen verhalten sich zunächst wie ganz normale
Amiga-Programme und können auch so bedient werden. Allerdings bieten
sie zusätzlich noch einige Features, die im folgenden etwas näher
erläutert werden sollen.

   Wie bereits in der Einleitung erwähnt, sind fast alle MUI Fenster in
ihrer Größe beliebig veränderbar. Ein Benutzer kann selbst
bestimmen, ob die Bedienungselemente eher klein und platzsparend oder
größer und übersichtlicher erscheinen. Damit man nicht bei jedem
Start einer Applikation seine bevorzugten Fenstergrößen (und
Positionen) neu einstellen muß, merken sich MUI Fenster diese Werte
automatisch und stellen sie bei einem erneuten Start des jeweiligen
Programms wieder zur Verfügung. Das gilt sowohl für die normale
Fenster-Position und Größe als auch für die entsprechenden Werte im
"Zoomed"-Zustand (nach Betätigen des Zoom-Gadgets).

   Nach einem Reset sind die gespeicherten Informationen über die
Fenster gewöhnlich verloren, es sei denn man hat nachträglich im
*Note Preferences-Programm: PRF_INTRO die Speicher-Funktion aktiviert.
Dadurch werden unter anderem sämtliche - die Fenster betreffenden Daten
- gespeichert und stehen fortan dauerhaft zur Verfügung.

   Alle Fenster einer Applikation enthalten außerdem im oberen Rahmen
neben dem Depth- und dem Zoom-Gadget noch einen dritten Knopf. Dieser
Knopf kann dazu benutzt werden, die gesamte Applikation zu
ikonifizieren. MUI schließt daraufhin alle Fenster (und eventuell
Screens) die zu der Applikation gehören und erzeugt ein kleines
AppIcon auf der Workbench.  Ein Doppelklick auf dieses AppIcon bringt
die Applikation dann wieder zum Vorschein.

Tastatur
========

   Alle Bedienungselemente in einem MUI-Fenster sind vollständig mit
der Tastatur steuerbar. Die von herkömmlichen Programmen verwendeten
Tastatur-Shortcuts (gekennzeichnet durch einen unterstrichenen
Buchstaben in dem jeweiligen Gadget) werden natürlich unterstützt,
diese Methode stößt jedoch bei Objekten wie Listviews oder
Cycle-Gadgets schnell an ihre Grenzen.

   Für MUI wurde deshalb das von String-Gadgets bekannte Prinzip des
`Tab'-Cyclings aufgegriffen und erweitert. In MUI-Fenstern können mit
`Tab' neben String-Gadgets auch alle anderen Objekte aktiviert werden.
Ein aktives Objekt kann dann jeweils mit der Tastatur bedient werden:

   - Button-Gadgets

     `Return' entspricht einem Anklicken des Knopfs mit der Maus, dabei
     wird zwischen Drücken und Loslassen unterschieden.  Ein bereits
     gedrückter Knopf kann (vor dem Loslassen von `Return') durch
     `Shift' abgebrochen werden, ohne daß die dazugehörige Aktion
     ausgelöst wird.

   - Checkmark-Gadgets

     Ein aktives Checkmark-Gadget kann mit `Space' oder `Return'
     beeinflußt werden, der Status kehrt sich dadurch jeweils um.

   - Slider

     Die vier Cursor-Tasten, zusammen mit den entsprechenden Qualifiern
     beeinflussen den Wert von horizontalen oder vertikalen Slidern.

   - Cycle-Gadgets

     Bei aktivierten *Note Cycle-Gadgets: USE_CYCLE können die
     Einträge mit den Cursor-Tasten durchgeschaltet werden. Die
     `Return'-Taste läßt das zugehörige Popup-Menü aufklappen
     (falls dieses Feature nicht abgeschaltet wurde).

   - Radio-Buttons

     Auch hier dienen die Cursor-Tasten zur Steuerung.

   - Listviews

     In einem aktivierten Listview läßt sich der Cursor mit den
     Cursor-Tasten und den entsprechenden Qualifiern zeilenweise,
     seitenweise oder ganz nach oben bzw. unten bewegen. Die
     `Return'-Taste simuliert einen Doppelklick. Falls in dem Listview
     mehrere Einträge selektiert werden können, kann dazu `Space'
     verwendet werden.

   - Fenster

     Sollte eine Applikation mehrere, gleichzeitig bedienbare Fenster
     geöffnet haben, dann können mit `Alt-Tab' bzw.  `Shift-Alt-Tab'
     diese Fenster der Reihe nach aktiviert werden.  Ein Drücken von
     `Escape' wirkt wie ein Mausklick auf das Close-Gadget (falls
     vorhanden).

   Sämtliche Erklärungen beziehen sich auf die Standard-Einstellungen,
mit dem Preferences-Programm lassen sich alle verwendeten
Tastenkombinationen beliebig einstellen.

Cycle Gadgets
=============

   In MUI Applikationen verwendete Cycle-Gadgets bieten neben ihrer
normalen Funktion (nächster Eintrag durch anklicken, vorheriger
Eintrag mit `Shift') auch optional ein Popup-Menü.  Dieses Menü
klappt auf, sobald der Text-Bereich im Cycle-Gadget angeklickt wird und
erlaubt eine schnelle und übersichtliche Selektion eines der
vorhandenen Einträge.

   Das genaue Verhalten dieser Popup-Menüs kann im Preferences-Programm
festgelegt werden (siehe *Note Cycle-Gadget Menüs: PRF_LISTVIEWS).

Commodities Interface
=====================

   Jedes MUI Programm bindet sich als Commodity ins System ein.
Dadurch hat man als Benutzer die Möglichkeit, Applikationen mit dem
`Exchange'-Programm der Workbench zu kontrollieren.  Die Kontrolle
besteht dabei im wesentlichen darin, Programme zu ikonifizieren oder
ganz zu verlassen.

ARexx Port
==========

   Alle MUI-Applikationen können über einen integrierten ARexx-Port
Befehle empfangen. Dabei stehen immer einige Standard-Befehle zur
Verfügung, die jedes Programm versteht:

   - QUIT

     Die Applikation wird beendet.

   - HIDE

     Die Applikation wird ikonifiziert.

   - SHOW

     Eine ikonifizierte Applikation wird wieder zum Leben erweckt.

   - INFO ITEM/A

     Je nach angegebenem Parameter wird der Ergebnis-String
     entsprechend aufgefüllt:

        - "title"       Titel der Applikation

        - "author"      Autor der Applikation

        - "copyright"   Copyright-Notiz

        - "description" Kurzbeschreibung

        - "version"     Versionsstring

        - "base"        Name des ARexx Ports

        - "screen"      Name des Public-Screens

   - HELP FILE/A

     Eine Liste aller ARexx-Befehle wird in die angegebene Datei
     geschrieben.  Zusätzlich zu den Standard-Befehlen kann (und
     sollte) eine Applikation natürlich noch eine Menge eigener
     Befehle definieren. Die Help-Liste wird dann auch diese Befehle
     enthalten.

   Falls beim Bearbeiten der Befehke irgendwelche Fehler auftreten,
werden die folgenden Werte as result code zurückgeliefert:

   - -1

     Fehlerhafte Definition des ARexx-Befehls im Programm. Sollte
     eigentlich nie passieren.

   - -2

     Kein Speicher für die Bearbeitung des Befehls.

   - -3

     Unbekannter ARexx-Befehl.

   - -4

     Sytanx-Error in den Parametern eines Befehls.

   Einige kleine Beispiel-Scripts sind der Distribution beigelegt und
finden sich im `Rexx'-Ordner im Hauptverzeichnis.

Preferences-Programm
********************

Allgemeines
===========

   Bei herkömmlichen Applikationen hat man als Benutzer normalerweise
keine, oder nur sehr eingeschränkte Möglichkeiten, das Aussehen und
die Funktionalität der Benutzeroberfläche zu beeinflussen. Man ist
dem Programmierer gewissermaßen hilflos ausgeliefert und muß sich
seinem Geschmack unterordnen bzw. anpassen.

   Im Gegensatz dazu ist die Oberflächengestaltung bei MUI
Applikationen wesentlich flexibler. Der Programmierer macht hier so gut
wie gar keine Angaben über das eigentliche Aussehen von
Bedienelementen, er legt lediglich deren Typ und gewisse Parameter
fest. Wie diese Elemente dann letztendlich auf dem Bildschirm
erscheinen, liegt fast ausschließlich in den Händen des Benutzers.

   So würde zum Beispiel ein Programmierer im Falle eines
File-Requesters lediglich spezifizieren, daß sein Fenster oben eine
Dateiliste, darunter ein Pfad- und ein Datei-Eingabefeld und darunter
wiederum einen OK- und einen Abbruch-Knopf besitzen soll. Er macht
jedoch keinerlei Vorgaben bezüglich Größen, Farben oder
Zeichensätzen. Alle diese, und noch viele andere Gesichtspunkte der
Bedienoberfläche können vom Benutzer einer Applikation jederzeit
nachträglich verändert und an den persönlichen Geschmack angepaßt
werden.

   Zum Vornehmen aller dieser Einstellungen dient nun das MUI
Preferences Programm. Es befindet sich nach erfolgter Installation mit
dem Installer im Prefs Ordner auf der System-Partition und wird einfach
durch Doppelklick gestartet.

Hauptfenster
============

   Das Hauptfenster des Preferences-Programms läßt sich in drei
Bereiche untergliedern. Ganz oben befindet sich ein Textfeld mit
Popup-Button und zwei weiteren Knöpfen rechts daneben, darunter dann
die verschiedenen Einstellseiten für alle Konfigurationsparameter und
schließlich am unteren Fensterrand noch eine Knopfleiste.

   Mit dem Preferences-Programm ist es möglich, sämtliche
Einstellungen nach Applikationen getrennt vorzunehmen. Im Textfeld
links oben wird dazu der Name des betroffenen Programms angezeigt, mit
dem Popup-Button daneben kann jederzeit die Applikation gewechselt
werden. MUI führt automatisch eine Liste aller bereits einmal
gestarteten Applikationen, aus diesen kann in der Popup-Liste eine
beliebige gewählt werden.

   Meist wird man jedoch Parameter global, d.h. für alle Applikationen
auf einmal, konfigurieren wollen. Dazu gibt es in der Liste der
Programme einen speziell gekennzeichneten Eintrag namens `Global', der
auch als erstes beim Start des Preferences-Programms aktiviert ist.
Unter diese Überschrift getroffene Einstellungen wirken sich auf alle
Applikationen aus, d.h. immer dann, wenn eine globale Einstellung
verändert wird, überträgt diese sich automatisch auf die
entsprechenden lokalen Werte, sofern diese vor der Änderung mit dem
globalen Wert übereingestimmt haben. Wenn also zum Beispiel global der
Zeichensatz `helvetica/13' und speziell für das MUI-Demo Programm der
Zeichensatz `Times/18' konfiguriert ist, dann wirkt sich die globale
Änderung von `helvetica/13' auf alle anderen Applikationen, nicht aber
auf das Demo-Programm aus.

   Die allermeisten Parameter werden immer in den globalen Einstellungen
konfiguriert werden, lokale Abänderungen sind nur bei relativ wenigen
Feldern, etwa bei `Iconify-Hotkey' und `Public-Screen' sinnvoll.
Theoretisch ist es aber ohne weiteres möglich, verschiedenen
Applikationen völlig verschiedene Oberflächen-Outfits zu verpassen.
In wie weit das auch sinnvoll ist, sei dahingestellt.

   Der `Info'-Knopf neben dem Applikationsnamen ist nur erreichbar wenn
gerade lokale Einstellungen editiert werden. Damit werden zu dem
entsprechenden Programm einige nützliche Informationen angezeigt,
allerdings nur dann wenn das Programm gerade läuft.

   Durch MUI's automatische Applikationslistenverwaltung sammeln sich
mit der Zeit einige Programme an, die man vielleicht inzwischen gar
nicht mehr verwenden möchte. Mit dem `Delete'-Knopf können solche
unerwünschte Applikationen aus der Liste entfernt werden.  Damit gehen
natürlich alle Einstellungen die lokal für diese Programme getroffen
wurden verloren.

   Die eigentlichen Einstellungen, entweder global oder pro Applikation,
werden dann im Hauptteil in der Mitte des Fensters vorgenommen.  Hier
befindet sich der - in Seiten aufgeteilte - Konfigurationsbereich.  Die
Seiten können mit dem Cycle-Gadget am oberen Rand, oder auch mit den
Einträgen im Page-Menü, durchgeschaltet werden. Die einzelnen
Elemente der verschiedenen Seiten werden in den folgenden Kapiteln
ausführlich beschrieben.

   Am unteren Fensterrand befinden sich die, von den System Preferences
Programmen bekannten, `Save'-, `Use'- und `Cancel'-Knöpfe sowie
zusätzlich ein `Test'-Gadget. Dieses `Test'-Gadget, ist wohl das am
meisten benutzte Gadget im Preferences Programm. Gerade zu Beginn wird
man ein wenig mit den vielen Parametern experimentieren, bis man seine
ideale Einstellung gefunden hat. Ein Druck auf `Test' veranlaßt die
aktuelle Applikation (oder alle, wenn gerade global konfiguriert wird)
dazu, sich automatisch an die neu spezifizierten Werte anzupassen. Man
kann also, nachdem man eine Applikation gestartet hat, deren
Einstellungen einem noch nicht zusagen, parallel dazu das Preferences
Programm aufrufen und die neue Applikation sozusagen im direkten Dialog
dem eigenen Geschmack anpassen.

   Mit dem `Use'-Gadget werden alle getroffenen Einstellungen temporär
(im `env:' Verzeichnis) abgelegt und das Preferences Programm beendet.
Diese Einstellungen gehen natürlich mit dem nächsten Reset verloren.

   Zur dauerhaften Speicherung dient das `Save'-Gadget, alle Parameter
werden auf Festplatte gesichert und stehen fortan immer zur Verfügung.
Neben den konfigurierten Werten speichert MUI außerdem die
Fensterpositionen einer Applikation.

   Durch `Cancel' werden alle Änderungen verworfen, Applikationen die
sich eventuell durch die `Test'-Funktion angepaßt haben, nehmen ihr
altes Aussehen wieder an. Es erfolgt hier - im Einklang mit den System
Preferences Programmen - keine Sicherheitsabfrage.

Fonts-Seite
===========

   Alle mit MUI erzeugten Benutzeroberflächen sind font-sensitiv, d.h.
sie passen sich automatisch an beliebige Zeichensätze an. Normalerweise
werden die Standard-Zeichensätze des Systems verwendet, natürlich
lassen sie die Fonts aber auch direkt einstellen.

   In MUI gibt es fünf Standard-Zeichensätze die von Applikationen
genutzt werden können:

   - `Normal'

     Dieser Zeichensatz wird für alle Texte benutzt für die nicht
     explizit ein anderer Zeichensatz konfiguriert ist.

   - `List'

     Das ist der Default-Zeichensatz für Listviews.

   - `Tiny'

     Der Tiny-Zeichensatz wird verwendet, um kleine, relativ unwichtige
     Beschriftungen anzubringen. Die Skala eines Scale-Objects (siehe
     `MUI-Demo') benutzt zum Beispiel diesen Font.

   - `Fixed'

     Wenn ein Programm einen nicht-proportionalen Zeichensatz
     benötigt, tritt dieser hier in Aktion.

   - `Title'

     In diesem Zeichensatz werden Gruppentitel angezeigt.

   Bei einem leeren Feld verwendet MUI entsprechende
Standard-Zeichensätze, und zwar für den Fixed-Font den
System-Default-Font und ansonsten den Default-Font des Screens.
Empfehlenswert ist es, für den `Title' Zeichensatz einen etwas
kleineren Font zu wählen.  Dadurch passen sich die Titel besser dem
umgebenden Rahmen an und werden nicht vielleicht an unerwünschten
Stellen abgeschnitten.

Frames-Seite
============

   Rahmen sind ein wichtiges Element um eine Benutzeroberfläche
übersichtlich zu gestalten und einzelne Gruppen von Objekten voneinander
abzugrenzen. Rahmen sind aber auch Geschmackssache, deswegen kann man
sie bei MUI alle in ihrem Aussehen beeinflussen.

   Bei den in herkömmlichen Amiga-Programmen verwendeten Rahmen sind
die vertikalen Linien immer doppelt so dick wie die horizontalen Linien.
Dies rührt wohl noch aus den Zeiten her, in denen 640 x 256 die
übliche Auflösung war, die Pixel waren dabei ungefähr doppelt so hoch
wie breit.  Im Zeitalter von Flickerfixern und hochauflösenden
Grafikkarten etablieren sich jedoch immer mehr Auflösungen, bei denen
das Verhältnis von Pixel-Breite zu Pixel-Höhe ungefähr 1:1 beträgt,
es besteht also kein Grund mehr, Rahmen unnötig zu verbreitern. MUI
bietet deshalb bei `Width' die Möglichkeit, von den üblichen dicken
Rahmen auf dünne Rahmen umzustellen.

   Eingerahmte Gruppen können in ihrem Rahmen einen Titel beinhalten.
Die Farbe dieses Gruppen-Titels kann mit der `Title' Einstellung
konfiguriert werden. Drei Möglichkeiten stehen hier zur Auswahl,
entweder schwarz, weiß oder mit Schattenwurf.

   Der Gruppentitel wird im oberen Teil eines Gruppenrahmens immer
horizontal zentriert angezeigt. Mit `Pos.' kann die vertikale Position
dieses Titeltexts beeinflußt werden. Bei `centered' erscheint der
Titeltext auch vertikal zentriert in der Mitte des Rahmens, bei `above'
befindet sich die Grundlinie des Textes genau auf Rahmenhöhe. In
Zusammenhang mit dieser Einstellung steht auch der innere Abstand eines
Gruppenrahmens, der im nächsten Abschnitt besprochen wird.

   Beim Erstellen von Rahmen in einer MUI-Applikation spezifiziert der
Programmierer nicht das Aussehen sondern lediglich den Typ eines
Rahmens. So bekommt zum Beispiel ein Button einen Button-Rahmen oder
ein String-Gadget einen String-Rahmen. Wie diese Rahmen dann im
Endeffekt aussehen, das bestimmt der Benutzer. Dazu sind alle
möglichen Typen in einer Liste aufgeführt, jeweils mit einem kleinen
Bild welches das gerade eingestellte Aussehen anzeigt. Die einzelnen
Rahmen werden wie folgt verwendet:

   - Button

     für normale Button-Gadgets, wie zum Beispiel der `Edit'-Button
     unter dieser Liste.

   - Image

     für kleine Buttons die nur ein Image enthalten, zum Beispiel die
     Pfeil-Gadgets in einem Scrollbalken.

   - Text

     für Text-Felder die weder angeklickt noch editiert werden können
     und nur zur Information dienen, zum Beispiel Statuszeilen.

   - String

     für String Gadgets.

   - Read-List

     für Listviews die lediglich zur Anzeige einer Liste dienen und in
     denen nichts angeklickt werden kann.

   - Input-List

     für Listviews in denen der Benutzer Einträge selektieren kann,
     zum Beispiel alle Listviews im Preferences-Programm.

   - Prop

     für alle Proportional-Gadgets, unter anderem verwendet in
     Scrollbalken und Schiebereglern.

   - Gauge

     für Füllstandsanzeigen.

   - Group

     zum Gruppieren von Objekten.

   - Popup

     für die Rahmen der Cycle-Gadget Popup-Menüs.

   - Virtual

     für die Einrahmung der (bisher selten benutzten) virtuellen
     Gruppen.

   - Virtual

     für Slider-Gadgets.

   Mit den rechts neben der Rahmen-Liste befindlichen Gadgets läßt
sich das Aussehen des aktivierten Rahmens beeinflussen. Dabei kann mit
dem `Type'-Cycle-Gadget aus einer Liste von vorgefertigten Designs
eines ausgewählt werden. Alle Designs existieren in zwei Formen,
entweder `Raised' (herausragend) oder `Recessed' (eingedrückt).

   Zu einem Rahmen gehört außerdem noch der Abstand, der ihn von
seinem inneren Objekt trennt. Dieser Abstand kann mit den vier
Schiebereglern bestimmt werden. Normalerweise wird man wohl für `Left'
und `Right' sowie `Top' und `Bottom' identische Werte einstellen,
deswegen sind diese Gadgets einseitig miteinander verbunden.  Sobald
also der `Left'- bzw. `Top'-Slider bewegt wird, bewegen sich `Right'-
bzw. `Bottom'-Slider automatisch mit. Um dennoch getrennte
Einstellmöglichkeiten zu gewährleisten, gilt diese Verbindung nicht in
der anderen Richtung, ein Verschieben von `Right/Bottom' beeinflußt
die Positionen von `Left/Top' nicht.  Je nach Zeichensatz kann es
durchaus sinnvoll sein, zum Beispiel beim Button-Frame den unteren
Abstand etwas kleiner als den oberen zu wählen, um damit durch
Unterlängen von Buchstaben eventuell verursachte Unsymmetrien
auszugleichen.

   Rechts oben auf der Rahmen-Seite können noch einige Werte
eingestellt werden, die nicht direkt mit einem speziellen Rahmen
verbunden sind, aber dennoch zum Komplex Rahmen und Abstand gehören.

   Die vier Schieberegler unter `Window' bestimmen dabei pixelgenau den
Abstand, der zwischen dem Rahmen des Fensters und dessen Inhalt
eingefügt wird. Auch hier wird man üblicherweise für `Left' und
`Right' sowie `Top' und `Bottom' identische Werte einstellen, deswegen
sind auch diese Gadgets einseitig miteinander verbunden.

   Die beiden `Group'-Werte beeinflussen den Abstand der zwischen
Elementen von horizontalen bzw. vertikalen Gruppen eingefügt wird.
Gerade damit, und mit der Einstellung für den `Group-Frame' kann man
Oberflächen entweder eng und platzsparend oder aber weit und
augelockert gestalten.  Die `Radio' Schieberegler schließlich sind
für das Aussehen der (selten benutzten) Radio-Button Gadgets
verantwortlich.

Lists-Seite
===========

   Hier finden sich gesammelt einige Konfigurationsmöglichkeiten für
Listen, Popup-Menüs und in verschiedene Seiten aufgeteilte Gruppen.

   Der `Leading'-Wert bestimmt die Anzahl der zusätzlichen Pixel, die
zwischen den Zeilen eines Listviews eingefügt werden sollen um die
Lesbarkeit zu erhöhen. Je nach verwendetem Zeichensatz und
persönlichem Geschmack können hier durchaus größere Werte sinnvoll
sein, insbesondere bei kleinen Fonts wie `topaz/8' wird die
Übersichtlichkeit dadurch erheblich erhöht.

   Mit `Smoothing' kann der bei vielen Leuten beliebte "Nachzieh-Effekt"
eines Listviews eingestellt werden. Dieser Effekt bewirkt, daß die
Position einer Liste beim Scrollen nicht unmittelbar an den
Scrollbalken angepaßt wird, sondern diesem in, von der Geschwindigkeit
der Bewegung abhängigen Schritten, folgt.  Eine `0' verhindert das
Nachziehen vollständig.

   Das Smoothing ist nur dann aktiv wenn die Listviews auch wirklich
pixelorientiert arbeiten. Normalerweise wird immer nur um ganze Zeilen
gescrolled, die Pixel-Orientierung muß erst mit dem `Pixel'-Gadget
eingeschaltet werden.

   Bei Listviews die das gleichzeitige Anwählen von mehreren Einträge
gestatten, den sogenannten Multi-Select-Listviews, kann der Benutzer
zwischen zwei verschiedenen Selektions-Mechanismen wählen.  Bei
`Shifted' muß, ähnlich der Workbench, nach der ersten Selektion die
`Shift'-Taste gehalten werden, sonst werden die bereits selektierten
Einträge wieder deselektiert.  Mit `Always' kann das Drücken der
Shift-Taste unterbleiben.

   `Refresh' bestimmt die Art in der eine Liste neu aufgebaut wird: bei
`linear' werden die Zeilen wie üblich von oben nach unten gedruckt,
`intermixed' verursacht einen ineinander verschränkten Aufbau.

   Die Position der Pfeil-Gadgets an den Scrollbalken eines Listviews
kann mit dem `Arrows'-Gadget beeinflußt werden.  Hier stehen drei
Möglichkeiten zur Auswahl.

   MUIs Cycle-Gadgets bieten als Bedienungserleichterung ein
Popup-Menü, das bei Betätigen das Gadgets aufklappt und eine einfache
und schnelle Selektion des gewünschten Eintrags zuläßt.  Mit `Level'
kann man bestimmen, ab wieviel Einträgen ein Cycle-Gadget solch ein
Popup-Menü zur Verfügung stellen soll. Falls man die Popup-Menüs gar
nicht mag, stellt man diesen Wert einfach genügend groß ein und wird
sie nie zu Gesicht bekommen.

   Normalerweise erscheinen die Popup-Menüs immer direkt unter dem
Gadget.  Zwecks schnellerer Bedienung und Minimierung der Mausbewegung
kann man sie aber auch so konfigurieren, daß der gerade aktive Eintrag
immer direkt unter dem Mauszeiger erscheint. Dazu dient das `Position'
Gadget mit seinen beiden Einstellmöglichkeiten.

   Die Benutzung eines bisher im Amiga-Betriebssystem nicht bekannten
Bedienelements, das sogenannte `Register', kann mit den beiden
folgenden Slidern bestimmt werden. Dieser `Register' wird immer dann
verwendet, wenn in einem Fenster mehrere Seiten vorhanden sind unter
denen der Benutzer beliebig umschalten kann. Normalerweise werden
solche Seiten von MUI, wie beim Amiga üblich, mit einem Cycle-Gadget
am oberen Gruppenrand implementiert. Allerdings kann diese Darstellung
auch durch eine Art Karteikasten ersetzt werden, wie er inzwischen bei
vielen anderen Betriebssystemen üblich ist. Mit `Register Level'
bestimmt man, bis zu welchen Verschachtelungstiefen Karteikästen
anstelle von Cycle-Gadget verwendet werden sollen. Stell man hier zum
Beispiel den Wert 1 ein, dann werden äußere Seitengruppen immer als
Karteikasten dargestellt, falls darin jedoch weitere Gruppen vorhanden
sind, erscheinen diese dann wie gewohnt mit einem Cycle-Gadget. Solche
Verschachtelungen tauchen unter anderem im Preferences-Programm auf der
Images-Seite auf.

   Karteikästen sind übersichtlicher und erlauben schnellere Bedienung
als Cycle-Gadgets. Allerdings verlieren sie, abhängig von Fenster- und
Zeichensatzgrößen, ab einer gewissen Anzahl von Seiten ihren Sinn.
Deswegen kann man unter `Max Pages' einstellen, ab welcher Seitenzahl
die Karteikästen unabgängig vom `Register-Level' immer durch
Cycle-Gadgets dargestellt werden sollen.

Images-Seite
============

   Grafische Benutzerobeflächen arbeiten oft mit kleinen Bildern, im
folgenden auch Images genannt. Die am häufigsten verwendeten Images
sind wohl die Pfeile, sichtbar etwa im Scrollbalken eines Listviews.
Für viele derartige Positionen stellt MUI Standard-Images zur
Verfügung.  Das hat zum einen den Vorteil, daß nicht jeder
Programmierer selbst solche Images erzeugen muß, zum anderen kann der
Benutzer das Aussehen frei einstellen.

   Außerdem kann man unter MUI für viele Objekte verschiedene
Hintergrund-Farben/Pattern einstellen. Wenn man das Glück hat, mit
einer leistungsfähigen Grafikkarte arbeiten zu können, sollte man
hier undedingt ein wenig experimentieren.  Leicht unterschiedliche
Grautöne für Fenster-, Button- und Listview-Hintergründe geben einer
Oberfläche ein wesentlich professionelleres und vor allem
übersichtlicheres Aussehen als man es von normalen Programmem gewohnt
ist.

   Hier nun eine Aufstellung der vorhandenen Images unt Hintergründe,
wie sie sich auch in der Liste im Preferences-Programm befinden.

   - `ArrowUp', `ArrowDown', `ArrowLeft', `ArrowRight'

     Vier Pfeile in die verschiedenen Richtungen.

   - `CheckMark', `Radio-Button', `Cycle'

     Die bekannten Images aus den jeweiligen Bedienungselementen.  Das
     Besondere am Checkmark-Image ist, daß es nur im selektierten
     Zustand sichtbar ist.

   - `PopUp', `PopFile', `PopDrawer'

     Images für Popup-Buttons neben String-Gadgets. Wenn Dateien oder
     Verzeichnisse abgefragt werden sollen, wird `PopFile' bzw.
     `PopDrawer' verwendet, ansonsten `PopUp'.

   - `Drawer', `HardDisk', `Disk', `Chip', `Volume', `Network', `Assign'

     Images für Einträge in einem File-Requester.

   - `TapePlay', `TapePlayback', `TapePause', `TapeStop', `TapeRecord',
     `TapeUp', `TapeDown'

     Images für Tapedeck-Anwendungen.

   - `Prop-Knob', `Slider-Knob'

     Schieberegler im Proportionalgadget und Slidern.

   - `BG Window'

     wird überall da verwendet wo sonst kein anderer Hintergrund
     zutrifft, also insbesondere da wo sich keine Objekte befinden.

   - `BG Groups'

     befindet sich hinter dem Inhalt von Karteikästen oder virtuellen
     Gruppen.

   - `BG Requester'

     der Hintergrund für MUI-Requester, findet sich zum Beispiel hier
     im `About'-Requester.

   - `BG Textfield'

     eingerahmte Text-Felder, zum Beispiel Statuszeilen, werden mit
     diesem Hintergrund hinterlegt.

   - `BG Button'

     wird für große Buttons die üblicherweise Text enthalten oder
     auch für Cycle-Gadgets verwendet.

   - `BG Selected Gadget'

     ein mit der Maus angeklicktes Gadget wird (neben der Invertierung
     des Rahmens) durch diesen Hintergrund kenntlich gemacht.

   - `BG Listview'

     erscheint hinter den Zeilen eines Listviews.

   - `BG Listview Cursor'

     der Cursor in einem Listview.

   - `BG Listview Selected'

     selektierte Einträge in einem Listview.

   - `BG Listview Selected+Cursor'

     der Cursor auf einem selektierten Eintrag im Listview.

   - `BG Prop-Gadget Container'

     entspricht dem Hintergrund in einem Proportional Gadget, also der
     Bereich auf dem sich der Schieberegler hin und her bewegt.

   - `BG Slider Container'

     entspricht dem Hintergrund in einem Slider Gadget.

   Für jedes aktivierte Image kann auf der rechten Seite das Aussehen
nahezu beliebig eingestellt werden. MUI bietet dabei einige
verschiedene Möglichkeiten an, die mit dem Cycle-Gadget (oder mit der
Karteikasten-Gruppe) angewählt werden können.

   - Pattern

     Ein Pattern ist ein wenig kompliziertes Muster, einige davon sind
     bereits in MUI eingebaut. Pattern eignen sich hauptsächlich als
     Hintergrund-Image, können aber auch für einige Standard-Images,
     etwa für den Prop-Gadget Knopf sinnvoll verwendet werden.

   - Builtin

     Für (fast) alle Standard-Images ist in MUI jeweils ein Typ fest
     eingebaut. Diese eingebauten Images sind aus Vektoren
     zusammengesetzt und können sich daher in ihrer Größe jeweils an
     den verwendeten Zeichensatz anpassen.

   - Pen

     Hier kann einfach ein ausgefülltes Rechteck in einer bestimmten
     Farbe gewählt werden. Für die Bestimmung dieser Farbe stehen
     wiederum verschiedene Möglichkeiten zur Auswahl. Entweder kann
     einer der aus den System-Voreinstellern bekannten System-Pens oder
     ein direkter Eintrag in der Colormap des Bildschirms refernziert
     werden. Letzteres ist vor allem in Zusammenhang mit einer
     installierten MagicWorkbench von Martin Huttenloher von großer
     Bedeutung. Die Einführung von zwei zusätzlichen Pens (Halfshine
     und Halfshadow) bietet ungeahnte Möglichkeiten beim
     Oberflächen-Design. Eine dritte, nur unter Kickstart 3.0+
     vorhandene Möglichkeit eine Farbe zu bestimmen bietet das
     Farbrad. Hier kann einfach eine beliebige Farbe vorgegeben werden,
     MUI versucht dann, diese falls benötigt zu allokieren. Das ganze
     ist nur dann sinnvoll, wenn der entsprechende Bildschirm auch
     genug unbenutzte Farben zur Verfügung stellt.

   - Boopsi

     Ein Boopsi-Image ist eigentlich ein Programm, das immer dann
     aufgerufen wird wenn es gezeichnet werden soll. Solche Images
     liegen als "shared library" vor und sollten sich im Ordner
     `sys:classes/Images' auf der System-Partition befinden.  Bei MUI
     liegen einige dieser Images bei die insbesondere für den
     Schieberegler eines Proportional-Gadgets gedacht sind.

   - Brush

     Das sind in einer speziellen Farbpalette abgespeicherte IFF
     Brushes.  Diese Farbpalette erlaubt MUI, die Images an die Farben
     des Bildschirms anzupassen, auf dem diese dargestellt werden
     sollen. Auf der MUI-Diskette werden viele solcher Images
     mitgeliefert, natürlich können auch mit einem entsprechenden
     Malprogramm eigene erstellt werden. Brushes sind nicht in der
     Größe veränderbar, erlauben aber durch ihr pixelgenaues Design
     bestmögliche Qualität.

   - Alien (nur Kickstart 3.0 oder höher)

     Ab Kickstart 3.0 gibt es im Amiga Betriebssystem die sogenannten
     `Datatypes'. Damit ist es möglich, beliebige Bild-Dateien, seien
     es nun IFF, GIF oder sonstige Formate, mit einigen wenigen
     Befehlen einzuladen. MUI unterstützt diese Datatypes und erlaubt
     damit die Verwendung von beliebigen Bildern als Hintergrund oder
     Standard-Image in allen Applikationen.

   Zum Einstellen des aktiven Images genügt ein Doppelklick auf den
gewünschten Eintrag in einer der Listen. Bei der großen Anzahl kann
das jedoch schnell in einer größen Klickorgie enden, deswegen bietet
der `Guess' Button die Möglichkeit, viele Images auf einmal zu
konfigurieren. Dabei müssen zunächst in der linken alle
einzustellenden Images mittels Multiselect angeählt werden, nach einem
Druck auf `Guess' ordnet MUI dann diesen Images automatisch
entsprechende Einträge aus der gerade angezeigten rechten Liste zu.

Pens-Seite
==========

   MUI verwendet beim Zeichnen der Benutzeroberflächen nicht direkt die
System-Pens sondern definiert hier um flexibel und erweiterbar zu sein
eigene Stifte. Vorhanden sind dabei die folgenden Einträge:

   * Shine

     identisch mit dem entsprechenden System-Stift.

   * Halfshine

     verwendet in diversen eingebauten Rastern und beim Rahmen-Design
     XEN.

   * Background

     identisch mit dem entsprechenden System-Stift.

   * Halfshadow

     verwendet in diversen eingebauten Rastern und beim Rahmen-Design
     XEN.

   * Shadow

     identisch mit dem entsprechenden System-Stift.

   * Text

     identisch mit dem entsprechenden System-Stift.

   * Fill

     identisch mit dem entsprechenden System-Stift, wird in MUI nur
     selten um diverse der eingebauten Raster zur erzeugen.

   * ActiveObj

     Diese Farbe wird für die Umrandung von aktiven Objekten verwendet.

   Die Einstellung der Pens erfolgt dabei wie auf der Images-Seite mit
der entsprechenden Gruppe.

System-Seite
============

   Auf der System-Seite finden sich einige Einstellungen, welche die
Zusammenarbeit von MUI mit dem Betriebssystem betreffen. Dies sind die
einzigen Einstellungen, die auch für nicht registrierte Benutzer
verfügbar sind.

   An oberster Stelle findet sich hier ein String-Gadget mit
Popup-Button, in dem der Name eines Public-Screens eingestellt werden
kann, auf dem sich die Fenster einer Applikation öffnen sollen. Über
die Popup-Liste erreicht man den in MUI integrierten Screen-Manager,
mit dem solche Public-Screens erzeugt werden können.

   Zum Refresh von MUI-Fenstern stehen zwei Möglichkeiten zur Auswahl,
die mit dem `Window Refresh' Gadget eingestellt werden können.  Der
`smart' Refresh braucht mehr Chip-Memory, ist dafür aber schneller als
der `simple' Refresh.

   Beim Neuzeichnen eines Fensters bietet MUI ebenfalls zwei
verschiedene Möglichkeiten an, die mit dem `Redraw' Gadget eingestellt
werden können. In der Einstellung `fast/ugly' wird vor einem
Neuzeichnen (nach einer Resize-Operation) zunächst der komplette
Fensterinhalt gelöscht, das nachfolgende Zeichnen geht dann etwas
schneller als im `slow/nice' Modus wo das Löschen unterbleibt.

   Bei `Startup'- und `Shutdown'-Command können zwei Befehle
eingetragen werden, die automatisch vor dem Start bzw. nach dem Ende
einer Applikation ausgeführt werden sollen. Hier könnte zum Beispiel
mit einem externen Screen-Manager ein Public-Screen für die
Applikation geöffnet werden, sofern die Fähigkeiten des integrierten
Screen-Managers nicht ausreichen. Oder ein simpler echo-Befehl könnte
in einem Logfile mitspeichern, wann eine Applikation gestartet und
beendet wurde.

   Mit dem `Iconify-Hotkey' kann man eine Tastenkombination festlegen,
mit der eine bestimmte Applikation ikonifiziert (und wieder
hervorgeholt) werden kann. Das Format für den Eintrag entspricht dem
Standard Input-Description Format der commodities.library.

   Wenn `Iconify-Gadget' angeschaltet ist, dann bekommt jedes Fenster
der Applikation im Rahmen ein zusätzliches Gadget, das dann bei
Betätigung den Iconify-Prozeß auslöst.

   Normalerweise wird für eine ikonifizierte Applikation auf der
Workbench ein AppIcon erzeugt. Durch Doppelklick auf dieses AppIcon
kann dann die Applikation wieder aktiviert werden. Bei ausgeschaltetem
`Iconify-Icon' erscheint kein solches Icon, zum Aktivieren bleibt nur
noch die Möglichkeit eines eventuell konfigurierten Hotkeys oder ein
Benutzen des Commodities Exchange Programms.

   Im Listview am rechten Rand der Seite können alle Tasten
konfiguriert werden, die zum Steuern von MUI Applikationen verwendet
werden.  Die Einträge in der Liste sprechen für sich, das Format ist
wie üblich das Standard-Format für die Input Event Beschreibungen der
`commodities.library'.  Änderungen werden hier nur nach Bestätigung
durch die `Return'-Taste im String-Gadget akzeptiert. Vorher wird der
eingegebene String allerdings noch auf Korrektheit überprüft und
gegebenenfalls zurückgewiesen.

   Besondere Beachtung verdient der `Press'-Key. Bei dieser Taste ist
MUI darauf angewiesen, auch beim Loslassen entsprechende Aktionen
durchführen zu können. Deswegen muß diese Taste als
Qualifier-Beschreibung unbedingt den String `-upstroke' enthalten.

Public-Screen-Manager
=====================

   Beim Starten einer Applikation sucht MUI nach dem für diese
Applikation eingestellten Public-Screen. Falls dieser nicht vorhanden
ist, wird in der Liste des MUI-Screen-Managers nach einem
entsprechenden Eintrag gesucht und der Bildschirm falls gefunden mit
den eingestellten Spezifikationen geöffnet.

   Den Public-Screen Manager erreicht man durch Betätigen der `New'-
und `Edit'-Knöpfe in der Popup-Liste beim Einstellen des
Public-Screens einer Applikation. Er läuft unabhängig vom Rest des
Preferences-Programms in einem separaten Fenster, bei Bedarf können
auch mehrere Manager gleichzeitig geöffnet werden.

   Hier können Auflösung, Farbpalette sowie einige weitere Daten
eines neuen Public-Screens eingestellt werden.  Das Fenster ist
deswegen auch in drei Seiten unterteilt, die mit dem Cycle-Gadget am
oberen Rand umgeschaltet werden können.

   Auf der `Attributes'-Seite finden sich im einzelnen folgende
Einstellmöglichkeiten:

   Im `Public Name' String Gadget kann man einen Namen festlegen, unter
dem der Bildschirm später referenziert wird. Um Verwechslungen zu
vermeiden, sollten alle im System verwendeten Public Screens
unterschiedliche Namen haben. Hinter `Title' verbirgt sich wie erwartet
der Text, der in der Titelzeile angezeigt wird und bei `Font' läßt
sich der Default-Zeichensatz einstellen, mit dem der Bildschirm und die
darauf geöffneten Fenster dargestellt werden sollen. Das
`Background'-Gadget ist nur unter Kickstart 3.0 oder höher verfügbar
und erlaubt die Konfiguration eines Hintergrundbildes. Hier werden
wieder die `Datatypes' verwendet, man kann dadurch die verschiedensten
Bildformate verwenden.

   Neben diesen essentiellen Werten kann ein Bildschirm noch einige
andere Eigenschaften besitzen, die im folgenden aufgezählt werden:

   - `Auto Scroll'

     Wenn der Screen größer als der sichtbare Bereich definiert
     wurde, dann wird er automatisch gescrollt sobald die Maus an einen
     Rand stößt.

   - `Draggable'

     Screens ohne dieses Attribut können nicht verschoben werden.

   - `Exclusive'

     Der Bildschirm kann das Display nicht mit anderen Bildschirmen
     teilen, er wird immer alleine dargestellt (erst ab Kickstart 3.0).

   - `Interleaved'

     Dieses Attribut vermindert falls gesetzt das Flimmern das
     besonders beim Scrollen von Listen auf vielfarbigen Screens
     auftritt (erst ab Kickstart 3.0).

   - `Open Behind'

     Der Screen wird unauffällig hinter allen anderen Screens
     geöffnet.

   - `System Default'

     Der Screen wird zum System Default Screen erklärt. Alle Fenster
     die auf dem System Default Screen aufzugehen wünschen (z.B.
     Shell-Fenster) werden dadurch umgelenkt.

   Die Auflösung und Größe eines Bildschirms läßt sich auf der
`Display Mode' Seite einstellen. In einer Liste werden dazu alle
verfügbaren Modi angezeigt. Außerdem finden sich am unteren
Fensterrand Gadgets für Breite, Höhe und Tiefe sowie eine Einstellung
für den zu verwendenden Overscan-Typ.

   Die Farbpalette und die Zuordnung der System-Stifte eines Bildschirms
kann man schließlich mit Hilfe der `Palette'-Seite bestimmen.  Das
hier verwendete Verfahren ist ähnlich des im System benutzten
Palette-Voreinsteller-Programms. Anzumerken ist hier allerdings daß
die gerade eingestellten Farben nur unter Kickstart 3.x und auch da nur
dann auch wirklich sichtbar sind, wenn genug freie Farben auf dem
Bildschirm zur Verfügung stehen. Die Mehrheit aller Benutzer wird
momentan leider nur schwarze Kästchen sehen und ist beim Einstellen
etwas auf ihre Phantasie angewiesen.  Die MUI Palette-Einstellung wird
erst bei mindestens 32 Farben so richtig schön.

CLI-Interface
=============

   Das Prefs-Programm bietet auch ein kleines CLI-Interface, das
eigentlich nur dazu dient, den eingebauten Screen-Manager auch anderen
Programmen zur Verfügung zu stellen. Die Syntax für den Aufruf mit
Parametern lautet:

     NAME,OPEN/S,CLOSE/S

NAME:
     Name eines (vorher konfigurierten) Public Screens

OPEN:
     Screen öffnen

CLOSE:
     Screen schließen

ARexx Port
==========

   Das Preferences Programm enthält einen einfachen ARexx-Port mit den
folgenden vier Befehlen:

   * `SAVE'

     Entspricht der Funktion des `Save'-Knopfs.

   * `USE'

     Entspricht der Funktion des `Use'-Knopfs.

   * `TEST'

     Entspricht der Funktion des `Test'-Knopfs.

   * `CANCEL'

     Entspricht der Funktion des `Cancel'-Knopfs.

   Natürlich können daneben auch die *Note Standard-ARexx-Befehle:
USE_AREXX verwendet werden.

Sonstiges
*********

Registration
============

   "MagicUserInterface" ist ein umfangreiches Produkt, in das ich viel
Arbeit und Zeit (und wahrscheinlich ein Semester meines Studiums)
investiert habe. Ich hoffe allerdings, daß sich diese Arbeit gelohnt
hat und daß schon bald viele - auf MUI basierende - Applikationen mit
schönen und flexiblen Benutzeroberflächen verfügbar sind.

   Damit auch der finanzielle Aspekt nicht ganz unberücksichtigt
bleibt, habe ich mich entschlossen, MUI als Shareware zu vertreiben.
Mit der unregistrierten Version ist das Speichern einiger Einstellungen
im Preferences-Programm nicht möglich. Diese Einschränkungen
beeinflussen allerdings in keinster Weise die Funktionalität von
Applikationen, alle wichtigen Parameter (etwa Fenster-Positionen,
Public-Screens und System-Einstellungen) sind auch ohne Registrierung
möglich. Für die übrigen Werte werden dann die integrierten
Standard-Einstellungen verwendet, auch damit sind MUI Applikationen
immer noch funktioneller und attraktiver als die meisten anderen
Programme.

   Wer allerdings die weitergehenden Möglichkeiten von MUI
(verschiedene Zeichensätze, Rahmen, Images, Hintergrund-Pattern)
nutzen möchte, der sollte sich registrieren lassen.  Registrierte
Benutzer erhalten eine Diskette mit der jeweils aktuellsten Version,
zusammen mit einem Keyfile. Mit diesem Keyfile können dann sämtliche
Einstellungen im Preferences-Programm abgespeichert werden und stehen
dauerhaft zur Verfügung.  Natürlich bleibt das Keyfile für alle
zukünftigen Versionen von MUI gültig, spätere Updates können also
einfach von Mailboxen oder PD-Disketten bezogen werden.

Der Preis für eine Registrierung beträgt

     20.- DM  (D-Mark),
     20.- SFr (Schweizer Franken),
     90.- FF  (French Francs),
     15.- US$ (US-Dollar)
   oder einen Betrag in irgendeiner anderen Währung der 20.- US$
(zwanzig!) entspricht. Zwanzig deswegen weil ich das Geld dann bei
meiner Bank umtauschen und dafür Gebühren bezahlen muß.

   Als schnellster und einfachster Weg sich registrieren zu lassen
bietet sich an, das beiliegende Bestellformular auszufüllen und es in
einem Brief zusammen mit dem Geld an die folgenden Adresse zu schicken:

     Stefan Stuntz
     Eduard-Spranger-Straße 7
     80935 München
     DEUTSCHLAND

   Statt Bargeld können natürlich auch Euro-Cheques verwendet werden,
allerdings bitte ich von jeglicher Art von Auslands-Cheques abzusehen,
diese einzulösen kostet teilweise unverschämt hohe Gebühren.

   Innerhalb Deutschlands kann man die Registration auch einfach per
Banküberweisung an die

     Stadtsparkasse München, BLZ 701 500 00, Konto 35-169929

durchführen. Dabei ist unbedingt darauf zu achten, daß auf dem
Überweisungsformular unter `Verwendungszweck' die komplette Anschrift
angegeben wird.

   Alle Registrierungen werden schnellstmöglich bearbeitet und sollten
im Inland innerhalb von ein bis zwei Wochen ausgeliefert werden.
Bedingt durch die Postlaufzeiten kann eine Auslandsregistrierung etwas
länger dauern. Deswegen gibt es für MUI in einigen Ländern
Registration Sites:

   - U.S.A. und Kanada

          Robert Blayzor
          P.O. Box 807
          Johnstown, NY 12095-0807
          
          Phone: (518) 883-5326 (data/fax/bbs)
          
          electronic mail:
          
          InterNet/UUCP: robertb@liquid.albany.ny.us
                FidoNet: 1:267/131.0
               AmigaNet: 40:714/1.0
                 C-Link: 911:6150/1.0
          
          Make all payments payable to: Robert Blayzor
          
          Acceptable payment methods: US Money Orders & Bank/Personal Checks
          
          Personal checks must wait 10-15 days to clear unless certified!
          (All payments in US dollars ONLY!)

Updates
=======

   Wann immer eine neue Version von MUI erscheint, wird das in den
entsprechenden Brettern einiger Datennetze angekündigt werden. Das neue
Archiv findet sich dann sicher bald in vielen Mailboxen und ist
außerdem auf allen `aminet' ftp-servern zu bekommen. Größere Updates
werden auch auf PD-Disks erhältlich sein.

   Wie bereits erwähnt, brauchen registrierte Benutzer weder ein neues
Keyfile noch irgendwelche speziellen Programmversionen, Updates können
sofort mit allen ihren Möglichkeiten genutzt werden.

   Natürlich werden alle zukünftigen MUI Versionen zu den vorher
erschienenen vollständig kompatibel sein. Applikationen die mit MUI
1.0 entwickelt worden sind, werden auch noch nach geraumer Zeit unter
MUI 7.0 ihren Dienst versehen. Sie werden dabei automatisch von
eventuellen Verbesserungen im Design oder in der Funktionalität der
Oberfläche profitieren.

Support
=======

   Ich werde mich bemühen, alle Anfragen bezüglich MUI
schnellstmöglich zu beantworten. Dabei werden die Probleme von
registrierten Benutzern bevorzugt behandelt. Bitte wann immer möglich
electronic mail als Kommunikationsmedium verwenden, das ist sowohl
billiger als auch schneller, schont die Umwelt und erleichtert die
Arbeit. Electronic mail beantworte ich normalerweise noch am selben
Tag, bei Papierbriefen kann das ganze bedeutend länger dauern. Dann
ist vielleicht ein Anruf eher angesagt.

     Sackpost: Stefan Stuntz
               Eduard-Spranger-Straße 7
               80935 München
               DEUTSCHLAND
     
      Telefon: +49-89-313-1248
     
       e-mail: stuntz@informatik.tu-muenchen.de

Danksagungen
============

   MUI entstand aus der Enttäuschung darüber, wie wenig Unterstützung
einem Programmierer beim Erstellen von Benutzeroberflächen seitens des
Betriebssystems gewährt wird. Meine ersten Denkanstöße in Richtung
objektorientierter Oberflächengestaltung erhielt ich von Armin Sander,
bei dem ich mich an dieser Stelle für die vielen Tips herzlich
bedanken möchte. Er hat damit den Grundstein für MUI gelegt.

   Ohne die tatkräftige Mithilfe meiner Betatester wäre MUI sicher
niemals fertiggestellt worden. Dabei beschränkten sich ihre Aufgaben
nicht nur auf bloßes Ausprobieren sondern vor allem auch auf das
Erstellen der mitgelieferten Beispielprogramme.  Daß aus einigen
dieser Beispielprogramme richtige Applikationen geworden sind, macht
das große Engagement und die Begeisterung mit der sie alle bei der
Sache waren um so mehr deutlich.

   Im einzelnen haben mitgeholfen:

   - Stefan Becker

     ... hat trotz chronischen Zeitmangels einige wertvolle Tips und
     Hinweise gegeben. Außerdem waren mir Teile seines ToolManager
     Sourcecodes bei der Entwicklung von MUI eine große Hilfe.

   - Martin Berndt ... hat mich beim Lösen einiger kniffliger Probleme
     unterstützt.

   - Robert Blayzor ... hat die englische Anleitung überarbeitet.

   - Dirk Federlein ... erstellte die MUI-Applikation `DFView'. Bei
     über 100 kByte Sourcecode inclusive Sprachen-Anpassung und
     Anleitung in drei verschiedenen Formaten wage ich es nicht mehr,
     nur von einem Beispielprogramm zu sprechen. Außerdem hat Dirk zu
     meiner großen Freude einige Teile dieser Dokumentation ins
     Englische übersetzt.

   - Georg "gucky" Heßmann

     ... hat in der Endphase noch einige Bugs aufgedeckt und das
     Demo-Programm `DVIprint' beigesteuert.

   - Martin Horneffer und Albert Weinert

     ... von ihnen stammt das Oberon-Interface.

   - Martin "XEN" Huttenloher

     ... hat viele der mitgelieferten Images gezeichnet und auch beim
     sonstigen MUI-Design entscheidend mitgewirkt. Außerdem stammen von
     ihm die wunderschönen Hintergrund-Patterns, die ein kleiner
     Auszug seines `MagicWB'-Pakets sind. Freunde einer ansprechenden,
     plastischen Workbench sollten sich sein Paket `MagicWB' unbedingt
     einmal näher betrachten!

   - Kai "KCommodity" Iske

     ... programmierte einen der diversen MUI-Taschenrechner und hat
     dabei noch einige üble Bugs in MUI gefunden.

   - Oliver "Mr.Coffee" Kilian

     ... hat MUI auf dem guten alten (und langsamen) 68000er getestet.

   - Klaus "kmel" Melchior

     ... schrieb die beiden Beispiel-Programme `WbMan' und
     `MUI-Exchange' und endlose Listen von Bug-Reports. Außerdem war
     er beim Korrektur-Lesen der Autodocs mit Abstand am fleißigsten,
     malte die Icons der Demo-Programme und schrieb ein paar BOOPSI
     Images.

   - Wouter van Oortmerssen

     ... für das Amige-E Interface.

   - Matthias "tron" Scheler und Markus "corwin" Stipp

     ... haben die erste richtige MUI Applikation geschrieben, einen
     Message-Editor für das Universal Mail System (UMS).  Look out for
     `IntuiNews'! Außerdem stammt von Matthias das Beispiel-Programm
     `Font'.

   - Andreas "goonie" Schildbach

     ... hat MUI-Design und -Funktionsumfang entscheidend beeinflußt,
     von ihm stammt unter anderem ein kompletter Satz MUI-Images.
     Außerdem schreibt er ebenfalls mehrere Applikationen, eine davon
     ist eine Telefon- und Anrufbeantworter-Software für ISDN. Andreas
     hat mich durch die wie immer endlosen Telefongespräche auch mal
     auf andere Gedanken gebracht.

   - Wolfgang Schildbach

     ... für seinen Text-Formatierungs-Code.

   - Christian "Kochtopf" Scholz

     ... für das Modula-Interface.

   - Ibrahim "radi" Solmaz

     ... der mich ebenfalls durch viele Telefonate von der Arbeit
     abhielt, mir aber trotzdem manchmal eine wertvolle Hilfe war.

   - Henri Veistera

     ... für das Assembler-Interface. Ich hätte nie gedacht, daß man
     MUI in Assembler programmieren kann.

   Das letzte Wort gilt jedoch allen registrierten Benutzern meines
File-Requesters MFR. Der Erfolg, den ich mit diesem Programm hatte,
bestärkte mich darin, es auch bei MUI auf Shareware-Basis zu
versuchen. Deswegen tut es mir besonders leid, daß von MFR so lange
kein Update mehr erschienen ist. Die Arbeit an MUI hatte für mich aber
zunächst Priorität, insbesondere weil eine nächste Version von MFR
vermutlich auf MUI aufbauen wird.

Diskussion
==========

   - "Was bringt MUI überhaupt für Nicht-Programmierer?"

     In Zukunft werden hoffentlich viele Applikationen MUI zum Erstellen
     ihrer Userinterfaces verwenden. Als Benutzer solcher Applikationen
     hat man dann vielerlei Möglichkeiten auf deren Aussehen
     einzuwirken und kann alle nur erdenklichen Dinge an seinen
     persönlichen Geschmack anpassen. Um alle Features in vollem Umfang
     nutzen zu können, muß man sich für MUI registrieren lassen.

   - "Warum ist MUI so langsam?"

     MUI ist nicht langsam. Die große Vielfalt und Flexibiltät
     erfordert jedoch einen deutlich höheren Rechenaufwand als bei den
     bisher bekannten Benutzeroberflächen. Insbesondere auf langsamen
     Rechnern kann sich dieser Aufwand unangenehm bemerkbar machen.
     Beim Starten der ersten MUI Applikation nach einem Reset müssen
     zudem noch einige Dateien nachgeladen werden, was ebenfalls einige
     Zeit in Anspruch nehmen kann. Diese Dateien bleiben dann allerdings
     im Speicher, so daß weitere Programme relativ schnell gestartet
     werden können.

     Natürlich könnte man bei MUI einige Dinge beschleunigen und ich
     versuche auch, jede neue Version etwas schneller als die
     vorherigen zu machen.  Allerdings bin ich nicht bereit, zu Gunsten
     von ein wenig Geschwindigkeitssteigerung auf Features wie etwa das
     hohe Maß an Konfigurierbarkeit zu verzichten. Wer heute noch einen
     10 Jahre alten 68000er Prozessor mit 7 Megahertz Taktfrequenz
     verwendet, der muß damit rechnen, daß nicht alle Programme in
     Hochgeschwindigkeit ablaufen. Die Software entwickelt sich hin zu
     immer komplexeren Produkten, deren Anforderungen einfach nicht
     mehr durch veraltete Hardware erfüllt werden können.

   - "Warum werden meine Fensterpositionen nicht gespeichert?"

     Fensterpositionen werden normalerweise nur temporär, d.h. im RAM
     gespeichert und sind nach einem Neustart verloren.  Eine
     dauerhafte Speicherung kann man erreichen, indem man nach Benutzen
     einer Applikation das MUI Preferences Programm startet und hier
     das `Save'-Gadget angewählt.

   - "Wozu dient das schräg schraffierte Feld beim Einstellen der
     Farb-Palette?"

     Hier wird normalerweise die gerade eingestellte Farbe angezeigt,
     allerdings funktioniert dieses Feature erst ab Kickstart 3.0 und
     außerdem nur dann, wenn auf dem Bildschirm noch freie Farben zur
     Verfügung stehen.

   - "Wie kann man eigene Images malen?"

     Dazu kann jedes beliebige Malprogramm verwendet werden. Als
     Ausgangspunkt sollte man am besten das Bild `MBrKit.ilbm' aus dem
     `Images'-Verzeichnis dieser Distribution verwenden.

   - "Warum unterstützen die String-Gadgtes kein Clipboard?"

     Es gibt ein Utility namens `NewEdit', daß *allen* String Gadgets
     im System Clipboard-Fähigkeiten verleiht. Auch MUI's Gadgets
     arbeiten mit diesem Utility zusammen.

Disclaimer
==========

   THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDER AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE
COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

   IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY REDISTRIBUTE THE
PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS
OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR
THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

License
=======

   Diese Lizenz betrifft die Weiterverbreitung des kompletten
MUI-Systems. Sie hat mit dem Benutzen von MUI in eigenen Applikationen
nichts zu tun, genaue Informationen darüber finden sich im
Developer-Archiv.

   - This license applies to the product called "MagicUserInterface"
     (short "MUI"), a collection of programs for the Amiga computer,
     published by Stefan Stuntz under the concepts of shareware, and
     the accompanying documentation. The terms "Program" and "MUI"
     below, refer to this product. The licensee is addressed as "you".

   - You may copy and distribute verbatim copies of the program's
     executable code and documentation as you receive it, in any
     medium, provided that you conspicuously and appropriately publish
     only the original, unmodified program, with all copyright notices
     and disclaimers of warranty intact and including all the
     accompanying documentation, example files and anything else that
     came with the original.

   - Except when otherwise stated in this documentation, you may not
     copy and/or distribute this program without the accompanying
     documentation and other additional files that came with the
     original. You may not copy and/or distribute modified versions of
     this program.

   - You may not copy, modify, sublicense, distribute or transfer the
     program except as expressly provided under this license. Any
     attempt otherwise to copy, modify, sublicense, distribute or
     transfer the program is void, and will automatically terminate
     your rights to use the program under this license. However,
     parties who have received copies, or rights to use copies, from
     you under this license will not have their licenses terminated so
     long as such parties remain in full compliance.

   - By copying, distributing and/or using the program you indicate your
     acceptance of this license to do so, and all its terms and
     conditions.

   - Each time you redistribute the program, the recipient automatically
     receives a license from the original licensor to copy, distribute
     and/or use the program subject to these terms and conditions. You
     may not impose any further restrictions on the recipients'
     exercise of the rights granted herein.

   - You may not disassemble, decompile, re-source or otherwise reverse
     engineer the program.

   - You agree to cease distributing the program and data involved if
     requested to do so by the author.

Installer
=========

   Mit MUI wird der Installer von Commodore ausgeliefert, der die
Installation des Programmpakets auf Festplatte erheblich erleichtert.
Für dieses Tool gelten die folgenden Bestimmungen:

     Installer and Installer project icon
     (c) Copyright 1991-93 Commodore-Amiga, Inc.  All Rights Reserved.
     Reproduced and distributed under license from Commodore.
     
     INSTALLER SOFTWARE IS PROVIDED "AS-IS" AND SUBJECT TO CHANGE;
     NO WARRANTIES ARE MADE. ALL USE IS AT YOUR OWN RISK. NO LIABILITY
     OR RESPONSIBILITY IS ASSUMED.

