2 pontos por GN⁺ 2024-04-02 | Ainda não há comentários. | Compartilhar no WhatsApp

O que é isso afinal?

  • Uma biblioteca que replica grande parte da API "Toolbox" do Macintosh Classic; não é uma implementação completa, mas é suficiente para criar alguns aplicativos simples.
  • Um recurso adicionado ao emulador MII Apple //e, um dos projetos que parecem estar tentando bater um recorde mundial em quantidade de funcionalidades adicionadas.

Por quê?

  • Eu precisava de uma biblioteca de UI para o MII e não queria muitas dependências nem um estilo "parecido com jogo".
  • Comecei com a UI de modo imediato do Nuklear, mas a achei muito limitada e incômoda quando era necessário personalizar.
  • Fiquei insatisfeito com o mecanismo de layout da UI e, apesar da promessa de manter estado, na prática ele mantinha estado com base em valores de hash.
  • No passado, as UIs eram feitas com capricho artesanal, mas hoje muitas decisões parecem ser tomadas sem senso de design ou usabilidade.
  • Então comecei a criar minha própria biblioteca aproveitando várias partes que eu já tinha.

O que esta biblioteca pode fazer?

  • Ela inclui alguns dos "managers" do Macintosh Toolbox, mas funcionando como em sistemas modernos.
  • Foi projetada para desenhar em uma "tela" com buffer ARGB, que depois pode ser copiada para onde for necessário.
  • A biblioteca rastreia áreas "inválidas" e minimiza overdraw ao redesenhar apenas as partes necessárias.

Como ela difere do original?

  • Visualmente, começou a partir do MacOS 8/9, mas removeu todos os tons de cinza.
  • Em termos de API, é totalmente assíncrona, e não é possível desenhar em uma janela ou GrafPort sempre que quiser, como no original.
  • Tudo é composto por mui_window ou mui_control.

Gerenciador de janelas

  • Pode criar e desenhar janelas.
  • Tem até 15 "camadas" e pode fazer clipping e afins.

Gerenciador de menus

  • Oferece barra de menus, menus, marcas de seleção, atalhos de teclado etc., com aparência semelhante ao System 7/8 ou GS/OS.

Gerenciador de controles

  • Oferece botões, caixas de seleção, botões de opção, barras de rolagem (verticais), caixas de texto etc.

Gerenciador de listas

  • Foi projetado para exibir nomes de arquivos e pode lidar com teclas de seta, Page Up/Down, roda do mouse etc.

Alertas

  • Oferece alertas típicos com botões "Cancelar" e "OK".

Arquivo padrão

  • Oferece uma caixa de diálogo para abrir arquivos.

Gerenciador de recursos

  • Não fornece um gerenciador de recursos.

Quais são as dependências?

  • A única dependência externa é libpixman.
  • Usa libpixman, libcg, stb_truetype.h, stb_ttc.h etc.

Como compilar?

  • Com um Makefile simples, é possível compilar a biblioteca e os testes/demos/exemplos a partir do diretório raiz com o comando make.

Como usar?

  • O melhor caminho é usar modificando mui_shell.c e mui_widgets_demo.c.
  • Ele carrega mui_widgets_demo.so como plugin e recarrega automaticamente quando detecta alterações.

FAQ!

  • Não oferece modo escuro, temas, janelas transparentes, efeito cubo, menus "sticky", ferramentas ou frameworks modernos da moda, novos bindings de linguagem, suporte a Wayland etc.

Opinião do GN⁺

  • Esta biblioteca é um projeto interessante que recria a UI clássica do Macintosh para sistemas modernos. Pode despertar nostalgia pelo design de interfaces do passado entre desenvolvedores.
  • Uma biblioteca de UI assíncrona é mais adequada ao desenvolvimento moderno de aplicações, e esta biblioteca adota essa abordagem contemporânea.
  • Ela pode ser especialmente útil para desenvolvedores que valorizam eficiência de recursos. Minimizar overdraw e redesenhar apenas as partes necessárias pode ajudar na otimização de desempenho.
  • No entanto, como não oferece recursos modernos como modo escuro ou suporte a temas, talvez não atenda às necessidades de todos os desenvolvedores.
  • Bibliotecas de UI modernas com funcionalidades semelhantes incluem frameworks como Qt, GTK ou Electron, que oferecem uma gama mais ampla de recursos e suporte.

Ainda não há comentários.

Ainda não há comentários.