iced-pancurses 0.1.2

Toy renderer for iced based on pancurses
Documentation
use iced_native::widget::text_input::State;
use iced_native::{Column, Container, Element, Length, Text, TextInput};
use iced_pancurses::{PancursesRenderer, Sandbox};

#[derive(Debug, Clone)]
pub enum MyMessage {
    OnTextInput(String),
}

struct MyState {
    text_input_state: State,
    curr_value: String,
}

impl Sandbox for MyState {
    type Message = MyMessage;

    fn new() -> Self {
        MyState {
            text_input_state: State::new(),
            curr_value: "".into(),
        }
    }

    fn view(&mut self) -> Element<'_, MyMessage, PancursesRenderer> {
        Container::new(
            Column::new()
                .spacing(1)
                .push(Text::new("Hello TextInput!").width(Length::Shrink))
                .push(
                    TextInput::new(
                        &mut self.text_input_state,
                        "Type something",
                        &self.curr_value,
                        MyMessage::OnTextInput,
                    )
                    .width(Length::Units(20)),
                )
                .width(Length::Shrink),
        )
        .width(Length::Fill)
        .height(Length::Fill)
        .center_x()
        .center_y()
        .into()
    }

    fn update(&mut self, messages: Vec<MyMessage>) {
        messages.into_iter().for_each(|m| match m {
            MyMessage::OnTextInput(new) => self.curr_value = new,
        })
    }
}

fn main() {
    MyState::run()
}