ImRAD, GUI builder untuk pustaka ImGui
(github.com/tpecholt)ImRAD
ImRAD adalah GUI builder untuk pustaka ImGui. Alat ini dapat menghasilkan dan mem-parsing kode C++ sehingga bisa langsung digunakan di aplikasi. ImRAD dapat berjalan di Windows, Linux, dan MacOS.
Fitur
ImRAD sedang dikembangkan secara aktif, dan fitur utamanya adalah sebagai berikut:
-
Mendukung berbagai desain jendela
- Jendela floating, popup, dan popup modal. Independen dari backend ImGui
- MainWindow melalui integrasi GLFW. ImRAD menghasilkan pemanggilan GLFW yang menyinkronkan jendela ImGui dengan jendela OS (title bar, flag dapat diubah ukurannya, auto-resize, dll.)
- Activity. Jendela tanpa dekorasi yang mengisi seluruh area viewport. Umumnya digunakan untuk aplikasi Android
- Termasuk template GLFW yang menghasilkan
main.cppumum - Termasuk template Android yang menghasilkan
MainActivity.java+manifest+main.cpp
-
Mendukung berbagai widget
- Widget dasar seperti
Text,Checkbox,Combo,Button,Slider,ColorEdit - Widget kontainer seperti
Child,Table,CollapsingHeader,TreeNode,TabBar - Widget khusus seperti
Splitter - Pengeditan
MenuBardan menu konteks CustomWidgetuntuk kode pengguna (placeholder)
- Widget dasar seperti
-
Pembuatan layout dengan
SameLine/Spacing/NextColumn- Ini memastikan widget secara konsisten mematuhi item spacing dan frame padding
- Relasi parent-child yang jelas dan urutan child antar widget sangat penting
-
Mendukung box layout
- Mekanisme layout yang kuat dan mudah digunakan, diimplementasikan di atas fitur ImGui
- Widget yang ukurannya dapat diubah dalam arah horizontal atau vertikal dapat dibuat stretchable
- Spacer dapat disisipkan untuk alignment
- Layout horizontal dapat dibuat dengan helper table layout
-
Mendukung property binding
- Variabel kelas dapat dikelola melalui class wizard sederhana atau dialog binding
- UI yang dihasilkan melalui property binding tetap dinamis sekaligus dapat dirancang
-
Menghasilkan event handler dan kode pendukung lainnya
- Sebagai contoh, dialog modal menghasilkan fungsi anggota
OpenPopupdan callback lambda yang dipanggil saat dialog ditutup - Event handler memisahkan kode pengguna dari bagian yang dihasilkan agar designer tetap dapat bekerja
- Sebagai contoh, dialog modal menghasilkan fungsi anggota
-
Kode yang dihasilkan dipisahkan dengan penanda komentar, dan pengguna bebas menambahkan kode tambahan
- Dapat digunakan untuk memanggil Draw popup dependen atau menghitung variabel
- Dapat menggunakan
CustomWidgetyang memanggil callback kode pengguna
-
Style jendela target dapat dikonfigurasi sepenuhnya
- Selain style default yang disediakan ImGui, pengguna dapat mendefinisikan style baru dan menyimpannya sebagai file INI di folder
style - ImRAD mengikuti pengaturan style saat mendesain UI
- Style yang disimpan dapat dimuat di aplikasi menggunakan fungsi sederhana di
imrad.h
- Selain style default yang disediakan ImGui, pengguna dapat mendefinisikan style baru dan menyimpannya sebagai file INI di folder
-
Kode yang dihasilkan dapat langsung digunakan di proyek dan hanya memerlukan pustaka ImGui serta satu file header (imrad.h)
- Beberapa fitur seperti MainWindow atau widget Image memerlukan dependensi GLFW. Dapat diaktifkan dengan kompilasi menggunakan
IMRAD_WITH_GLFW - Saat ini widget Image juga memerlukan pustaka stb. Kompilasi dengan
IMRAD_WITH_STBatau sediakanLoadTextureFromFile() - Dukungan opsional untuk pustaka populer
fmtdapat diaktifkan dengan mendefinisikanIMRAD_WITH_FMT. Ini memungkinkan penggunaan flag formatting pada semua properti string
- Beberapa fitur seperti MainWindow atau widget Image memerlukan dependensi GLFW. Dapat diaktifkan dengan kompilasi menggunakan
-
ImRAD melacak perubahan pada file yang dibuka sehingga file dapat didesain dan diedit di IDE
- Fitur auto-save dapat berguna
Lisensi
- Kode sumber ImRAD berada di bawah lisensi GPL
- Kode yang dihasilkan oleh alat ini dikecualikan dari GPL dan dapat disertakan dalam proyek open source maupun komersial. Pengguna menentukan lisensinya
imrad.hjuga dikecualikan dari lisensi GPL
Unduhan
Versi terbaru dapat diperoleh dengan meng-clone repositori dan membangunnya menggunakan CMake. Submodule di direktori 3rdparty juga harus diambil. Versi yang agak lama dapat diunduh dari Releases
Ringkasan GN⁺
- ImRAD adalah GUI builder yang kuat untuk pustaka ImGui, dengan dukungan untuk berbagai jendela dan widget
- Dengan property binding dan fitur pembuatan event handler, perancangan UI yang dinamis dan fleksibel menjadi memungkinkan
- Kode yang dihasilkan dapat langsung digunakan di proyek dan mendukung berbagai dependensi
- ImRAD sedang dikembangkan secara aktif, dan pengguna dapat secara bebas mendefinisikan serta menyimpan style
- Proyek lain dengan fungsi serupa antara lain Qt Designer dan Dear ImGui
1 komentar
Komentar Hacker News