use flo_scene::*;
use flo_scene::programs::*;
use futures::prelude::*;
use futures::executor;
pub fn main() {
let scene = Scene::default();
let sample_program = SubProgramId::new();
scene.add_subprogram(sample_program, |input: InputStream<TextInputResult>, context| {
async move {
let mut input = input;
loop {
context.send_message(TextInput::PromptRequestLine(vec![TextOutput::Line("Enter text> ".to_string())], sample_program)).await.unwrap();
match input.next().await {
Some(TextInputResult::Characters(input)) => {
context.send_message(TextOutput::Line(format!("'{}' has {} characters\n", input, input.len()))).await.ok();
}
Some(TextInputResult::Eof) | None => { break; }
}
}
context.send_message(SceneControl::StopScene).await.unwrap();
}
}, 0);
executor::block_on(async {
scene.run_scene().await;
})
}