ImRAD, ein GUI-Builder für die ImGui-Bibliothek
(github.com/tpecholt)ImRAD
ImRAD ist ein GUI-Builder für die ImGui-Bibliothek. Er kann C++-Code erzeugen und parsen, sodass er direkt in Anwendungen verwendet werden kann. ImRAD läuft unter Windows, Linux und MacOS.
Funktionen
ImRAD wird aktiv weiterentwickelt und bietet die folgenden Hauptfunktionen:
-
Unterstützung für verschiedene Fensterdesigns
- Schwebende Fenster, Pop-ups und modale Pop-ups. Unabhängig vom ImGui-Backend
- MainWindow über GLFW-Integration. ImRAD erzeugt GLFW-Aufrufe, die ImGui-Fenster mit OS-Fenstern synchronisieren (Titelleiste, Größenänderungs-Flags, automatische Größenanpassung usw.)
- Activity. Ein rahmenloses Fenster, das den gesamten Viewport-Bereich ausfüllt. Wird hauptsächlich für Android-Apps verwendet
- Enthält ein GLFW-Template, das ein typisches
main.cpperzeugt - Enthält ein Android-Template, das ein typisches
MainActivity.java+manifest+main.cpperzeugt
-
Unterstützung für verschiedene Widgets
- Grundlegende Widgets wie
Text,Checkbox,Combo,Button,Slider,ColorEdit - Container-Widgets wie
Child,Table,CollapsingHeader,TreeNode,TabBar - Ungewöhnliche Widgets wie
Splitter - Bearbeitung von
MenuBarund Kontextmenüs CustomWidgetfür benutzerdefinierten Code (Platzhalter)
- Grundlegende Widgets wie
-
Erstellung von Layouts mit
SameLine/Spacing/NextColumn- Dadurch wird sichergestellt, dass Widgets die Abstände zwischen Elementen und das Frame-Padding konsistent einhalten
- Klare Beziehungen zwischen Parent- und Child-Widgets sowie die Reihenfolge der Child-Elemente sind wichtig
-
Unterstützung für Box-Layouts
- Ein leistungsfähiger und einfach zu nutzender Layout-Mechanismus, der auf ImGui-Funktionen aufbaut
- Größenveränderbare Widgets können in horizontaler oder vertikaler Richtung gestreckt werden
- Spacer können zur Ausrichtung eingefügt werden
- Mit einem Tabellen-Layout-Helfer lassen sich horizontale Layouts erzeugen
-
Unterstützung für Property Binding
- Klassenvariablen können über einen einfachen Klassen-Assistenten oder einen Binding-Dialog verwaltet werden
- Über Property Binding erzeugte UIs sind dynamisch und gleichzeitig entwerfbar
-
Erzeugung von Event-Handlern und anderem Support-Code
- Ein modaler Dialog erzeugt zum Beispiel die Member-Funktion
OpenPopupund einen Lambda-Callback, der aufgerufen wird, wenn der Dialog geschlossen wird - Event-Handler trennen benutzerdefinierten Code von den generierten Teilen, damit der Designer weiterhin funktioniert
- Ein modaler Dialog erzeugt zum Beispiel die Member-Funktion
-
Der erzeugte Code ist durch Kommentar-Marker getrennt, und Benutzer können frei zusätzlichen Code einfügen
- Kann verwendet werden, um Draw-Aufrufe für abhängige Pop-ups auszuführen oder Variablen zu berechnen
CustomWidgetkann verwendet werden, um Callbacks für benutzerdefinierten Code aufzurufen
-
Der Stil des Zielfensters ist vollständig konfigurierbar
- Zusätzlich zu den von ImGui bereitgestellten Standardstilen können Benutzer neue Stile definieren und als INI-Dateien im Ordner
stylespeichern - ImRAD berücksichtigt die Style-Einstellungen beim UI-Design
- Gespeicherte Stile können in der Anwendung mit einer einfachen Funktion aus
imrad.hgeladen werden
- Zusätzlich zu den von ImGui bereitgestellten Standardstilen können Benutzer neue Stile definieren und als INI-Dateien im Ordner
-
Der erzeugte Code kann sofort im Projekt verwendet werden und benötigt nur die ImGui-Bibliothek und eine Header-Datei (
imrad.h)- Einige Funktionen wie MainWindow oder das Image-Widget benötigen eine GLFW-Abhängigkeit. Sie können durch Kompilieren mit
IMRAD_WITH_GLFWaktiviert werden - Das Image-Widget benötigt derzeit außerdem die stb-Bibliothek. Entweder mit
IMRAD_WITH_STBkompilieren oderLoadTextureFromFile()bereitstellen - Optionale Unterstützung für die populäre
fmt-Bibliothek kann durch Definieren vonIMRAD_WITH_FMTaktiviert werden. Dadurch können Formatierungs-Flags für alle String-Properties verwendet werden
- Einige Funktionen wie MainWindow oder das Image-Widget benötigen eine GLFW-Abhängigkeit. Sie können durch Kompilieren mit
-
ImRAD verfolgt Änderungen an geöffneten Dateien, sodass Dateien in der IDE entworfen und bearbeitet werden können
- Die Auto-Save-Funktion kann dabei nützlich sein
Lizenz
- Der ImRAD-Quellcode steht unter der GPL-Lizenz
- Von dem Tool erzeugter Code ist von der GPL ausgenommen und kann in Open-Source- oder kommerziellen Projekten enthalten sein. Die Lizenz wird vom Benutzer festgelegt
imrad.hist ebenfalls von der GPL-Lizenz ausgenommen
Download
Die neueste Version erhält man, indem man das Repository mit CMake klont und baut. Die Submodule im Verzeichnis 3rdparty müssen ebenfalls geholt werden. Etwas ältere Versionen können unter Releases heruntergeladen werden
Zusammenfassung von GN⁺
- ImRAD ist ein leistungsfähiger GUI-Builder für die ImGui-Bibliothek und unterstützt verschiedene Fenster und Widgets
- Mit Property Binding und der Erzeugung von Event-Handlern ist dynamisches und flexibles UI-Design möglich
- Der erzeugte Code kann sofort im Projekt verwendet werden und unterstützt verschiedene Abhängigkeiten
- ImRAD wird aktiv weiterentwickelt, und Benutzer können Stile frei definieren und speichern
- Andere Projekte mit ähnlichen Funktionen sind Qt Designer und Dear ImGui
1 Kommentare
Hacker-News-Kommentare
sudo-Befehle zu geben, aber insgesamt sieht es sehr cool aus.