Web Analytics

AppCUI-rs

⭐ 358 stars Persian by gdt050579

🌐 زبان

AppCUI-rs

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


وضعیت ساخت ویندوز
وضعیت ساخت لینوکس
وضعیت ساخت مک‌اواس
پوشش کد
مجوز
Crates.io
Docs.rs
Gallery

AppCUI-rs یک کتابخانه سریع و چندسکویی Rust برای ساخت رابط‌های کاربری متنی مدرن (TUI) با ابزارک‌های غنی، پوسته‌ها و پشتیبانی کامل از یونیکد است—جایگزینی برای ncurses و سایر چارچوب‌های رابط کاربری ترمینال.

✨ ویژگی‌ها

  • [x] کنترل‌های متعدد آماده (دکمه‌ها، برچسب‌ها، جعبه‌های متن، جعبه‌های انتخاب، دکمه‌های رادیویی، نمای لیست، نمای درختی، جعبه‌های ترکیبی، انتخابگر تاریخ/زمان، انتخابگر رنگ، تب‌ها، آکوردئون‌ها و غیره). لیست کامل کنترل‌ها را می‌توانید اینجا ببینید.
  • [x] سیستم چیدمان قدرتمند که امکان موقعیت‌دهی کنترل‌ها با مختصات مطلق، نسبی، اتصال، تراز، لنگر یا موقعیت‌یابی محور را فراهم می‌کند (اطلاعات بیشتر اینجا)
  • [x] منوها و نوار ابزارها
  • [x] پشتیبانی چندسکویی (ویندوز از طریق API و ترمینال مجازی، لینوکس از طریق ncurses، مک‌اواس از طریق termios)
  • [x] پشتیبانی از چندرشته‌ای برای انجام کارهای پس‌زمینه
  • [x] تایمرها
  • [x] پشتیبانی از ماوس
  • [x] پشتیبانی از کلیپ‌بورد
  • [x] پوسته‌های رنگی
  • [x] پشتیبانی از کاراکترهای یونیکد
  • [x] دیالوگ‌های از پیش تعریف شده (جعبه پیام، جعبه ورودی، انتخابگر رنگ، دیالوگ‌های ذخیره و باز کردن، مرورگر پوشه و غیره)
  • [x] پشتیبانی از رنگ‌های واقعی (۲۴ بیت در هر پیکسل) برای ترمینال‌هایی که از آن پشتیبانی می‌کنند.

📸 اسکرین‌شات‌ها

👉 برای مشاهده دموهای کامل همه کنترل‌ها، به گالری مراجعه کنید!

🖥️ بک‌اندها

AppCUI از بک‌اندهای مختلف بر اساس سیستم‌عاملی که روی آن اجرا می‌شود پشتیبانی می‌کند:

  • کنسول ویندوز - مبتنی بر API سطح پایین Win32، طراحی شده برای کنسول کلاسیک ویندوز
  • وی‌تی ویندوز - مبتنی بر توالی‌های ANSI، طراحی شده برای ترمینال‌های مجازی مدرن ویندوز
  • ان‌کِرسِز - مبتنی بر API ان‌کِرسِز برای محیط‌های لینوکس
  • ترمیوس - مبتنی بر توالی‌های ANSI و APIهای سطح پایین برای مک‌اواس‌ایکس
  • وب ترمینال - طراحی شده برای پیاده‌سازی وب (مبتنی بر webgl)
  • کراس‌ترم - مبتنی بر crate به نام 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(()) }

یا یک نسخه فشرده‌تر با استفاده از proc-macros:

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