mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 19:56:42 +01:00
add track zero jump; highlight in/out cells like title cell
This commit is contained in:
parent
41d31e4db6
commit
9462a3f2a4
3 changed files with 39 additions and 22 deletions
|
|
@ -4,6 +4,8 @@
|
||||||
(@d select :track-next :scene)
|
(@d select :track-next :scene)
|
||||||
(@down select :track :scene-next)
|
(@down select :track :scene-next)
|
||||||
(@s select :track :scene-next)
|
(@s select :track :scene-next)
|
||||||
|
(@up select :track :scene-last)
|
||||||
|
(@w select :track :scene-last)
|
||||||
|
|
||||||
(@q track launch :track)
|
(@q track launch :track)
|
||||||
(@c track color :track)
|
(@c track color :track)
|
||||||
|
|
|
||||||
|
|
@ -59,9 +59,11 @@ provide_bool!(bool: |self: Tek| {});
|
||||||
provide_num!(isize: |self: Tek| {});
|
provide_num!(isize: |self: Tek| {});
|
||||||
provide_num!(usize: |self: Tek| {
|
provide_num!(usize: |self: Tek| {
|
||||||
":scene" => self.selected.scene().unwrap_or(0),
|
":scene" => self.selected.scene().unwrap_or(0),
|
||||||
|
":scene-last" => self.scenes.len(),
|
||||||
":scene-next" => (self.selected.scene().unwrap_or(0) + 1).min(self.scenes.len()),
|
":scene-next" => (self.selected.scene().unwrap_or(0) + 1).min(self.scenes.len()),
|
||||||
":scene-prev" => self.selected.scene().unwrap_or(0).saturating_sub(1),
|
":scene-prev" => self.selected.scene().unwrap_or(0).saturating_sub(1),
|
||||||
":track" => self.selected.track().unwrap_or(0),
|
":track" => self.selected.track().unwrap_or(0),
|
||||||
|
":track-last" => self.tracks.len(),
|
||||||
":track-next" => (self.selected.track().unwrap_or(0) + 1).min(self.tracks.len()),
|
":track-next" => (self.selected.track().unwrap_or(0) + 1).min(self.tracks.len()),
|
||||||
":track-prev" => self.selected.track().unwrap_or(0).saturating_sub(1) });
|
":track-prev" => self.selected.track().unwrap_or(0).saturating_sub(1) });
|
||||||
impl Tek {
|
impl Tek {
|
||||||
|
|
|
||||||
|
|
@ -217,13 +217,20 @@ impl Tek {
|
||||||
)));
|
)));
|
||||||
let rec = false;
|
let rec = false;
|
||||||
let mon = false;
|
let mon = false;
|
||||||
let cells: ThunkBox<_> = per_track!(self.size.w();|self, track, _t|Bsp::s(Tui::bold(true, row!(
|
let cells: ThunkBox<_> = per_track!(self.size.w();|self, track, t|{
|
||||||
Tui::fg_bg(if rec { White } else { track.color.light.rgb }, track.color.dark.rgb, "Recrd"),
|
let bg = if self.selected().track() == Some(t+1) { track.color.light.rgb } else { track.color.base.rgb };
|
||||||
Tui::fg_bg(if mon { White } else { track.color.light.rgb }, track.color.dark.rgb, "Monit"),
|
let bg2 = if t > 0 { self.tracks()[t - 1].color.base.rgb } else { Reset };
|
||||||
)), row!(
|
Bsp::s(
|
||||||
Tui::fg_bg(if rec { White } else { track.color.light.rgb }, track.color.darker.rgb, "R▞▞▞▞"),
|
Self::wrap(bg, bg2, fg, Tui::bold(true, row!(
|
||||||
Tui::fg_bg(if mon { White } else { track.color.light.rgb }, track.color.darker.rgb, "M▞▞▞▞"),
|
Tui::fg_bg(if rec { White } else { track.color.darkest.rgb }, bg, "Recrd"),
|
||||||
)));
|
Tui::fg_bg(if mon { White } else { track.color.darkest.rgb }, bg, "Monit"),
|
||||||
|
))),
|
||||||
|
Self::wrap(bg, bg2, fg, row!(
|
||||||
|
Tui::fg_bg(if rec { White } else { track.color.darkest.rgb }, bg, "P▞▞▞▞"),
|
||||||
|
Tui::fg_bg(if mon { White } else { track.color.darkest.rgb }, bg, "S▞▞▞▞"),
|
||||||
|
))
|
||||||
|
)
|
||||||
|
});
|
||||||
self.view_row(w, h as u16, header, cells)
|
self.view_row(w, h as u16, header, cells)
|
||||||
}
|
}
|
||||||
fn view_outputs (&self) -> impl Content<TuiOut> + use<'_> {
|
fn view_outputs (&self) -> impl Content<TuiOut> + use<'_> {
|
||||||
|
|
@ -242,17 +249,27 @@ impl Tek {
|
||||||
Tui::fg_bg(fg, bg, connect.info()))))))));
|
Tui::fg_bg(fg, bg, connect.info()))))))));
|
||||||
let mute = false;
|
let mute = false;
|
||||||
let solo = false;
|
let solo = false;
|
||||||
let cells: ThunkBox<_> = per_track!(self.size.w();|self, track, _t|Bsp::s(Tui::bold(true, row!(
|
let cells: ThunkBox<_> = per_track!(self.size.w();|self, track, t|{
|
||||||
Tui::fg_bg(if mute { White } else { track.color.light.rgb }, track.color.dark.rgb, "Play "),
|
let bg = if self.selected().track() == Some(t+1) { track.color.light.rgb } else { track.color.base.rgb };
|
||||||
Tui::fg_bg(if solo { White } else { track.color.light.rgb }, track.color.dark.rgb, "Solo "),
|
let bg2 = if t > 0 { self.tracks()[t - 1].color.base.rgb } else { Reset };
|
||||||
)), row!(
|
Bsp::s(
|
||||||
Tui::fg_bg(if mute { White } else { track.color.light.rgb }, track.color.darker.rgb, "P▞▞▞▞"),
|
Self::wrap(bg, bg2, fg, Tui::bold(true, row!(
|
||||||
Tui::fg_bg(if solo { White } else { track.color.light.rgb }, track.color.darker.rgb, "S▞▞▞▞"),
|
Tui::fg_bg(if mute { White } else { track.color.darkest.rgb }, bg, "Play "),
|
||||||
)));
|
Tui::fg_bg(if solo { White } else { track.color.darkest.rgb }, bg, "Solo "),
|
||||||
|
))),
|
||||||
|
Self::wrap(bg, bg2, fg, row!(
|
||||||
|
Tui::fg_bg(if mute { White } else { track.color.darkest.rgb }, bg, "P▞▞▞▞"),
|
||||||
|
Tui::fg_bg(if solo { White } else { track.color.darkest.rgb }, bg, "S▞▞▞▞"),
|
||||||
|
))
|
||||||
|
)
|
||||||
|
});
|
||||||
self.view_row(self.w(), h as u16, header, cells)
|
self.view_row(self.w(), h as u16, header, cells)
|
||||||
}
|
}
|
||||||
|
fn wrap (bg: Color, bg2: Color, fg: Color, content: impl Content<TuiOut>) -> impl Content<TuiOut> {
|
||||||
|
Bsp::e(Tui::fg_bg(bg, bg2, "▐"), Bsp::w(Tui::fg_bg(bg, Reset, "▌"), Tui::fg_bg(fg, bg, content)))
|
||||||
|
}
|
||||||
fn view_tracks (&self) -> impl Content<TuiOut> + use<'_> {
|
fn view_tracks (&self) -> impl Content<TuiOut> + use<'_> {
|
||||||
let h = 1;
|
let height = 1;
|
||||||
let header: ThunkBox<_> =
|
let header: ThunkBox<_> =
|
||||||
(move||Tui::bg(Tui::g(32), Fill::x(Align::w(self.view_track_add()))).boxed()).into();
|
(move||Tui::bg(Tui::g(32), Fill::x(Align::w(self.view_track_add()))).boxed()).into();
|
||||||
let content: ThunkBox<_> = per_track!(self.size.w();|self, track, t|{
|
let content: ThunkBox<_> = per_track!(self.size.w();|self, track, t|{
|
||||||
|
|
@ -262,14 +279,10 @@ impl Tek {
|
||||||
let bg = if active { track.color.light.rgb } else { track.color.base.rgb };
|
let bg = if active { track.color.light.rgb } else { track.color.base.rgb };
|
||||||
let bg2 = if t > 0 { self.tracks()[t - 1].color.base.rgb } else { Reset };
|
let bg2 = if t > 0 { self.tracks()[t - 1].color.base.rgb } else { Reset };
|
||||||
let bfg = if active { Rgb(255,255,255) } else { Rgb(0,0,0) };
|
let bfg = if active { Rgb(255,255,255) } else { Rgb(0,0,0) };
|
||||||
Outer(active, Style::default().fg(bfg).bg(bg)).enclose(Bsp::e(
|
Outer(active, Style::default().fg(bfg).bg(bg))
|
||||||
Tui::fg_bg(bg, bg2, "▐"),
|
.enclose(Self::wrap(bg, bg2, fg, Tui::bold(true, Fill::x(Align::nw(name)))))
|
||||||
Bsp::w(
|
|
||||||
Tui::fg_bg(bg, Reset, "▌"),
|
|
||||||
Tui::fg_bg(fg, bg, Tui::bold(true, Fill::x(Align::nw(name)))),
|
|
||||||
)))
|
|
||||||
});
|
});
|
||||||
self.view_row(self.w(), 1, header, content)
|
self.view_row(self.w(), height, header, content)
|
||||||
}
|
}
|
||||||
fn view_track_add (&self) -> impl Content<TuiOut> + use<'_> {
|
fn view_track_add (&self) -> impl Content<TuiOut> + use<'_> {
|
||||||
let data = (self.selected.track().unwrap_or(0), self.tracks().len());
|
let data = (self.selected.track().unwrap_or(0), self.tracks().len());
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue