¿Qué es esto?
- Es una biblioteca que replica gran parte de la API "Toolbox" de Macintosh Classic; no es una implementación completa, pero alcanza para crear algunas aplicaciones sencillas.
- Es una función añadida al emulador MII Apple //e, uno de esos proyectos que parecen competir por un récord mundial en cantidad de funciones agregadas.
¿Por qué?
- Hacía falta una biblioteca de UI para MII, con pocas dependencias y sin un estilo tipo "videojuego".
- Empezó con la UI de modo inmediato de Nuklear, pero la sintió muy limitada e incómoda cuando había que personalizarla.
- El motor de layout de UI no le satisfacía y, pese a la promesa de mantener estado, en la práctica lo hacía basándose en valores hash.
- Antes las interfaces se hacían con artesanía; ahora muchas veces se toman decisiones sin sentido del diseño ni de la usabilidad.
- Así que empezó a crear su propia biblioteca aprovechando varias piezas que ya tenía.
¿Qué puede hacer esta biblioteca?
- Incluye algunos de los "managers" del Macintosh Toolbox y funciona como un sistema moderno.
- Está diseñada para dibujar en una "pantalla" mediante un búfer ARGB, que luego puede copiarse donde haga falta.
- La biblioteca rastrea las regiones "inválidas" y minimiza el overdraw redibujando solo las partes necesarias.
¿En qué se diferencia del original?
- En lo visual, partió de MacOS 8/9, pero eliminó todos los tonos de gris.
- A nivel de API, es completamente asíncrona, y no se puede dibujar en una ventana o GrafPort cuando uno quiera como en el original.
- Todo está compuesto por mui_window o mui_control.
Gestor de ventanas
- Puede crear y dibujar ventanas.
- Tiene hasta 15 "capas" y puede hacer clipping, entre otras cosas.
Gestor de menús
- Ofrece barra de menú, menús, marcas de verificación, atajos de teclado, etc., con apariencia de System 7/8 o GS/OS.
Gestor de controles
- Ofrece botones, casillas de verificación, botones de opción, barras de desplazamiento (verticales), cuadros de texto y más.
Gestor de listas
- Está diseñado para mostrar nombres de archivo y puede manejar teclas de flecha, Page Up/Down, rueda de desplazamiento, etc.
Alertas
- Ofrece alertas típicas con botones de "Cancelar" y "Aceptar".
Archivos estándar
- Ofrece un cuadro de diálogo para abrir archivos.
Gestor de recursos
- No incluye gestor de recursos.
¿Cuáles son las dependencias?
- La única dependencia externa es libpixman.
- Usa libpixman, libcg, stb_truetype.h, stb_ttc.h, etc.
¿Cómo se compila?
- Usa un Makefile simple, y desde el directorio raíz se puede compilar la biblioteca y los tests/demos/ejemplos con el comando 'make'.
¿Cómo se usa?
- Lo mejor es usarlo modificando mui_shell.c y mui_widgets_demo.c.
- Carga mui_widgets_demo.so como plugin y la vuelve a cargar automáticamente cuando detecta cambios.
FAQ!
- No ofrece modo oscuro, temas, ventanas transparentes, efecto cubo, menús persistentes, herramientas o frameworks modernos y de moda, nuevos bindings de lenguaje, soporte para Wayland, etc.
Opinión de GN⁺
- Esta biblioteca es un proyecto interesante que reinventa la UI clásica de Macintosh para sistemas modernos. Puede despertar nostalgia por el diseño de interfaces del pasado entre los desarrolladores.
- Una biblioteca de UI asíncrona se adapta mejor al desarrollo moderno de aplicaciones, y esta biblioteca adopta ese enfoque contemporáneo.
- Puede ser especialmente útil para desarrolladores que valoran la eficiencia de recursos. Su capacidad para minimizar el overdraw y redibujar solo lo necesario puede ayudar a optimizar el rendimiento.
- Sin embargo, como no ofrece funciones modernas como modo oscuro o soporte de temas, puede que no satisfaga las necesidades de todos los desarrolladores.
- Bibliotecas UI modernas con funciones similares incluyen frameworks como Qt, GTK o Electron, que ofrecen un conjunto más amplio de características y soporte.
Aún no hay comentarios.