ImRAD, ImGui लाइब्रेरी के लिए GUI बिल्डर
(github.com/tpecholt)ImRAD
ImRAD, ImGui लाइब्रेरी के लिए एक GUI बिल्डर है। यह C++ कोड जनरेट और parse करता है, ताकि उसे सीधे application में इस्तेमाल किया जा सके। ImRAD Windows, Linux और MacOS पर चल सकता है।
विशेषताएँ
ImRAD का सक्रिय रूप से विकास किया जा रहा है और इसकी मुख्य विशेषताएँ इस प्रकार हैं:
-
विभिन्न विंडो डिज़ाइन का समर्थन
- floating window, popup और modal popup। यह ImGui backend से स्वतंत्र है
- GLFW integration के साथ MainWindow। ImRAD, ImGui window को OS window के साथ sync करने के लिए GLFW calls जनरेट करता है (title bar, resizable flags, auto resize आदि)
- Activity। पूरी viewport area को भरने वाली बिना सजावट वाली window। मुख्य रूप से Android apps में उपयोग होती है
- सामान्य
main.cppजनरेट करने वाला GLFW template शामिल है - सामान्य
MainActivity.java+manifest+main.cppजनरेट करने वाला Android template शामिल है
-
विभिन्न widgets का समर्थन
Text,Checkbox,Combo,Button,Slider,ColorEditजैसे मूल widgetsChild,Table,CollapsingHeader,TreeNode,TabBarजैसे container widgetsSplitterजैसे विशेष widgetsMenuBarऔर context menu editing- user code के लिए
CustomWidget(placeholder)
-
SameLine/Spacing/NextColumnका उपयोग करके layout जनरेशन- यह सुनिश्चित करता है कि widgets item spacing और frame padding का लगातार पालन करें
- parent-child widgets के बीच स्पष्ट संबंध और child order महत्वपूर्ण है
-
box layout का समर्थन
- ImGui functionality के ऊपर लागू किया गया शक्तिशाली और उपयोग में आसान layout mechanism
- horizontal या vertical दिशा में resizable widgets को stretch किया जा सकता है
- alignment के लिए spacer डाले जा सकते हैं
- table layout helper का उपयोग करके horizontal layout बनाया जा सकता है
-
property binding का समर्थन
- class variables को सरल class wizard या binding dialog के माध्यम से प्रबंधित किया जा सकता है
- property binding के माध्यम से जनरेट किया गया UI dynamic होने के साथ-साथ designable भी रहता है
-
event handlers और अन्य सहायक कोड जनरेशन
- उदाहरण के लिए, modal dialog
OpenPopupmember function और dialog बंद होने पर कॉल होने वाला lambda callback जनरेट करता है - event handlers, user code और generated भागों को अलग रखते हैं ताकि designer काम करता रहे
- उदाहरण के लिए, modal dialog
-
जनरेट किया गया कोड comment markers से विभाजित होता है और उपयोगकर्ता स्वतंत्र रूप से अतिरिक्त कोड जोड़ सकता है
- इसका उपयोग dependent popup Draw calls करने या variables की गणना करने में किया जा सकता है
- user code callbacks को कॉल करने वाला
CustomWidgetइस्तेमाल किया जा सकता है
-
target window style पूरी तरह configurable है
- ImGui में दिए गए default styles के अलावा, उपयोगकर्ता नए styles परिभाषित कर सकते हैं और उन्हें
stylefolder में INI files के रूप में सहेज सकते हैं - ImRAD, UI design करते समय style settings का पालन करता है
- सहेजे गए styles को सरल
imrad.hfunction का उपयोग करके application में load किया जा सकता है
- ImGui में दिए गए default styles के अलावा, उपयोगकर्ता नए styles परिभाषित कर सकते हैं और उन्हें
-
जनरेट किया गया कोड सीधे project में इस्तेमाल किया जा सकता है और इसके लिए केवल ImGui लाइब्रेरी और एक header file (
imrad.h) की आवश्यकता होती है- MainWindow या Image widget जैसी कुछ features के लिए GLFW dependency चाहिए। इसे
IMRAD_WITH_GLFWके साथ compile करके सक्षम किया जा सकता है - वर्तमान में Image widget को stb लाइब्रेरी की भी आवश्यकता है।
IMRAD_WITH_STBके साथ compile करें याLoadTextureFromFile()प्रदान करना होगा - लोकप्रिय
fmtलाइब्रेरी के लिए optional support,IMRAD_WITH_FMTdefine करके सक्षम किया जा सकता है। इससे सभी string properties में formatting flags का उपयोग किया जा सकता है
- MainWindow या Image widget जैसी कुछ features के लिए GLFW dependency चाहिए। इसे
-
ImRAD, open files में हुए बदलावों को track कर सकता है, इसलिए IDE में files को design और edit किया जा सकता है
- auto-save feature उपयोगी हो सकता है
लाइसेंस
- ImRAD source code GPL लाइसेंस के अंतर्गत है
- टूल द्वारा जनरेट किया गया कोड GPL से बाहर है और इसे open source या commercial projects में शामिल किया जा सकता है। लाइसेंस का निर्णय उपयोगकर्ता करता है
imrad.hभी GPL लाइसेंस से बाहर है
डाउनलोड
नवीनतम संस्करण पाने के लिए repository को clone करके CMake के साथ build करना होगा। 3rdparty directory के submodules भी लाने होंगे। थोड़ा पुराना संस्करण Releases से डाउनलोड किया जा सकता है
GN⁺ की संक्षिप्त जानकारी
- ImRAD, ImGui लाइब्रेरी के लिए एक शक्तिशाली GUI बिल्डर है, जो विभिन्न विंडो और widgets का समर्थन करता है
- property binding और event handler generation सुविधाओं के माध्यम से dynamic और flexible UI design संभव है
- जनरेट किया गया कोड सीधे project में इस्तेमाल किया जा सकता है और यह विभिन्न dependencies का समर्थन करता है
- ImRAD का सक्रिय रूप से विकास हो रहा है, और उपयोगकर्ता styles को स्वतंत्र रूप से परिभाषित और सहेज सकते हैं
- समान सुविधाओं वाले अन्य projects में Qt Designer और Dear ImGui शामिल हैं
1 टिप्पणियां
Hacker News टिप्पणियाँ
sudocommands कुछ ज़्यादा लगते हैं, लेकिन कुल मिलाकर यह बहुत शानदार दिखता है