2 Punkte von GN⁺ 2024-04-02 | Noch keine Kommentare. | Auf WhatsApp teilen

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.

Noch keine Kommentare.