diff --git a/tek/src/view.rs b/tek/src/view.rs index 286a0926..51bad67c 100644 --- a/tek/src/view.rs +++ b/tek/src/view.rs @@ -308,28 +308,29 @@ impl Tek { } fn button2 <'a, K, L> (&'a self, key: K, label: L) -> impl Content + 'a where K: Content + 'a, L: Content + 'a { - Tui::bold(true, Bsp::e( - Tui::fg_bg(Tui::g(0), Tui::orange(), Bsp::e(key, Tui::fg(Tui::g(96), "▐"))), + let key = Tui::fg_bg(Tui::g(0), Tui::orange(), + Bsp::e(Tui::fg_bg(Tui::orange(), Reset, "▐"), Bsp::e(key, Tui::fg(Tui::g(96), "▐")))); + Tui::bold(true, Bsp::e(key, When::new(!self.is_editing(), Tui::fg_bg(Tui::g(255), Tui::g(96), label)))) } fn button3 <'a, K, L, V> (&'a self, key: K, label: L, value: V) -> impl Content + 'a where K: Content + 'a, L: Content + 'a, V: Content + 'a { let editing = self.is_editing(); - Tui::bold(true, Bsp::e( - Tui::fg_bg(Tui::g(0), Tui::orange(), Bsp::e(key, Tui::fg(if editing { + let key = Tui::fg_bg(Tui::g(0), Tui::orange(), + Bsp::e(Tui::fg_bg(Tui::orange(), Reset, "▐"), Bsp::e(key, Tui::fg(if editing { Tui::g(128) } else { Tui::g(96) - }, "▐"))), + }, "▐")))); + Tui::bold(true, Bsp::e(key, Bsp::e( + When::new(!editing, Bsp::e( + Tui::fg_bg(Tui::g(255), Tui::g(96), label), + Tui::fg_bg(Tui::g(128), Tui::g(96), "▐"), + )), Bsp::e( - When::new(!editing, Bsp::e( - Tui::fg_bg(Tui::g(255), Tui::g(96), label), - Tui::fg_bg(Tui::g(128), Tui::g(96), "▐"), - )), - Bsp::e( - Tui::fg_bg(Tui::g(224), Tui::g(128), value), - Tui::fg_bg(Tui::g(128), Reset, "▌"), - ) - ))) } + Tui::fg_bg(Tui::g(224), Tui::g(128), value), + Tui::fg_bg(Tui::g(128), Reset, "▌"), + ) + ))) } fn wrap (bg: Color, fg: Color, content: impl Content) -> impl Content { Bsp::e(Tui::fg_bg(bg, Reset, "▐"), Bsp::w(Tui::fg_bg(bg, Reset, "▌"), Tui::fg_bg(fg, bg, content))) } diff --git a/tek/src/view/clip.rs b/tek/src/view/clip.rs index 489394c2..df2b89df 100644 --- a/tek/src/view/clip.rs +++ b/tek/src/view/clip.rs @@ -5,8 +5,8 @@ impl Tek { let data = (self.selected.track().unwrap_or(0), self.tracks().len()); self.fmtd.write().unwrap().trks.update(Some(data), rewrite!(buf, "{}/{}", data.0, data.1)); self.row(w, 1, Align::w(Bsp::e( - self.button3(" t", "track", self.fmtd.read().unwrap().trks.view.clone()), - self.button2(" T", "add track"), + self.button3("t", "track", self.fmtd.read().unwrap().trks.view.clone()), + self.button2("T", "add track"), )), self.per_track(|t, track|{ let active = self.selected().track() == Some(t+1); let name = &track.name; @@ -87,7 +87,7 @@ impl Tek { pub fn view_scene_add (&self) -> impl Content + use<'_> { let data = (self.selected().scene().unwrap_or(0), self.scenes().len()); self.fmtd.write().unwrap().scns.update(Some(data), rewrite!(buf, "({}/{})", data.0, data.1)); - self.button3(" S", "add scene", self.fmtd.read().unwrap().scns.view.clone()) + self.button3("S", "add scene", self.fmtd.read().unwrap().scns.view.clone()) } fn colors ( this: &ItemPalette, diff --git a/tek/src/view/input.rs b/tek/src/view/input.rs index 46c68148..217e4313 100644 --- a/tek/src/view/input.rs +++ b/tek/src/view/input.rs @@ -3,35 +3,34 @@ impl Tek { pub fn view_inputs (&self) -> impl Content + use<'_> { let w = (self.size.w() as u16).saturating_sub(2 * self.w_sidebar()); let fg = Tui::g(224); + let routes = self.row_top(w, self.h_inputs() - 1, + self.io_ports(fg, Tui::g(32), ||self.inputs_sizes()), + self.per_track_top(move|t, track|self.io_connections( + track.color.dark.rgb, + track.color.darker.rgb, + ||self.inputs_sizes() + ))); + let ports = self.row_top(w, 1, + Fill::x(Align::w(Bsp::e( + self.button3("i", "midi ins", format!("{}", self.midi_ins.len())), + self.button2("I", "add midi in"), + ))), + self.per_track_top(move|t, track|{ + let rec = track.player.recording; + let mon = track.player.monitoring; + let rec = if rec { White } else { track.color.darkest.rgb }; + let mon = if mon { White } else { track.color.darkest.rgb }; + let bg = if self.selected().track() == Some(t+1) { + track.color.light.rgb + } else { + track.color.base.rgb + }; + let bg2 = if t > 0 { self.tracks()[t - 1].color.base.rgb } else { Reset }; + Self::wrap(bg, fg, Tui::bold(true, Fill::x(Bsp::e( + Tui::fg_bg(rec, bg, "Rec "), + Tui::fg_bg(mon, bg, "Mon ")))))})); Bsp::s( - Bsp::s( - self.row_top(w, 1, - Fill::x(Align::w(Bsp::e( - self.button3(" i", "midi ins", format!("{}", self.midi_ins.len())), - self.button2(" I", "add midi in"), - ))), - self.per_track_top(move|t, track|{ - let rec = track.player.recording; - let mon = track.player.monitoring; - let rec = if rec { White } else { track.color.darkest.rgb }; - let mon = if mon { White } else { track.color.darkest.rgb }; - let bg = if self.selected().track() == Some(t+1) { - track.color.light.rgb - } else { - track.color.base.rgb - }; - let bg2 = if t > 0 { self.tracks()[t - 1].color.base.rgb } else { Reset }; - Self::wrap(bg, fg, Tui::bold(true, Fill::x(Bsp::e( - Tui::fg_bg(rec, bg, "Rec "), - Tui::fg_bg(mon, bg, "Mon ")))))})), - self.row_top(w, self.h_inputs() - 1, - self.io_ports(fg, Tui::g(32), ||self.inputs_sizes()), - self.per_track_top(move|t, track|self.io_connections( - track.color.dark.rgb, - track.color.darker.rgb, - ||self.inputs_sizes() - ))), - ), + Bsp::s(routes, ports), self.row_top(w, 2, Bsp::s(Align::e("Input:"), Align::e("Into:")), self.per_track_top(|_, _|Tui::bg(Reset, Align::c(Bsp::s( diff --git a/tek/src/view/output.rs b/tek/src/view/output.rs index 9e1e8a4b..bc3157eb 100644 --- a/tek/src/view/output.rs +++ b/tek/src/view/output.rs @@ -10,8 +10,8 @@ impl Tek { Align::c(Bsp::s(" ------ ", OctaveVertical::default(),))))); let ports = self.row_top(w, 1, Fill::x(Align::w(Bsp::e( - self.button3(" o", "midi outs", format!("{}", self.midi_outs.len())), - self.button2(" O", "add midi out"), + self.button3("o", "midi outs", format!("{}", self.midi_outs.len())), + self.button2("O", "add midi out"), ))), self.per_track_top(move|t, track|{ let mute = false; diff --git a/tek/src/view_arranger.edn b/tek/src/view_arranger.edn index fc8d815f..d9008a86 100644 --- a/tek/src/view_arranger.edn +++ b/tek/src/view_arranger.edn @@ -2,7 +2,7 @@ (fixed/y 2 :toolbar) (fill/xy (align/c (bsp/a (fill/xy (align/e :pool)) (bsp/a - (fill/xy (align/n (bsp/s :tracks :inputs))) + (fill/xy (align/n (bsp/s :inputs :tracks))) (bsp/a (fill/xy (align/s :outputs)) (bsp/s :scenes :scene-add))))))) diff --git a/tui/src/tui_output.rs b/tui/src/tui_output.rs index 57cd5274..1addc18b 100644 --- a/tui/src/tui_output.rs +++ b/tui/src/tui_output.rs @@ -51,7 +51,7 @@ impl TuiOut { buffer = engine.write().unwrap().flip(output.buffer, size); } let t1 = engine.read().unwrap().perf.get_t1(t0).unwrap(); - buffer.set_string(0, 0, &format!("{:>3}.{:>3}ms", t1.as_millis(), t1.as_micros() % 1000), Style::default()); + //buffer.set_string(0, 0, &format!("{:>3}.{:>3}ms", t1.as_millis(), t1.as_micros() % 1000), Style::default()); std::thread::sleep(timer); }) }