Web Analytics

AppCUI-rs

⭐ 358 stars Arabic by gdt050579

🌐 اللغة

AppCUI-rs

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


حالة البناء على ويندوز
حالة البناء على لينكس
حالة البناء على ماك أو إس
تغطية الشيفرة
الرخصة
Crates.io
Docs.rs
المعرض

AppCUI-rs هي مكتبة Rust سريعة ومتعددة المنصات لبناء واجهات مستخدم حديثة قائمة على النصوص (TUIs) مع عناصر واجهة غنية ومواضيع ودعم كامل لـ Unicode—بديل لـ ncurses وأطر واجهات الطرفية الأخرى.

✨ الميزات

  • [x] عناصر تحكم جاهزة متعددة (أزرار، تسميات، صناديق نصية، صناديق اختيار، أزرار اختيار، قوائم، شجرات، قوائم منسدلة، منتقيات تاريخ/وقت، منتقيات ألوان، تبويبات، أكورديونات، إلخ). القائمة الكاملة لعناصر التحكم يمكن العثور عليها هنا
  • [x] نظام تخطيط قوي يسمح لك بترتيب العناصر باستخدام إحداثيات مطلقة، نسبية، إرساء، محاذاة، نقاط ارتكاز أو تموضع محوري (اطلع على المزيد هنا)
  • [x] قوائم وأشرطة أدوات
  • [x] دعم متعدد المنصات (ويندوز عبر API والطرفية الافتراضية، لينكس عبر ncurses، ماك أو إس عبر termios)
  • [x] دعم للتعددية في المعالجة للسماح بالمهام الخلفية
  • [x] مؤقتات
  • [x] دعم للفأرة
  • [x] دعم للحافظة
  • [x] مواضيع ألوان
  • [x] دعم لحروف الـ Unicode
  • [x] حوارات معرفة مسبقًا (صندوق رسائل، صندوق إدخال، منتقي ألوان، حوارات حفظ وفتح، مستعرض مجلدات، إلخ)
  • [x] دعم الألوان الحقيقية (24 بت لكل بكسل) للطرفيات التي تدعمها.

📸 لقطات شاشة

👉 اطلع على المعرض لمشاهدة عروض كاملة لجميع العناصر!

🖥️ الأنظمة الخلفية

يدعم AppCUI العديد من الأنظمة الخلفية حسب نظام التشغيل المستخدم:

  • كونسول ويندوز - يعتمد على واجهة برمجة التطبيقات Win32 منخفضة المستوى، مصمم للكونسول الكلاسيكي في ويندوز
  • ويندوز VT - يعتمد على تسلسل ANSI، مصمم للمحطات الافتراضية الحديثة في ويندوز
  • NCurses - يعتمد على واجهة برمجة تطبيقات NCurses لبيئات لينكس
  • Termios - يعتمد على تسلسلات ANSI وواجهات برمجة التطبيقات منخفضة المستوى لنظام MAC OSX
  • ويب تيرمينال - مصمم للتنفيذ على الويب (معتمد على 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