From 0bd8df1e57c590f0dedb89b9e2700716c504f07d Mon Sep 17 00:00:00 2001 From: unspeaker Date: Tue, 10 Dec 2024 15:55:25 +0100 Subject: [PATCH] naked mode --- crates/tek/src/tui.rs | 1 + crates/tek/src/tui/app_transport.rs | 38 +++++++------- crates/tek/src/tui/engine_style.rs | 29 ----------- crates/tek/src/tui/engine_theme.rs | 33 ++++++++++++ crates/tek/src/tui/phrase_list.rs | 80 +++++++++++++++-------------- crates/tek/src/tui/phrase_select.rs | 13 +++-- 6 files changed, 101 insertions(+), 93 deletions(-) create mode 100644 crates/tek/src/tui/engine_theme.rs diff --git a/crates/tek/src/tui.rs b/crates/tek/src/tui.rs index 65a68fdd..645073db 100644 --- a/crates/tek/src/tui.rs +++ b/crates/tek/src/tui.rs @@ -3,6 +3,7 @@ use crate::*; mod engine_focus; pub(crate) use engine_focus::*; mod engine_input; pub(crate) use engine_input::*; mod engine_style; pub(crate) use engine_style::*; +mod engine_theme; pub(crate) use engine_theme::*; mod engine_output; pub(crate) use engine_output::*; //////////////////////////////////////////////////////// diff --git a/crates/tek/src/tui/app_transport.rs b/crates/tek/src/tui/app_transport.rs index 99ccfa40..cc6b2978 100644 --- a/crates/tek/src/tui/app_transport.rs +++ b/crates/tek/src/tui/app_transport.rs @@ -116,35 +116,33 @@ render!(|self: TransportField<'a>|{ }); render!(|self: TransportView|{ - let bg = TuiTheme::border_bg(); - let border_style = Style::default().bg(bg).fg(TuiTheme::border_fg(false)); + let border_style = Style::default() + .bg(TuiTheme::bg()) + .fg(TuiTheme::border_fg(true)); lay!(move|add|{ if self.focused { add(&Tui::fill_x(Lozenge(border_style)))?; } - add(&Tui::outset_x(1, row!([ + add(&Tui::outset_x(2, row!([ + col!(|add|{ + if self.started { + add(&col!([Tui::fg(Color::Rgb(0, 255, 0), "▶ PLAYING "), ""])) + } else { + add(&col!(["", Tui::fg(Color::Rgb(255, 128, 0), "⏹ STOPPED ")])) + } + }), + " ", row!([ - TransportField("SR ", self.sr.as_str()), + TransportField("Beat", "00X+0/0B+00/00P"), " ", TransportField("BPM ", self.bpm.as_str()), " ", - TransportField("PPQ ", self.ppq.as_str()), + TransportField("Second", self.current_second.as_str()), + " ", + TransportField("SR ", self.sr.as_str()), + " ", + TransportField("Sample", self.current_sample.as_str()), ]), - lay!(|add|{ - if self.started { - add(&row!([ - col!(["", Tui::fg(Color::Rgb(0, 255, 0), "▶ PLAYING ")]), - " ", - TransportField("Beat", "00X+0/0B+00/00P"), - " ", - TransportField("Second", self.current_second.as_str()), - " ", - TransportField("Sample", self.current_sample.as_str()), - ])) - } else { - add(&col!([Tui::fg(Color::Rgb(255, 128, 0), "⏹ STOPPED "), ""])) - } - }), ]))) }) }); diff --git a/crates/tek/src/tui/engine_style.rs b/crates/tek/src/tui/engine_style.rs index 007509ff..8c7eb0ca 100644 --- a/crates/tek/src/tui/engine_style.rs +++ b/crates/tek/src/tui/engine_style.rs @@ -83,35 +83,6 @@ impl Render for Border { } } -pub struct TuiTheme; - -impl TuiTheme { - pub fn border_bg () -> Color { - Color::Rgb(40, 50, 30) - } - pub fn border_fg (focused: bool) -> Color { - if focused { Color::Rgb(100, 110, 40) } else { Color::Rgb(70, 80, 50) } - } - pub fn title_fg (focused: bool) -> Color { - if focused { Color::Rgb(150, 160, 90) } else { Color::Rgb(120, 130, 100) } - } - pub fn separator_fg (_: bool) -> Color { - Color::Rgb(0, 0, 0) - } - pub const fn hotkey_fg () -> Color { - Color::Rgb(255, 255, 0) - } - pub fn mode_bg () -> Color { - Color::Rgb(150, 160, 90) - } - pub fn mode_fg () -> Color { - Color::Rgb(255, 255, 255) - } - pub fn status_bar_bg () -> Color { - Color::Rgb(28, 35, 25) - } -} - pub struct Styled>(pub Option