Skip to content

Commit 7465bf3

Browse files
committed
WIP
1 parent 43da423 commit 7465bf3

File tree

1 file changed

+35
-14
lines changed

1 file changed

+35
-14
lines changed

src/main.rs

Lines changed: 35 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,46 @@ use std::io;
55
use crossterm::event::{self, Event, KeyCode, KeyEvent, KeyModifiers};
66
use ratatui::{DefaultTerminal, Frame};
77

8-
fn main() -> io::Result<()> {
9-
let terminal = ratatui::init();
10-
let result = run(terminal);
11-
ratatui::restore();
12-
result
8+
struct State {
9+
text: Vec<char>,
1310
}
1411

15-
fn run(mut terminal: DefaultTerminal) -> io::Result<()> {
16-
loop {
17-
terminal.draw(render)?;
18-
let event = event::read()?;
12+
impl State {
13+
fn run(&mut self, mut terminal: DefaultTerminal) -> io::Result<()> {
14+
loop {
15+
terminal.draw(|x| self.render(x))?;
16+
let event = event::read()?;
1917

20-
match event {
21-
Event::Key( KeyEvent{ code : KeyCode::Char('q'), modifiers: KeyModifiers::CONTROL, .. } ) => break Ok(()),
22-
_ => {}
18+
match event {
19+
Event::Key(KeyEvent {
20+
code: KeyCode::Char('q'),
21+
modifiers: KeyModifiers::CONTROL,
22+
..
23+
}) => break Ok(()),
24+
Event::Key(KeyEvent {
25+
code: KeyCode::Char(c),
26+
modifiers: KeyModifiers::NONE,
27+
..
28+
}) => self.insert_char(c),
29+
_ => {}
30+
}
2331
}
2432
}
33+
34+
fn insert_char(&mut self, c: char) {
35+
self.text.push(c);
36+
}
37+
38+
fn render(&self, frame: &mut Frame) {
39+
let s: String = self.text.iter().collect();
40+
frame.render_widget(s, frame.area());
41+
}
2542
}
2643

27-
fn render(frame: &mut Frame) {
28-
frame.render_widget("hello world", frame.area());
44+
fn main() -> io::Result<()> {
45+
let terminal = ratatui::init();
46+
let mut state: State = State { text: Vec::new() };
47+
let result = state.run(terminal);
48+
ratatui::restore();
49+
result
2950
}

0 commit comments

Comments
 (0)