diff --git a/src/view.rs b/src/view.rs index f97f967..af13629 100644 --- a/src/view.rs +++ b/src/view.rs @@ -13,14 +13,27 @@ impl Taggart { impl Content for Taggart { fn content (&self) -> impl Render { - let size = format!("{}x{}", self.display.w(), self.display.h()); - let sizer = Fill::xy(&self.display); - let titlebar = status_bar( + let w = self.display.w(); + let h = self.display.h(); + let sizer = Fill::xy(&self.display); + let value_bar = |x|Bsp::n(self.value_bar(), x); + let mode_bar = |x|Bsp::n(self.mode_bar(format!("{w}x{h}")), x); + let title_bar = |x|Bsp::s(self.title_bar(), x); + let sized = |x|Bsp::b(sizer, Fill::xy(x)); + value_bar(mode_bar(title_bar(sized(TreeTable(self))))) + } +} + +impl Taggart { + fn title_bar (&self) -> impl Content { + status_bar( Color::Rgb(0, 0, 0), Color::Rgb(192, 192, 192), Align::w(self.columns.header()) - ); - let value_bar = status_bar( + ) + } + fn value_bar (&self) -> impl Content { + status_bar( Color::Rgb(192, 192, 192), Color::Rgb(0, 0, 0), Fill::x( @@ -39,8 +52,10 @@ impl Content for Taggart { ))) ) ) - ); - let mode_bar = status_bar( + ) + } + fn mode_bar (&self, size: String) -> impl Content { + status_bar( Color::Rgb(0, 0, 0), Color::Rgb(192, 192, 192), Fill::x(Bsp::a( @@ -58,19 +73,6 @@ impl Content for Taggart { }))), Fill::x(Align::e(size)), )) - ); - Bsp::n( - value_bar, - Bsp::n( - mode_bar, - Bsp::s( - titlebar, - Bsp::b( - sizer, - Fill::xy(TreeTable(self)) - ) - ) - ) ) } }