ImRAD, constructor de GUI para la biblioteca ImGui
(github.com/tpecholt)ImRAD
ImRAD es un constructor de GUI para la biblioteca ImGui. Genera y analiza código C++ para poder usarse directamente en la aplicación. ImRAD puede ejecutarse en Windows, Linux y MacOS.
Características
ImRAD está en desarrollo activo y sus características principales son las siguientes:
-
Soporte para varios diseños de ventana
- Ventanas flotantes, popups y popups modales. Es independiente del backend de ImGui
- MainWindow mediante integración con GLFW. ImRAD genera llamadas de GLFW para sincronizar la ventana de ImGui con la ventana del sistema operativo (barra de título, bandera de redimensionable, autoajuste de tamaño, etc.)
- Activity. Una ventana sin decoraciones que llena toda el área del viewport. Se usa principalmente en apps de Android
- Incluye una plantilla de GLFW que genera un
main.cpptípico - Incluye una plantilla de Android que genera un
MainActivity.javatípico +manifest+main.cpp
-
Soporte para varios widgets
- Widgets básicos como
Text,Checkbox,Combo,Button,Slider,ColorEdit, etc. - Widgets contenedores como
Child,Table,CollapsingHeader,TreeNode,TabBar, etc. - Widgets poco comunes como
Splitter - Edición de
MenuBary menús contextuales CustomWidgetpara código de usuario (marcador de posición)
- Widgets básicos como
-
Generación de layouts usando
SameLine/Spacing/NextColumn- Esto garantiza que los widgets respeten de forma consistente el espaciado entre elementos y el padding de los marcos
- Es importante mantener una relación clara entre widgets padre-hijo y el orden de los hijos
-
Soporte para box layout
- Un mecanismo de layout potente y fácil de usar implementado sobre las capacidades de ImGui
- Permite estirar widgets redimensionables en dirección horizontal o vertical
- Se pueden insertar espaciadores para alineación
- Se pueden generar layouts horizontales usando el helper de layout de tablas
-
Soporte para enlace de propiedades
- Las variables de clase pueden gestionarse mediante un asistente de clases simple o un cuadro de diálogo de enlace
- Gracias al enlace de propiedades, la UI generada puede ser dinámica y al mismo tiempo diseñable
-
Generación de manejadores de eventos y otro código de soporte
- Por ejemplo, un cuadro de diálogo modal genera la función miembro
OpenPopupy un callback lambda que se llama cuando el diálogo se cierra - Los manejadores de eventos separan el código de usuario de la parte generada para que el diseñador siga funcionando
- Por ejemplo, un cuadro de diálogo modal genera la función miembro
-
El código generado se separa mediante marcadores de comentarios y el usuario puede agregar libremente código adicional
- Puede usarse para hacer llamadas Draw de popups dependientes o calcular variables
- Se puede usar
CustomWidgetpara llamar callbacks de código de usuario
-
El estilo de la ventana objetivo es completamente configurable
- Además de los estilos básicos que ofrece ImGui, el usuario puede definir nuevos estilos y guardarlos como archivos INI en la carpeta
style - ImRAD respeta la configuración de estilo al diseñar la UI
- Los estilos guardados pueden cargarse en la aplicación usando una función simple de
imrad.h
- Además de los estilos básicos que ofrece ImGui, el usuario puede definir nuevos estilos y guardarlos como archivos INI en la carpeta
-
El código generado puede usarse directamente en el proyecto y solo requiere la biblioteca ImGui y un archivo de encabezado (imrad.h)
- Algunas funciones, como MainWindow o el widget Image, requieren dependencia de GLFW. Puede activarse compilando con
IMRAD_WITH_GLFW - Actualmente el widget Image también requiere la biblioteca stb. Puede activarse compilando con
IMRAD_WITH_STBo proporcionandoLoadTextureFromFile() - El soporte opcional para la popular biblioteca
fmtpuede activarse definiendoIMRAD_WITH_FMT. Esto permite usar flags de formato en todas las propiedades de tipo cadena
- Algunas funciones, como MainWindow o el widget Image, requieren dependencia de GLFW. Puede activarse compilando con
-
ImRAD rastrea cambios en los archivos abiertos, por lo que se puede diseñar y editar el archivo desde el IDE
- La función de guardado automático puede ser útil
Licencia
- El código fuente de ImRAD está bajo licencia GPL
- El código generado por la herramienta queda excluido de la GPL y puede incluirse en proyectos de código abierto o comerciales. El usuario decide la licencia
imrad.htambién queda excluido de la licencia GPL
Descarga
La versión más reciente puede obtenerse clonando el repositorio y compilándolo con CMake. También hay que traer los submódulos del directorio 3rdparty. Una versión algo más antigua puede descargarse desde Releases
Resumen de GN⁺
- ImRAD es un potente constructor de GUI para la biblioteca ImGui, con soporte para varias ventanas y widgets
- Gracias al enlace de propiedades y la generación de manejadores de eventos, permite diseñar interfaces dinámicas y flexibles
- El código generado puede usarse directamente en proyectos y ofrece soporte para varias dependencias
- ImRAD está en desarrollo activo y permite que el usuario defina y guarde estilos libremente
- Otros proyectos con funciones similares incluyen Qt Designer y Dear ImGui
1 comentarios
Comentarios de Hacker News
sudo, pero en general se ve muy bien