mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-07 12:16:42 +01:00
align track/scene selectors
This commit is contained in:
parent
2ad5b27db6
commit
5bf1bad7be
1 changed files with 23 additions and 16 deletions
|
|
@ -510,10 +510,11 @@ impl Tek {
|
||||||
} else {
|
} else {
|
||||||
("⏹ ".to_string(), TuiTheme::g(64), TuiTheme::g(32))
|
("⏹ ".to_string(), TuiTheme::g(64), TuiTheme::g(32))
|
||||||
};
|
};
|
||||||
let selected = selected_scene == Some(s) && selected_track == Some(t);
|
let same_track = selected_track == Some(t+1);
|
||||||
|
let selected = same_track && Some(s+1) == selected_scene;
|
||||||
|
let neighbor = same_track && Some(s) == selected_scene;
|
||||||
let active = editing && selected;
|
let active = editing && selected;
|
||||||
let label = move||Tui::fg(fg, Push::x(1, Tui::bold(true, name.to_string())));
|
let label = move||Tui::fg(fg, Push::x(1, Tui::bold(true, name.to_string())));
|
||||||
let neighbor = selected_track == Some(t) && selected_scene.map(|s|s+1) == Some(s);
|
|
||||||
map_south(y1 as u16, h, Push::y(1, Fixed::y(h, Either::new(
|
map_south(y1 as u16, h, Push::y(1, Fixed::y(h, Either::new(
|
||||||
active,
|
active,
|
||||||
Thunk::new(||Bsp::a(
|
Thunk::new(||Bsp::a(
|
||||||
|
|
@ -559,13 +560,6 @@ impl Tek {
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
fn button (&self, key: String, label: String) -> impl Content<TuiOut> {
|
|
||||||
let compact = !self.is_editing();
|
|
||||||
Tui::bold(true, Bsp::e(
|
|
||||||
Margin::x(1, Tui::fg_bg(TuiTheme::g(0), TuiTheme::orange(), key)),
|
|
||||||
When::new(compact, Margin::x(1, Tui::fg_bg(TuiTheme::g(255), TuiTheme::g(96), label))),
|
|
||||||
))
|
|
||||||
}
|
|
||||||
fn input_header <'a> (&'a self) -> BoxThunk<'a, TuiOut> {
|
fn input_header <'a> (&'a self) -> BoxThunk<'a, TuiOut> {
|
||||||
let fg = TuiTheme::g(224);
|
let fg = TuiTheme::g(224);
|
||||||
let bg = TuiTheme::g(64);
|
let bg = TuiTheme::g(64);
|
||||||
|
|
@ -585,11 +579,24 @@ impl Tek {
|
||||||
))).boxed()).into()
|
))).boxed()).into()
|
||||||
}
|
}
|
||||||
fn track_header <'a> (&'a self) -> BoxThunk<'a, TuiOut> {
|
fn track_header <'a> (&'a self) -> BoxThunk<'a, TuiOut> {
|
||||||
(||Tui::bg(TuiTheme::g(32), Bsp::s(
|
let add_scene = ||self.button(" C-a ".to_string(), format!(" add scene ({}/{})",
|
||||||
Fill::x(Align::w(self.button(" C-a ".to_string(), format!(" add scene ({})", self.scenes().len())))),
|
self.selected.scene().unwrap_or(0),
|
||||||
Fill::x(Align::w(self.button(" C-t ".to_string(), format!(" add track ({})", self.tracks().len())))),
|
self.scenes().len()));
|
||||||
|
let add_track = ||self.button(" C-t ".to_string(), format!(" add track ({}/{})",
|
||||||
|
self.selected.track().unwrap_or(0),
|
||||||
|
self.tracks().len()));
|
||||||
|
(move||Tui::bg(TuiTheme::g(32), Bsp::s(
|
||||||
|
Fill::x(Align::w(add_scene())),
|
||||||
|
Fill::x(Align::w(add_track())),
|
||||||
)).boxed()).into()
|
)).boxed()).into()
|
||||||
}
|
}
|
||||||
|
fn button (&self, key: String, label: String) -> impl Content<TuiOut> {
|
||||||
|
let compact = !self.is_editing();
|
||||||
|
Tui::bold(true, Bsp::e(
|
||||||
|
Margin::x(1, Tui::fg_bg(TuiTheme::g(0), TuiTheme::orange(), key)),
|
||||||
|
When::new(compact, Margin::x(1, Tui::fg_bg(TuiTheme::g(255), TuiTheme::g(96), label))),
|
||||||
|
))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
const KEYS_APP: &str = include_str!("keys.edn");
|
const KEYS_APP: &str = include_str!("keys.edn");
|
||||||
const KEYS_CLIP: &str = include_str!("keys_clip.edn");
|
const KEYS_CLIP: &str = include_str!("keys_clip.edn");
|
||||||
|
|
@ -901,7 +908,7 @@ trait HasTracks: HasSelection + HasClock + HasJack + HasEditor + Send + Sync {
|
||||||
let color = track.color;
|
let color = track.color;
|
||||||
let fg = color.lightest.rgb;
|
let fg = color.lightest.rgb;
|
||||||
let bg = color.base.rgb;
|
let bg = color.base.rgb;
|
||||||
let active = self.selected().track() == Some(i);
|
let active = self.selected().track() == Some(i + 1);
|
||||||
let bfg = if active { Color::Rgb(255,255,255) } else { Color::Rgb(0,0,0) };
|
let bfg = if active { Color::Rgb(255,255,255) } else { Color::Rgb(0,0,0) };
|
||||||
let border = Style::default().fg(bfg).bg(bg);
|
let border = Style::default().fg(bfg).bg(bg);
|
||||||
Tui::bg(bg, map_east(x1 as u16, (x2 - x1) as u16,
|
Tui::bg(bg, map_east(x1 as u16, (x2 - x1) as u16,
|
||||||
|
|
@ -1069,7 +1076,7 @@ trait HasScenes: HasSelection + HasEditor + Send + Sync {
|
||||||
let h = (1 + y2 - y1) as u16;
|
let h = (1 + y2 - y1) as u16;
|
||||||
let name = format!("🭬{}", &scene.name);
|
let name = format!("🭬{}", &scene.name);
|
||||||
let color = scene.color;
|
let color = scene.color;
|
||||||
let active = selected == Some(i);
|
let active = selected == Some(i + 1);
|
||||||
let mid = if active { color.light } else { color.base };
|
let mid = if active { color.light } else { color.base };
|
||||||
let top = Some(last_color.read().unwrap().base.rgb);
|
let top = Some(last_color.read().unwrap().base.rgb);
|
||||||
let cell = phat_sel_3(
|
let cell = phat_sel_3(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue