यह आखिर है क्या?

  • यह एक लाइब्रेरी है जो Macintosh Classic "Toolbox" API के बड़े हिस्से की नकल करती है; यह पूरी implementation नहीं है, लेकिन कुछ सरल applications बनाने के लिए पर्याप्त है.
  • यह MII Apple //e emulator में जोड़ी गई एक सुविधा है, और फीचर जोड़ने के मामले में विश्व रिकॉर्ड को चुनौती देने वाली परियोजनाओं में से एक है.

क्यों?

  • MII के लिए एक UI library की ज़रूरत थी, जिसमें बहुत ज़्यादा dependencies न हों और जो 'game-like' style न चाहती हो.
  • शुरुआत Nuklear immediate mode UI से की गई, लेकिन वह बहुत सीमित लगा और customization की ज़रूरत पड़ने पर असुविधाजनक था.
  • UI layout engine संतोषजनक नहीं था, और state बनाए रखने के दावे के बावजूद वास्तव में hash values के आधार पर state रखता था.
  • पहले UI कारीगरी की तरह बनाए जाते थे, लेकिन आजकल अक्सर design या usability की समझ के बिना फैसले लिए जाते हैं.
  • पहले से मौजूद कई हिस्सों का उपयोग करके अपनी लाइब्रेरी बनानी शुरू की गई.

यह लाइब्रेरी क्या कर सकती है?

  • इसमें Macintosh Toolbox के कुछ 'managers' हैं, और यह आधुनिक systems की तरह काम करती है.
  • इसे ARGB buffer में 'screen' पर draw करने के लिए डिज़ाइन किया गया है, और ज़रूरत पड़ने पर कहीं भी copy किया जा सकता है.
  • लाइब्रेरी 'invalid' regions को track करती है और सिर्फ़ ज़रूरी हिस्सों को फिर से draw करके overdraw को न्यूनतम करती है.

यह मूल से कैसे अलग है?

  • दिखने में इसकी शुरुआत MacOS 8/9 से हुई, लेकिन सभी grayscale हटा दिए गए हैं.
  • API के लिहाज़ से यह पूरी तरह asynchronous है, और मूल की तरह ज़रूरत पड़ने पर window या GrafPort पर draw नहीं किया जा सकता.
  • सब कुछ mui_window या mui_control से बना है.

window manager

  • windows बना और draw कर सकता है.
  • इसमें अधिकतम 15 'layers' हैं, और यह clipping वगैरह कर सकता है.

menu manager

  • System 7/8 या GS/OS जैसे दिखने वाले menu bar, menus, checkmarks, keyboard shortcuts आदि देता है.

control manager

  • buttons, checkboxes, radio buttons, scrollbars (vertical), text boxes आदि देता है.

list manager

  • यह file names दिखाने के लिए डिज़ाइन किया गया है, और arrow keys, page up/down, scroll wheel आदि संभाल सकता है.

alerts

  • यह 'रद्द करें' और 'पुष्टि करें' buttons वाले सामान्य alerts देता है.

standard file

  • यह file open dialog देता है.

resource manager

  • resource manager उपलब्ध नहीं है.

dependencies क्या हैं?

  • बाहरी dependency सिर्फ़ libpixman है.
  • यह libpixman, libcg, stb_truetype.h, stb_ttc.h आदि का उपयोग करता है.

build कैसे करें?

  • एक साधारण Makefile का उपयोग करके root directory में 'make' command से library और test/demo/samples build किए जा सकते हैं.

इसका उपयोग कैसे करें?

  • mui_shell.c और mui_widgets_demo.c को संशोधित करके उपयोग करना सबसे अच्छा है.
  • यह mui_widgets_demo.so को plugin के रूप में load करता है और बदलाव का पता चलने पर उसे अपने-आप फिर से load करता है.

FAQ!

  • यह dark mode, themes, transparent windows, cube effects, menu stickiness, आधुनिक trendy tools या frameworks, नए language bindings, Wayland support आदि उपलब्ध नहीं कराता.

GN⁺ की राय

  • यह लाइब्रेरी classical Macintosh UI को आधुनिक systems के लिए फिर से गढ़ने वाली एक दिलचस्प परियोजना है. यह developers में पुराने UI design के प्रति nostalgia जगा सकती है.
  • asynchronous UI library आधुनिक application development के लिए अधिक उपयुक्त होती है, और यह लाइब्रेरी ऐसा ही आधुनिक approach अपनाती है.
  • यह लाइब्रेरी खासकर उन developers के लिए उपयोगी हो सकती है जो resource efficiency को महत्व देते हैं. overdraw को कम करना और सिर्फ़ ज़रूरी हिस्सों को फिर से draw करना performance optimization में मदद कर सकता है.
  • लेकिन यह लाइब्रेरी dark mode या theme support जैसी आधुनिक सुविधाएँ नहीं देती, इसलिए यह हर developer की ज़रूरतें पूरी नहीं कर सकती.
  • समान प्रकार की सुविधाएँ देने वाली आधुनिक UI libraries में Qt, GTK, या Electron जैसे frameworks शामिल हैं, जो अधिक व्यापक features और support देते हैं.

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.