From 4ff4ea81735548f808302c61b619ad7804e1eec0 Mon Sep 17 00:00:00 2001 From: unspeaker Date: Thu, 15 May 2025 23:17:19 +0300 Subject: [PATCH] wip: field --- tui/src/tui_content/tui_field.rs | 84 ++++++++++++++++++++++++++++---- 1 file changed, 74 insertions(+), 10 deletions(-) diff --git a/tui/src/tui_content/tui_field.rs b/tui/src/tui_content/tui_field.rs index fa3f123..3823182 100644 --- a/tui/src/tui_content/tui_field.rs +++ b/tui/src/tui_content/tui_field.rs @@ -5,10 +5,10 @@ impl, U: Content> Content for FieldH { fn content (&self) -> impl Render { let Self(ItemTheme { darkest, dark, lighter, lightest, .. }, title, value) = self; row!( - Tui::fg_bg(dark.rgb, darkest.rgb, "▐"), - Tui::fg_bg(lighter.rgb, dark.rgb, Tui::bold(true, title)), - Tui::fg_bg(dark.rgb, darkest.rgb, "▌"), - Tui::fg_bg(lightest.rgb, darkest.rgb, value), + Tui::fg_bg(dark.rgb, darkest.rgb, "▐"), + Tui::fg_bg(lightest.rgb, dark.rgb, title), + Tui::fg_bg(dark.rgb, darkest.rgb, "▌"), + Tui::fg_bg(lightest.rgb, darkest.rgb, Tui::bold(true, value)), ) } } @@ -17,13 +17,77 @@ pub struct FieldV(pub ItemTheme, pub T, pub U); impl, U: Content> Content for FieldV { fn content (&self) -> impl Render { let Self(ItemTheme { darkest, dark, lighter, lightest, .. }, title, value) = self; - let sep1 = Tui::bg(darkest.rgb, Tui::fg(dark.rgb, "▐")); - let sep2 = Tui::bg(darkest.rgb, Tui::fg(dark.rgb, "▌")); - let title = Tui::bg(dark.rgb, Tui::fg(lighter.rgb, Tui::bold(true, title))); - let value = Tui::bg(darkest.rgb, Tui::fg(lightest.rgb, value)); Bsp::n( - Align::w(value), - Fill::x(Align::w(row!(sep1, title, sep2))) + Align::w(Tui::bg(darkest.rgb, Tui::fg(lightest.rgb, Tui::bold(true, value)))), + Fill::x(Align::w(row!( + Tui::bg(darkest.rgb, Tui::fg(dark.rgb, "▐")), + Tui::bg(dark.rgb, Tui::fg(lightest.rgb, title)), + Tui::bg(darkest.rgb, Tui::fg(dark.rgb, "▌")), + ))) ) } } + +// TODO: +pub struct Field { + pub direction: Direction, + pub label: Option, + pub label_fg: Option, + pub label_bg: Option, + pub label_align: Option, + pub value: Option, + pub value_fg: Option, + pub value_bg: Option, + pub value_align: Option, +} +impl, U: Content> Content for Field { + fn content (&self) -> impl Render { + "TODO" + } +} + +impl Field { + pub fn new (direction: Direction) -> Field<(), ()> { + Field { + direction, + label: None, + label_fg: None, + label_bg: None, + label_align: None, + value: None, + value_fg: None, + value_bg: None, + value_align: None, + } + } + fn label ( + self, + label: Option, + align: Option, + fg: Option, + bg: Option + ) -> Field { + Field { + label, + label_fg: fg, + label_bg: bg, + label_align: align, + ..self + } + } + fn value ( + self, + value: Option, + align: Option, + fg: Option, + bg: Option + ) -> Field { + Field { + value, + value_fg: fg, + value_bg: bg, + value_align: align, + ..self + } + } +}