Web Analytics

AppCUI-rs

⭐ 358 stars Hindi by gdt050579

🌐 भाषा

AppCUI-rs

`` ⯈ 𝗔𝗽𝗽𝗖𝗨𝗜-𝗿𝘀 🖳


Windows बिल्ड स्टेटस
Linux बिल्ड स्टेटस
MacOS बिल्ड स्टेटस
कोड कवरेज
लाइसेंस
Crates.io
Docs.rs
गैलरी

AppCUI-rs एक तेज़, क्रॉस-प्लेटफ़ॉर्म Rust लाइब्रेरी है, जो आधुनिक, टेक्स्ट-आधारित यूजर इंटरफेस (TUI) बनाने के लिए समृद्ध विजेट्स, थीम्स और पूर्ण यूनिकोड समर्थन प्रदान करती है—यह ncurses और अन्य टर्मिनल UI फ्रेमवर्क का एक विकल्प है।

✨ विशेषताएं

  • [x] कई इनबिल्ट कंट्रोल्स (बटन, लेबल, टेक्स्ट बॉक्स, चेक बॉक्स, रेडियो बटन, लिस्ट व्यू, ट्री व्यू, कॉम्बो बॉक्स, डेट/टाइम पिकर, कलर पिकर, टैब्स, एकॉर्डियन्स, आदि)। सभी कंट्रोल्स की पूरी सूची यहाँ देख सकते हैं
  • [x] शक्तिशाली लेआउट सिस्टम जो आपको कंट्रोल्स को absolute coordinates, relative coordinates, docking, alignment, anchors या pivot positioning द्वारा स्थान देने की अनुमति देता है (अधिक जानकारी यहाँ)
  • [x] मेनू और टूलबार
  • [x] मल्टी-प्लेटफ़ॉर्म सपोर्ट (Windows API और वर्चुअल टर्मिनल, Linux ncurses के माध्यम से, MacOS termios के माध्यम से)
  • [x] मल्टी-थ्रेडिंग सपोर्ट ताकि बैकग्राउंड टास्क संभव हो
  • [x] टाइमर
  • [x] माउस सपोर्ट
  • [x] क्लिपबोर्ड सपोर्ट
  • [x] कलर थीम्स
  • [x] यूनिकोड कैरेक्टर्स का समर्थन
  • [x] पूर्वनिर्धारित डायलॉग्स (मैसेज बॉक्स, इनपुट बॉक्स, कलर पिकर, सेव एवं ओपन डायलॉग्स, फोल्डर नेविगेटर, आदि)
  • [x] टर्मिनल में True Colors सपोर्ट (24 बिट्स प्रति पिक्सल), जहाँ उपलब्ध हो।

📸 स्क्रीनशॉट्स

👉 गैलरी में सभी कंट्रोल्स के पूर्ण डेमो देखें!

🖥️ बैकएंड्स

AppCUI विभिन्न ऑपरेटिंग सिस्टम के अनुसार विभिन्न बैकएंड्स का समर्थन करता है:

  • Windows Console - Win32 लो-लेवल API पर आधारित, क्लासिकल विंडोज़ कंसोल के लिए डिज़ाइन किया गया
  • Windows VT - ANSI अनुक्रमों पर आधारित, आधुनिक विंडोज़ वर्चुअल टर्मिनल्स के लिए डिज़ाइन किया गया
  • NCurses - लिनक्स वातावरण के लिए NCurses API पर आधारित
  • Termios - ANSI अनुक्रमों और MAC OSX के लिए लो-लेवल APIs पर आधारित
  • Web Terminal - वेब इम्प्लीमेंटेशन के लिए डिज़ाइन किया गया (webgl पर आधारित)
  • CrossTerm - crossterm क्रेट पर आधारित, लेकिन फीचर फ्लैग के माध्यम से सक्षम किया गया
समर्थित बैकएंड्स के बारे में अधिक जानकारी यहाँ पाई जा सकती है

🚀 त्वरित शुरुआत

अपने Cargo.toml में निम्नलिखित जोड़ें:

toml [dependencies] appcui = "*"
फिर एक नया Rust प्रोजेक्ट बनाएं और निम्नलिखित कोड जोड़ें:

rust use appcui::prelude::*;

fn main() -> Result<(), appcui::system::Error> { let mut app = App::new().build()?; let mut win = Window::new( "Test", LayoutBuilder::new().alignment(Alignment::Center).width(30).height(9).build(), window::Flags::Sizeable, ); win.add(Label::new( "Hello World !", LayoutBuilder::new().alignment(Alignment::Center).width(13).height(1).build(), )); app.add_window(win); app.run(); Ok(()) }

या प्रोसीजरल मैक्रो का उपयोग करते हुए एक और संक्षिप्त संस्करण:

rs use appcui::prelude::*;

fn main() -> Result<(), appcui::system::Error> { let mut app = App::new().build()?; let mut win = window!("Test,a:c,w:30,h:9"); win.add(label!("'Hello World !',a:c,w:13,h:1")); app.add_window(win); app.run(); Ok(()) }

फिर प्रोजेक्ट को cargo run के साथ चलाएँ। आपको एक विंडो दिखाई देगी जिसका शीर्षक Test होगा और केंद्र में Hello World ! लिखा होगा।

🧪 उदाहरण

AppCUI-rs के साथ शुरुआत करने में मदद के लिए एक उदाहरणों का सेट आता है। आप इन्हें examples फ़ोल्डर में पा सकते हैं, जिनमें शामिल हैं:

🛠️ एक अधिक जटिल उदाहरण

एक उदाहरण जो एक विंडो बनाता है जिसमें एक बटन होता है, जिसे दबाने पर काउंटर बढ़ता है।

rust use appcui::prelude::*;

// Create a window that handles button events and has a counter #[Window(events = ButtonEvents)] struct CounterWindow { counter: i32 }

impl CounterWindow { fn new() -> Self { let mut w = Self { // set up the window title and position base: window!("'Counter window',a:c,w:30,h:5"), // initial counter is 1 counter: 1 }; // add a single button with the caption "1" (like the counter) w.add(button!("'1',d:b,w:20")); w } } impl ButtonEvents for CounterWindow { // When the button is pressed, this function will be called // with the handle of the button that was pressed // Since we only have one button, we don't need to store its handle // in the struct, as we will receive the handle via the on_pressed method fn on_pressed(&mut self, handle: Handle