This commit is contained in:
2025-06-29 11:20:36 -05:00
parent cff2e315ca
commit af719d83db
13 changed files with 90 additions and 586 deletions
+3 -44
View File
@@ -1,52 +1,11 @@
use std::sync::Arc;
use crossterm::event::KeyEvent;
use osui::{
element::rect::Rect,
events::EventManager,
extensions::{keypress::KeyPressExtension, ExtensionManager},
state::StateManager,
style::Transform,
Screen,
};
use osui::{style::Transform, Screen};
fn main() {
init(&StateManager::new(init));
}
fn init(states: &Arc<StateManager>) {
let mut screen = Screen::new();
screen.events.set_state_manager(states.clone());
let mut extensions = ExtensionManager::new();
extensions.add(KeyPressExtension);
app(states, &mut screen);
screen.run(&mut extensions).unwrap();
}
fn app(states: &Arc<StateManager>, screen: &mut Screen) {
screen.events.set_state_manager(states.clone());
let mut count = states.use_state(0);
screen
.draw(Rect(0xffffff))
.component(Transform::center().dimensions(30, 3));
screen
.draw(format!("Count: {count}"))
.draw(format!("Hello, World!"))
.component(Transform::center());
screen.events.on(
move |events: &Arc<EventManager>, event: &KeyEvent| match event.code {
crossterm::event::KeyCode::Enter => {
count += 1;
}
_ => {
events.close();
}
},
);
screen.run().unwrap();
}