2 पॉइंट द्वारा GN⁺ 2024-08-17 | 1 टिप्पणियां | WhatsApp पर शेयर करें

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 जैसे मूल widgets
    • Child, Table, CollapsingHeader, TreeNode, TabBar जैसे container widgets
    • Splitter जैसे विशेष widgets
    • MenuBar और 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 OpenPopup member function और dialog बंद होने पर कॉल होने वाला lambda callback जनरेट करता है
    • event handlers, user code और generated भागों को अलग रखते हैं ताकि designer काम करता रहे
  • जनरेट किया गया कोड comment markers से विभाजित होता है और उपयोगकर्ता स्वतंत्र रूप से अतिरिक्त कोड जोड़ सकता है

    • इसका उपयोग dependent popup Draw calls करने या variables की गणना करने में किया जा सकता है
    • user code callbacks को कॉल करने वाला CustomWidget इस्तेमाल किया जा सकता है
  • target window style पूरी तरह configurable है

    • ImGui में दिए गए default styles के अलावा, उपयोगकर्ता नए styles परिभाषित कर सकते हैं और उन्हें style folder में INI files के रूप में सहेज सकते हैं
    • ImRAD, UI design करते समय style settings का पालन करता है
    • सहेजे गए styles को सरल imrad.h function का उपयोग करके application में load किया जा सकता है
  • जनरेट किया गया कोड सीधे 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_FMT define करके सक्षम किया जा सकता है। इससे सभी string properties में formatting flags का उपयोग किया जा सकता है
  • 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 टिप्पणियां

 
GN⁺ 2024-08-17
Hacker News टिप्पणियाँ
  • इस प्रोजेक्ट का सबसे चौंकाने वाला हिस्सा यह है कि C++ के एक subset को handle करने वाला hand-rolled parser एक ही header file में implement किया गया है
  • dear-imgui के creator ने कहा था कि इसका नाम "dear" रखा गया है, इसलिए इसे "Dear library" कहना चाहिए
    • IMGUI का मतलब immediate mode GUI है, और creator ने कहा था कि उन्हें दूसरे IMGUI "simgui" से प्रेरणा मिली थी
  • इससे Visual Basic की nostalgia महसूस होती है, लेकिन यह imgui के cake पर icing जैसा लगता है
  • अगर इसे wasm html5 app के रूप में browser में जल्दी GUI बनाने और result को editor में copy-paste करने के लिए इस्तेमाल किया जा सके तो वह भी शानदार होगा
    • यह tool C++ code generate और parse कर सकता है, ताकि इसे application में सीधे इस्तेमाल किया जा सके
  • मैं पिछले कुछ वर्षों से ImGui C++ apps पर काम कर रहा हूँ, और यह tool बहुत समय बचा सकता था
  • pyimgui bindings इस्तेमाल करते समय, सोच रहा हूँ कि generated C++ code को Python से इस्तेमाल किया जा सकता है या नहीं
  • सोचता हूँ कि ImGui में ही GUI builder क्यों implement नहीं किया गया
  • ImGui के साथ project पर काम करते हुए मुझे लगा था कि ऐसा tool होना अच्छा रहेगा, इसे ज़रूर आज़माऊँगा
  • Steam एक लोकप्रिय cross-platform system है, लेकिन सोच रहा हूँ कि क्या इसे non-game applications या enterprise applications में भी इस्तेमाल किया जा सकता है
  • sudo commands कुछ ज़्यादा लगते हैं, लेकिन कुल मिलाकर यह बहुत शानदार दिखता है