//! Mode 00: Direct draw, direct control use ::std::sync::{Arc, RwLock}; use ::crossterm::event::{Event::*, KeyEvent, KeyCode::*}; use ::ratatui::style::Color; use ::tengri::{*, lang::*}; tui_app!(State { /** User-controllable value. */ cursor: usize, }); tui_view!(self: State { thunk(|to: &mut Tui|{ let cursor = format!("Cursor: {}", self.cursor); let _ = "DEMO [MODE 00]".align_sw().draw(to); let _ = ShowSize.align_se().draw(to); let _ = format!("Cursor: {}", self.cursor).align_c().draw(to); Ok(Some(to.area())) }) }); tui_keys!(self: State, input { Ok(if let Key(KeyEvent { code, .. }) = input.0 { match code { Up | Right => { self.cursor = (self.cursor + 1) % 10; () }, Down | Left => { self.cursor = if self.cursor > 0 { self.cursor - 1 } else { 10 - 1 }; () }, _ => {} } }) });