ImRAD, um construtor de GUI para a biblioteca ImGui
(github.com/tpecholt)ImRAD
ImRAD é um construtor de GUI para a biblioteca ImGui. Ele gera e faz o parsing de código C++, podendo ser usado diretamente em aplicações. O ImRAD pode ser executado em Windows, Linux e MacOS.
Características
O ImRAD está em desenvolvimento ativo e seus principais recursos são os seguintes:
-
Suporte a vários designs de janela
- Janelas flutuantes, popups e popups modais. Independente do backend do ImGui
- MainWindow com integração GLFW. O ImRAD gera chamadas GLFW que sincronizam a janela do ImGui com a janela do sistema operacional (barra de título, flag de redimensionamento, redimensionamento automático etc.)
- Activity. Janela sem decoração que preenche toda a área da viewport. Usada principalmente em apps Android
- Inclui template GLFW que gera um
main.cpptípico - Inclui template Android que gera
MainActivity.java+manifest+main.cpp
-
Suporte a vários widgets
- Widgets básicos como
Text,Checkbox,Combo,Button,Slider,ColorEditetc. - Widgets de contêiner como
Child,Table,CollapsingHeader,TreeNode,TabBaretc. - Widgets incomuns como
Splitter - Edição de
MenuBare menus de contexto CustomWidgetpara código do usuário (placeholder)
- Widgets básicos como
-
Geração de layout usando
SameLine/Spacing/NextColumn- Isso garante que os widgets respeitem de forma consistente o espaçamento entre itens e o padding do frame
- Relações claras entre widgets pai e filho e a ordem dos filhos são importantes
-
Suporte a box layout
- Mecanismo de layout poderoso e fácil de usar implementado sobre os recursos do ImGui
- Widgets redimensionáveis podem ser esticados em direção horizontal ou vertical
- É possível inserir spacers para alinhamento
- É possível gerar layouts horizontais usando o helper de layout de tabela
-
Suporte a property binding
- Variáveis de classe podem ser gerenciadas por meio de um assistente de classe simples ou da caixa de diálogo de binding
- A UI gerada por property binding pode ser dinâmica e ao mesmo tempo projetável
-
Geração de event handlers e outros códigos de suporte
- Por exemplo, uma caixa de diálogo modal gera uma função membro
OpenPopupe um callback lambda chamado quando a caixa de diálogo é fechada - Os event handlers separam o código do usuário da parte gerada, permitindo que o designer continue funcionando
- Por exemplo, uma caixa de diálogo modal gera uma função membro
-
O código gerado é separado por marcadores de comentário, e o usuário pode adicionar código extra livremente
- Pode ser usado para fazer chamadas Draw de popups dependentes ou calcular variáveis
- É possível usar
CustomWidgetque chama callbacks de código do usuário
-
O estilo da janela de destino é totalmente configurável
- Além dos estilos padrão fornecidos pelo ImGui, o usuário pode definir novos estilos e salvá-los como arquivos INI na pasta
style - O ImRAD segue as configurações de estilo ao projetar a UI
- Os estilos salvos podem ser carregados na aplicação usando uma função simples de
imrad.h
- Além dos estilos padrão fornecidos pelo ImGui, o usuário pode definir novos estilos e salvá-los como arquivos INI na pasta
-
O código gerado pode ser usado imediatamente no projeto e requer apenas a biblioteca ImGui e um arquivo de cabeçalho (imrad.h)
- Alguns recursos, como MainWindow ou o widget Image, exigem dependência de GLFW. Isso pode ser ativado compilando com
IMRAD_WITH_GLFW - Atualmente, o widget Image também exige a biblioteca stb. Compile com
IMRAD_WITH_STBou forneçaLoadTextureFromFile() - O suporte opcional à popular biblioteca
fmtpode ser ativado definindoIMRAD_WITH_FMT. Isso permite usar flags de formatação em todas as propriedades de string
- Alguns recursos, como MainWindow ou o widget Image, exigem dependência de GLFW. Isso pode ser ativado compilando com
-
O ImRAD acompanha alterações em arquivos abertos, permitindo projetar e editar arquivos na IDE
- O recurso de salvamento automático pode ser útil
Licença
- O código-fonte do ImRAD está sob a licença GPL
- O código gerado pela ferramenta é excluído da GPL e pode ser incluído em projetos open source ou comerciais. O usuário decide a licença
imrad.htambém é excluído da licença GPL
Download
A versão mais recente pode ser obtida clonando o repositório e compilando com CMake. Também é necessário trazer os submódulos do diretório 3rdparty. Versões um pouco mais antigas podem ser baixadas em Releases
Resumo do GN⁺
- O ImRAD é um poderoso construtor de GUI para a biblioteca ImGui, com suporte a várias janelas e widgets
- Recursos de property binding e geração de event handlers permitem projetar UIs dinâmicas e flexíveis
- O código gerado pode ser usado imediatamente no projeto e oferece suporte a várias dependências
- O ImRAD está em desenvolvimento ativo, e o usuário pode definir e salvar estilos livremente
- Outros projetos com recursos semelhantes incluem Qt Designer e Dear ImGui
1 comentários
Comentários no Hacker News
sudodemais, mas, no geral, isso parece muito legal