Was ist das überhaupt?
- Eine Bibliothek, die große Teile der Macintosh-Classic-„Toolbox“-API nachbildet. Sie ist keine vollständige Implementierung, reicht aber aus, um einige einfache Anwendungen zu erstellen.
- Eine Ergänzung für den MII Apple //e-Emulator und eines jener Projekte, die beim Funktionszuwachs wohl einen Weltrekord anpeilen.
Warum?
- Es wurde eine UI-Bibliothek für MII benötigt, mit wenigen Abhängigkeiten und ohne einen „spielartigen“ Stil.
- Begonnen wurde mit der Immediate-Mode-UI Nuklear, die sich jedoch als sehr eingeschränkt erwies und bei nötiger Anpassung unpraktisch war.
- Die UI-Layout-Engine war unbefriedigend, und trotz des Versprechens, zustandslos zu sein, hielt sie in der Praxis Zustand auf Basis von Hash-Werten vor.
- Früher wurden UIs mit handwerklichem Anspruch gebaut, heute werden Entscheidungen oft ohne Gespür für Design oder Benutzbarkeit getroffen.
- Deshalb wurde begonnen, aus bereits vorhandenen Teilen eine eigene Bibliothek zu bauen.
Was kann diese Bibliothek?
- Sie enthält einige der „Manager“ aus der Macintosh Toolbox, verhält sich dabei aber wie ein modernes System.
- Sie ist dafür ausgelegt, in einen ARGB-Puffer als „Bildschirm“ zu zeichnen, der anschließend dorthin kopiert werden kann, wo er gebraucht wird.
- Die Bibliothek verfolgt „ungültige“ Bereiche und minimiert Overdraw, indem nur die nötigen Teile neu gezeichnet werden.
Worin unterscheidet sie sich vom Original?
- Optisch wurde bei MacOS 8/9 angesetzt, aber alle Graustufen wurden entfernt.
- Auf API-Ebene ist alles vollständig asynchron; Fenster oder GrafPorts können nicht wie im Original jederzeit direkt gezeichnet werden.
- Alles besteht aus mui_window oder mui_control.
Window Manager
- Kann Fenster erzeugen und zeichnen.
- Verfügt über bis zu 15 „Layer“ und kann Clipping und Ähnliches ausführen.
Menu Manager
- Bietet Menüleiste, Menüs, Häkchen, Tastaturkürzel usw. im Stil von System 7/8 oder GS/OS.
Control Manager
- Bietet Buttons, Checkboxen, Radio-Buttons, Scrollbars (vertikal), Textboxen usw.
List Manager
- Wurde zum Anzeigen von Dateinamen entworfen und kann Pfeiltasten, Bild-auf/Bild-ab, Scrollrad usw. verarbeiten.
Alerts
- Bietet typische Dialogmeldungen mit den Buttons „Abbrechen“ und „OK“.
Standard File
- Bietet einen Dialog zum Öffnen von Dateien.
Resource Manager
- Ein Resource Manager wird nicht bereitgestellt.
Welche Abhängigkeiten gibt es?
- Die einzige externe Abhängigkeit ist libpixman.
- Verwendet werden libpixman, libcg, stb_truetype.h, stb_ttc.h usw.
Wie wird es gebaut?
- Mit einem einfachen Makefile lassen sich im Wurzelverzeichnis per
make die Bibliothek sowie Tests/Demos/Beispiele bauen.
Wie wird es verwendet?
- Am besten passt man mui_shell.c und mui_widgets_demo.c an.
- mui_widgets_demo.so wird als Plugin geladen und bei erkannten Änderungen automatisch neu geladen.
FAQ!
- Dark Mode, Themes, transparente Fenster, Cube-Effekte, Sticky-Menüs, aktuelle trendige Tools oder Frameworks, neue Sprach-Bindings, Wayland-Unterstützung usw. werden nicht geboten.
Meinung von GN⁺
- Diese Bibliothek ist ein interessantes Projekt, das die klassische Macintosh-UI für moderne Systeme neu interpretiert. Sie kann bei Entwicklern Nostalgie für früheres UI-Design wecken.
- Eine asynchrone UI-Bibliothek passt besser zur modernen Anwendungsentwicklung, und diese Bibliothek verfolgt genau diesen zeitgemäßen Ansatz.
- Besonders für Entwickler mit Fokus auf Ressourceneffizienz kann sie nützlich sein. Die Minimierung von Overdraw und das gezielte Neuzeichnen benötigter Bereiche können zur Performance-Optimierung beitragen.
- Da jedoch moderne Funktionen wie Dark Mode oder Theme-Unterstützung fehlen, wird sie nicht alle Anforderungen von Entwicklern erfüllen.
- Moderne UI-Bibliotheken mit ähnlichem Funktionsbereich sind etwa Frameworks wie Qt, GTK oder Electron, die einen deutlich größeren Umfang und mehr Unterstützung bieten.
Noch keine Kommentare.