ImRAD, ImGui kütüphanesi için GUI oluşturucu
(github.com/tpecholt)ImRAD
ImRAD, ImGui kütüphanesi için bir GUI oluşturucudur. C++ kodu üretip ayrıştırabilir ve doğrudan uygulamada kullanılabilir. ImRAD, Windows, Linux ve macOS üzerinde çalışabilir.
Özellikler
ImRAD aktif olarak geliştirilmektedir ve başlıca özellikleri şunlardır:
-
Çeşitli pencere tasarımlarını destekler
- Kayan pencereler, açılır pencereler ve modal açılır pencereler. ImGui backend'inden bağımsızdır
- GLFW entegrasyonu üzerinden MainWindow. ImRAD, ImGui penceresini OS penceresiyle senkronize eden GLFW çağrıları üretir (başlık çubuğu, yeniden boyutlandırılabilir bayraklar, otomatik boyutlandırma vb.)
- Activity. Tüm viewport alanını dolduran, süslemesiz pencere. Çoğunlukla Android uygulamalarında kullanılır
- Tipik bir
main.cppüreten GLFW şablonu içerir - Tipik bir
MainActivity.java+manifest+main.cppüreten Android şablonu içerir
-
Çeşitli widget'ları destekler
Text,Checkbox,Combo,Button,Slider,ColorEditgibi temel widget'larChild,Table,CollapsingHeader,TreeNode,TabBargibi kapsayıcı widget'larSplittergibi sıra dışı widget'larMenuBarve bağlam menüsü düzenleme- Kullanıcı kodu için
CustomWidget(yer tutucu)
-
SameLine/Spacing/NextColumnkullanarak yerleşim oluşturma- Bu, widget'ların öğe aralığına ve çerçeve dolgusuna tutarlı biçimde uymasını garanti eder
- Ebeveyn-çocuk widget ilişkilerinin netliği ve çocuk sırası önemlidir
-
Kutu yerleşimi desteği
- ImGui özelliklerinin üzerine kurulmuş güçlü ve kullanımı kolay bir yerleşim mekanizması
- Yatay veya dikey yönde yeniden boyutlandırılabilen widget'lar esnetilebilir
- Hizalama için spacer eklenebilir
- Tablo yerleşimi yardımcıları kullanılarak yatay yerleşim oluşturulabilir
-
Özellik bağlama desteği
- Sınıf değişkenleri basit bir sınıf sihirbazı veya bağlama iletişim kutusu üzerinden yönetilebilir
- Özellik bağlama sayesinde üretilen arayüzler dinamik olurken aynı zamanda tasarlanabilir kalır
-
Olay işleyicileri ve diğer destek kodlarını üretir
- Örneğin modal iletişim kutuları,
OpenPopupüye fonksiyonunu ve iletişim kutusu kapandığında çağrılan lambda callback'ini üretir - Olay işleyicileri, tasarımcının çalışmaya devam edebilmesi için kullanıcı kodunu ve üretilen bölümleri ayırır
- Örneğin modal iletişim kutuları,
-
Üretilen kod, yorum işaretleyicileriyle ayrılır ve kullanıcılar özgürce ek kod ekleyebilir
- Bağımlı popup Draw çağrıları yapmak veya değişkenleri hesaplamak için kullanılabilir
- Kullanıcı kodu callback'lerini çağıran
CustomWidgetkullanılabilir
-
Hedef pencere stili tamamen yapılandırılabilir
- ImGui'nin sağladığı varsayılan stillere ek olarak kullanıcı yeni stiller tanımlayıp bunları
styleklasöründe INI dosyaları olarak kaydedebilir - ImRAD, arayüz tasarlanırken stil ayarlarına uyar
- Kaydedilen stiller, uygulamada basit bir
imrad.hfonksiyonu kullanılarak yüklenebilir
- ImGui'nin sağladığı varsayılan stillere ek olarak kullanıcı yeni stiller tanımlayıp bunları
-
Üretilen kod doğrudan projede kullanılabilir ve yalnızca ImGui kütüphanesi ile tek bir başlık dosyası (
imrad.h) gerektirir- MainWindow veya Image widget'ı gibi bazı özellikler GLFW bağımlılığı gerektirir.
IMRAD_WITH_GLFWile derlenerek etkinleştirilebilir - Şu anda Image widget'ı ayrıca stb kütüphanesi de gerektirir.
IMRAD_WITH_STBile derlenebilir veyaLoadTextureFromFile()sağlanmalıdır - Popüler
fmtkütüphanesi için isteğe bağlı destek,IMRAD_WITH_FMTtanımlanarak etkinleştirilebilir. Bu, tüm string özelliklerinde biçimlendirme bayraklarının kullanılmasını sağlar
- MainWindow veya Image widget'ı gibi bazı özellikler GLFW bağımlılığı gerektirir.
-
ImRAD, açık dosyalardaki değişiklikleri izleyebilir; böylece dosya IDE içinde hem tasarlanabilir hem de düzenlenebilir
- Otomatik kaydetme özelliği faydalı olabilir
Lisans
- ImRAD kaynak kodu GPL lisansı altındadır
- Araç tarafından üretilen kod GPL kapsamı dışındadır ve açık kaynak veya ticari projelere dahil edilebilir. Lisansa kullanıcı karar verir
imrad.hda GPL lisansının kapsamı dışındadır
İndirme
En son sürüm, depoyu clone edip CMake kullanarak derleyerek edinilebilir. 3rdparty dizinindeki alt modüller de alınmalıdır. Biraz daha eski sürümler Releases bölümünden indirilebilir
GN⁺ Özeti
- ImRAD, ImGui kütüphanesi için çeşitli pencere ve widget'ları destekleyen güçlü bir GUI oluşturucudur
- Özellik bağlama ve olay işleyicisi üretimi sayesinde dinamik ve esnek arayüz tasarımı mümkündür
- Üretilen kod doğrudan projede kullanılabilir ve çeşitli bağımlılıkları destekler
- ImRAD aktif olarak geliştirilmektedir ve kullanıcıların stilleri özgürce tanımlayıp kaydetmesine olanak tanır
- Benzer işlevlere sahip diğer projeler arasında Qt Designer ve Dear ImGui bulunur
1 yorum
Hacker News görüşleri
sudokomutu var gibi, ama genel olarak çok etkileyici görünüyor