diff --git a/README.md b/README.md index 78c9416d..b9ceb657 100644 --- a/README.md +++ b/README.md @@ -139,16 +139,16 @@ Find out more about the [framework](./FRAMEWORK.md). ```rust use anyhow::Result; -use termion::event::Key; - +use ratatui::layout::Position; use ratatui::{Frame, Viewport}; use radicle_tui as tui; +use tui::event::Key; use tui::store; -use tui::ui::im::widget::Window; -use tui::ui::im::Show; -use tui::ui::im::{Borders, Context}; +use tui::task::EmptyProcessors; +use tui::ui::widget::{Borders, Window}; +use tui::ui::{Context, Show}; use tui::{Channel, Exit}; #[derive(Clone, Debug)] @@ -174,9 +174,14 @@ impl store::Update for App { impl Show for App { fn show(&self, ctx: &Context, frame: &mut Frame) -> Result<()> { Window::default().show(ctx, |ui| { - ui.text_view(frame, self.hello.clone(), &mut (0, 0), Some(Borders::None)); + ui.text_view( + frame, + self.hello.clone(), + &mut Position::default(), + Some(Borders::None), + ); - if ui.input_global(|key| key == Key::Char('q')) { + if ui.has_input(|key| key == Key::Char('q')) { ui.send_message(Message::Quit); } }); @@ -191,7 +196,13 @@ pub async fn main() -> Result<()> { hello: "Hello World!".to_string(), }; - tui::im(app, Viewport::default(), Channel::default()).await?; + tui::im( + app, + Viewport::default(), + Channel::default(), + EmptyProcessors::new(), + ) + .await?; Ok(()) } diff --git a/examples/readme.rs b/examples/readme.rs new file mode 100644 index 00000000..33f09876 --- /dev/null +++ b/examples/readme.rs @@ -0,0 +1,69 @@ +use anyhow::Result; + +use ratatui::layout::Position; +use ratatui::{Frame, Viewport}; + +use radicle_tui as tui; + +use tui::event::Key; +use tui::store; +use tui::task::EmptyProcessors; +use tui::ui::widget::{Borders, Window}; +use tui::ui::{Context, Show}; +use tui::{Channel, Exit}; + +#[derive(Clone, Debug)] +struct App { + hello: String, +} + +#[derive(Clone, Debug)] +enum Message { + Quit, +} + +impl store::Update for App { + type Return = (); + + fn update(&mut self, message: Message) -> Option> { + match message { + Message::Quit => Some(Exit { value: None }), + } + } +} + +impl Show for App { + fn show(&self, ctx: &Context, frame: &mut Frame) -> Result<()> { + Window::default().show(ctx, |ui| { + ui.text_view( + frame, + self.hello.clone(), + &mut Position::default(), + Some(Borders::None), + ); + + if ui.has_input(|key| key == Key::Char('q')) { + ui.send_message(Message::Quit); + } + }); + + Ok(()) + } +} + +#[tokio::main] +pub async fn main() -> Result<()> { + let app = App { + hello: "Hello World!".to_string(), + }; + + tui::im( + app, + Viewport::default(), + Channel::default(), + EmptyProcessors::new(), + ) + .await?; + + Ok(()) +}