ImRAD, un générateur d’interface graphique pour la bibliothèque ImGui
(github.com/tpecholt)ImRAD
ImRAD est un générateur d’interface graphique pour la bibliothèque ImGui. Il peut générer et analyser du code C++ afin d’être utilisé directement dans une application. ImRAD peut s’exécuter sur Windows, Linux et MacOS.
Fonctionnalités
ImRAD est en développement actif, et ses principales fonctionnalités sont les suivantes :
-
Prise en charge de différents types de fenêtres
- Fenêtres flottantes, popups et popups modales. Indépendant du backend ImGui
- MainWindow via l’intégration GLFW. ImRAD génère des appels GLFW qui synchronisent les fenêtres ImGui avec les fenêtres de l’OS (barre de titre, indicateurs de redimensionnement, redimensionnement automatique, etc.)
- Activity. Fenêtre sans décoration qui remplit toute la zone du viewport. Principalement utilisée pour les applications Android
- Inclut un template GLFW qui génère un
main.cppclassique - Inclut un template Android qui génère un
MainActivity.javaclassique +manifest+main.cpp
-
Prise en charge de nombreux widgets
- Widgets de base tels que
Text,Checkbox,Combo,Button,Slider,ColorEdit - Widgets conteneurs tels que
Child,Table,CollapsingHeader,TreeNode,TabBar - Widgets atypiques comme
Splitter - Édition de
MenuBaret des menus contextuels CustomWidgetpour le code utilisateur (placeholder)
- Widgets de base tels que
-
Génération de layouts avec
SameLine/Spacing/NextColumn- Cela garantit que les widgets respectent de façon cohérente l’espacement entre éléments et le frame padding
- La relation parent-enfant entre les widgets et l’ordre des enfants sont importants
-
Prise en charge des box layouts
- Mécanisme de layout puissant et facile à utiliser, implémenté au-dessus des fonctionnalités d’ImGui
- Possibilité d’étirer des widgets redimensionnables horizontalement ou verticalement
- Possibilité d’insérer des spacers pour l’alignement
- Possibilité de créer des layouts horizontaux à l’aide de l’helper de layout de tableau
-
Prise en charge du binding de propriétés
- Les variables de classe peuvent être gérées via un assistant de classe simple ou une boîte de dialogue de binding
- Grâce au binding de propriétés, l’UI générée peut être dynamique tout en restant concevable
-
Génération de gestionnaires d’événements et d’autres éléments de code de support
- Par exemple, une boîte de dialogue modale génère une fonction membre
OpenPopupet un callback lambda appelé à la fermeture de la boîte de dialogue - Les gestionnaires d’événements séparent le code utilisateur des parties générées afin que le designer continue de fonctionner
- Par exemple, une boîte de dialogue modale génère une fonction membre
-
Le code généré est séparé par des marqueurs de commentaire, et l’utilisateur peut librement ajouter du code supplémentaire
- Cela peut servir à appeler le Draw de popups dépendantes ou à calculer des variables
- Possibilité d’utiliser
CustomWidgetpour appeler des callbacks de code utilisateur
-
Le style de la fenêtre cible est entièrement configurable
- En plus des styles par défaut fournis par ImGui, l’utilisateur peut définir de nouveaux styles et les enregistrer comme fichiers INI dans le dossier
style - ImRAD respecte les paramètres de style lors de la conception de l’UI
- Les styles enregistrés peuvent être chargés dans l’application à l’aide d’une simple fonction de
imrad.h
- En plus des styles par défaut fournis par ImGui, l’utilisateur peut définir de nouveaux styles et les enregistrer comme fichiers INI dans le dossier
-
Le code généré peut être utilisé immédiatement dans un projet et ne nécessite que la bibliothèque ImGui et un seul fichier d’en-tête (
imrad.h)- Certaines fonctionnalités, comme MainWindow ou le widget Image, nécessitent une dépendance à GLFW. Elles peuvent être activées en compilant avec
IMRAD_WITH_GLFW - Actuellement, le widget Image nécessite aussi la bibliothèque stb. Il faut compiler avec
IMRAD_WITH_STBou fournirLoadTextureFromFile() - La prise en charge optionnelle de la populaire bibliothèque
fmtpeut être activée en définissantIMRAD_WITH_FMT. Cela permet d’utiliser des indicateurs de formatage pour toutes les propriétés de type chaîne
- Certaines fonctionnalités, comme MainWindow ou le widget Image, nécessitent une dépendance à GLFW. Elles peuvent être activées en compilant avec
-
ImRAD suit les modifications des fichiers ouverts, ce qui permet de concevoir et d’éditer les fichiers dans un IDE
- La fonctionnalité d’enregistrement automatique peut être utile
Licence
- Le code source d’ImRAD est sous licence GPL
- Le code généré par l’outil est exclu de la GPL et peut être inclus dans des projets open source ou commerciaux. L’utilisateur choisit la licence
imrad.hest également exclu de la licence GPL
Téléchargement
La dernière version peut être obtenue en clonant le dépôt et en la compilant avec CMake. Il faut également récupérer les sous-modules du répertoire 3rdparty. Une version un peu plus ancienne peut être téléchargée depuis les Releases
Résumé de GN⁺
- ImRAD est un puissant générateur d’interface graphique pour la bibliothèque ImGui, prenant en charge divers types de fenêtres et de widgets
- Le binding de propriétés et la génération de gestionnaires d’événements permettent de concevoir des interfaces dynamiques et flexibles
- Le code généré peut être utilisé immédiatement dans un projet et prend en charge diverses dépendances
- ImRAD est en développement actif, et les utilisateurs peuvent librement définir et enregistrer des styles
- D’autres projets aux fonctionnalités similaires incluent Qt Designer et Dear ImGui
1 commentaires
Commentaires Hacker News