quvyta-framework
qframe
Ein Rust-Framework für Terminal-Anwendungen. Es gibt dir die Laufzeit, einen Satz Widgets sowie Theme-, Symbol- und Sprachdateien, mit einer visuellen Regel: die Form entsteht aus Farbe, nie aus Klammern oder Rahmenzeichen.
cargo add quvyta-frameworkEine kleinste Anwendung
Daten, eine Ansicht, die sie zeichnet, ein Update, das sie ändert.
Die Laufzeit macht aus Tasten und Klicks Nachrichten und zeichnet nur neu, wenn sich etwas geändert hat. Das Paket heißt quvyta-framework, seine Bibliothek qframe, im Code also use qframe::prelude::*;.
Dieselbe Anwendung läuft in den Tests ganz ohne Terminal: Tasten drücken, klicken und den Bildschirm als Text zurücklesen.
Text, den Menschen sehen, gehört in Sprachdateien und wird mit t!("key") gelesen; das Beispiel nutzt der Kürze wegen einfache Zeichenketten. Rust 1.95 oder neuer.
use qframe::prelude::*;
#[derive(Default)]
struct Counter {
count: i32,
}
#[derive(Clone)]
enum Msg {
Increment,
}
impl App for Counter {
type Msg = Msg;
fn update(&mut self, msg: Msg) -> Command<Msg> {
match msg {
Msg::Increment => self.count += 1,
}
Command::none()
}
fn view(&self, ui: &mut View<'_, Msg>) {
ui.column(|ui| {
ui.add(Text::new(format!("Count: {}", self.count)));
ui.add(Button::new("Add one").variant("primary").on_press(Msg::Increment));
})
.gap(1);
}
}
// Tests steuern dieselbe Anwendung ohne Terminal.
let mut app = Harness::new(Counter::default(), 30, 4);
app.press("tab").press("enter");
assert!(app.screen().contains("Count: 1"));
Was dabei ist
Alles, was eine sorgfältige Terminal-Anwendung braucht.
- Widgets
Schaltflächen, Listen, Bäume, Tabellen, Tabs, Formulare und Assistenten, Felder für Datum, Zeit und Dauer, Datei- und Ordnerauswahl, Menüs, Toasts, Tooltips, eine Befehlspalette, Diagramme, Markdown-, Code- und Protokollansichten und ein Terminal.
- Themes
Iris, Nordic, Amber und Monochrome. Jede Farbe kommt aus dem Theme, also ändert sich eine ganze Anwendung mit einer Einstellung.
- Symbole in drei Modi
Nerd Font, reines Unicode und ASCII. Jede Glyphe ist in jedem Modus genau eine Zelle breit.
- Neun Sprachen
Englisch, Türkisch, Deutsch, Spanisch, Französisch, brasilianisches Portugiesisch, Russisch, vereinfachtes Chinesisch und Japanisch, für jede Komponente; die Wörter deiner Anwendung liegen daneben.
- Tastatur und Maus
Jedes Element antwortet beiden, mit derselben Tonleiter: ruhend, überfahren, fokussiert, gedrückt.
- Bewegung, die flüstert
Die Dauern kommen aus dem Theme, und reduzierte Bewegung wird überall respektiert.
Vier Themes
Derselbe Bildschirm, in vier Themes.
Jede Farbe kommt aus dem Theme, also ändert sich eine ganze Anwendung mit einer Einstellung. Wähle unten eines, und dasselbe Dashboard nimmt seine Farben an; der Schalter sind vier Radioknöpfe, ganz ohne Skript.
Das Showcase
Eine Seite für jede Komponente.
Installiere das Showcase und starte qframe: jede Komponente hat eine laufende Demo, ihren Code, eine Anleitung und eine Referenz. Jedes Bild auf dieser Seite ist einer ihrer Testbildschirme, ohne Terminal gezeichnet.
cargo install quvyta-framework-showcase && qframeDokumentation
Wo mehr zu lesen ist.
- API-Dokumentation auf docs.rs
Jedes öffentliche Element, auf Englisch dokumentiert.
- Das Repository
Die Bibliothek, das Showcase und die Entwurfsprinzipien dahinter.