diff --git a/crates/app/src/view.rs b/crates/app/src/view.rs index a358f023..5e4f3d3d 100644 --- a/crates/app/src/view.rs +++ b/crates/app/src/view.rs @@ -2,6 +2,27 @@ use crate::*; pub(crate) use std::fmt::Write; pub(crate) use ::tengri::tui::ratatui::prelude::Position; +impl App { + pub fn view (&self) -> impl Content + '_ { + let view: Perhaps> = + FromDsl::take_from(self, &mut self.config.view.clone()); + self.size.of(lay! { + When(matches!(&view, Ok(None)), Fill::y(Bsp::s( + Fixed::y(1, "no view"), + Fill::y(format!("{:?}", &self.config.view)), + ))), + When(matches!(&view, Err(_)), Fill::y(Bsp::s( + Fixed::y(1, "view error"), + Fill::y(Bsp::s( + view.as_ref().err().map(|e|format!("{e}")), + format!("{:?}", &self.config.view), + )) + ))), + When(matches!(&view, Ok(Some(_))), Fill::y(view)), + }) + } +} + #[tengri_proc::view(TuiOut)] impl App { pub fn view_nil (&self) -> impl Content + use<'_> { diff --git a/deps/tengri b/deps/tengri index 90f5699f..f08593f0 160000 --- a/deps/tengri +++ b/deps/tengri @@ -1 +1 @@ -Subproject commit 90f5699fff48d2e8e0a24c36741a7d4ff771385d +Subproject commit f08593f0f8c3dc03a734d922d2442848a4205ad6