mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-07 12:16:42 +01:00
fix header sizes; bold phrase name in list
This commit is contained in:
parent
0403d5b54f
commit
6de22691f2
2 changed files with 25 additions and 24 deletions
|
|
@ -118,19 +118,19 @@ impl<'a> Content for VerticalArranger<'a, Tui> {
|
||||||
type Engine = Tui;
|
type Engine = Tui;
|
||||||
fn content (&self) -> impl Widget<Engine = Tui> {
|
fn content (&self) -> impl Widget<Engine = Tui> {
|
||||||
let Self(state, factor) = self;
|
let Self(state, factor) = self;
|
||||||
let cols = state.track_widths();
|
let cols = state.track_widths();
|
||||||
let rows = Scene::ppqs(state.scenes.as_slice(), *factor);
|
let rows = Scene::ppqs(state.scenes.as_slice(), *factor);
|
||||||
let tracks = state.tracks.as_ref() as &[ArrangementTrack<Tui>];
|
let tracks = state.tracks.as_ref() as &[ArrangementTrack<Tui>];
|
||||||
let scenes = state.scenes.as_ref();
|
let scenes = state.scenes.as_ref();
|
||||||
let offset = 3 + Scene::longest_name(scenes) as u16; // x of 1st track
|
let bg = state.color;
|
||||||
let bg = state.color;
|
let clip_bg = Color::Rgb(40, 50, 30);
|
||||||
let clip_bg = Color::Rgb(40, 50, 30);
|
let border_bg = Color::Rgb(40, 50, 30);
|
||||||
let border_bg = Color::Rgb(40, 50, 30);
|
let border_hi = Color::Rgb(100, 110, 40);
|
||||||
let border_hi = Color::Rgb(100, 110, 40);
|
let border_lo = Color::Rgb(70, 80, 50);
|
||||||
let border_lo = Color::Rgb(70, 80, 50);
|
let border_fg = if self.0.focused { border_hi } else { border_lo };
|
||||||
let border_fg = if self.0.focused { border_hi } else { border_lo };
|
let border = Lozenge(Style::default().bg(border_bg).fg(border_fg));
|
||||||
let border = Lozenge(Style::default().bg(border_bg).fg(border_fg));
|
let track_title_h = 3u16;
|
||||||
let title_h = 3u16;
|
let scene_title_w = 3 + Scene::longest_name(scenes) as u16; // x of 1st track
|
||||||
Layers::new(move |add|{
|
Layers::new(move |add|{
|
||||||
let rows: &[(usize, usize)] = rows.as_ref();
|
let rows: &[(usize, usize)] = rows.as_ref();
|
||||||
let cols: &[(usize, usize)] = cols.as_ref();
|
let cols: &[(usize, usize)] = cols.as_ref();
|
||||||
|
|
@ -140,7 +140,7 @@ impl<'a> Content for VerticalArranger<'a, Tui> {
|
||||||
let area = to.area();
|
let area = to.area();
|
||||||
let style = Some(Style::default().fg(COLOR_SEPARATOR));
|
let style = Some(Style::default().fg(COLOR_SEPARATOR));
|
||||||
for x in cols.iter().map(|col|col.1) {
|
for x in cols.iter().map(|col|col.1) {
|
||||||
let x = offset + area.x() + x as u16 - 1;
|
let x = scene_title_w + area.x() + x as u16;
|
||||||
for y in area.y()..area.y2() { to.blit(&"▎", x, y, style); }
|
for y in area.y()..area.y2() { to.blit(&"▎", x, y, style); }
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
@ -180,16 +180,16 @@ impl<'a> Content for VerticalArranger<'a, Tui> {
|
||||||
.map(|(t, _)|format!("▎{:>}", clock.format_beats(t.load(Ordering::Relaxed))))
|
.map(|(t, _)|format!("▎{:>}", clock.format_beats(t.load(Ordering::Relaxed))))
|
||||||
.unwrap_or(String::from("▎"));
|
.unwrap_or(String::from("▎"));
|
||||||
col!(name, elapsed, until_next)
|
col!(name, elapsed, until_next)
|
||||||
.min_xy(w as u16, title_h)
|
.min_xy(w as u16, track_title_h)
|
||||||
.bg(track.color)
|
.bg(track.color)
|
||||||
.push_x(offset - 1)
|
.push_x(scene_title_w)
|
||||||
});
|
});
|
||||||
|
|
||||||
// scene titles
|
// scene titles
|
||||||
let scene_name = |scene, playing: bool, height|row!(
|
let scene_name = |scene, playing: bool, height|row!(
|
||||||
if playing { "▶ " } else { " " },
|
if playing { "▶ " } else { " " },
|
||||||
TuiStyle::bold((scene as &Scene).name.read().unwrap().as_str(), true),
|
TuiStyle::bold((scene as &Scene).name.read().unwrap().as_str(), true),
|
||||||
).fixed_xy(offset.saturating_sub(1), height);
|
).fixed_xy(scene_title_w, height);
|
||||||
|
|
||||||
// scene clips
|
// scene clips
|
||||||
let scene_clip = |scene, track: usize, w: u16, h: u16|Layers::new(move |add|{
|
let scene_clip = |scene, track: usize, w: u16, h: u16|Layers::new(move |add|{
|
||||||
|
|
@ -230,20 +230,20 @@ impl<'a> Content for VerticalArranger<'a, Tui> {
|
||||||
let focused = state.focused;
|
let focused = state.focused;
|
||||||
let selected = state.selected;
|
let selected = state.selected;
|
||||||
let get_track_area = |t: usize| [
|
let get_track_area = |t: usize| [
|
||||||
offset + area.x() + cols[t].1 as u16 - 1,
|
scene_title_w + area.x() + cols[t].1 as u16,
|
||||||
area.y(),
|
area.y(),
|
||||||
cols[t].0 as u16,
|
cols[t].0 as u16,
|
||||||
area.h(),
|
area.h(),
|
||||||
];
|
];
|
||||||
let get_scene_area = |s: usize| [
|
let get_scene_area = |s: usize| [
|
||||||
area.x(),
|
area.x(),
|
||||||
title_h + area.y() + (rows[s].1 / PPQ) as u16,
|
track_title_h + area.y() + (rows[s].1 / PPQ) as u16,
|
||||||
area.w(),
|
area.w(),
|
||||||
(rows[s].0 / PPQ) as u16
|
(rows[s].0 / PPQ) as u16
|
||||||
];
|
];
|
||||||
let get_clip_area = |t: usize, s: usize| [
|
let get_clip_area = |t: usize, s: usize| [
|
||||||
offset+area.x()+cols[t].1 as u16 - 1,
|
scene_title_w + area.x() + cols[t].1 as u16,
|
||||||
title_h + area.y() + (rows[s].1/PPQ) as u16,
|
track_title_h + area.y() + (rows[s].1/PPQ) as u16,
|
||||||
cols[t].0 as u16,
|
cols[t].0 as u16,
|
||||||
(rows[s].0 / PPQ) as u16
|
(rows[s].0 / PPQ) as u16
|
||||||
];
|
];
|
||||||
|
|
@ -277,13 +277,13 @@ impl<'a> Content for VerticalArranger<'a, Tui> {
|
||||||
to.render_in(clip_area, &CORNERS)?;
|
to.render_in(clip_area, &CORNERS)?;
|
||||||
//to.fill_bg(clip_area, Color::Rgb(40, 50, 30));
|
//to.fill_bg(clip_area, Color::Rgb(40, 50, 30));
|
||||||
} else if let Some(track_area) = track_area {
|
} else if let Some(track_area) = track_area {
|
||||||
to.render_in(track_area.clip_h(2), &CORNERS)?;
|
to.render_in(track_area.clip_h(track_title_h), &CORNERS)?;
|
||||||
//to.fill_bg(track_area, Color::Rgb(40, 50, 30));
|
//to.fill_bg(track_area, Color::Rgb(40, 50, 30));
|
||||||
} else if let Some(scene_area) = scene_area {
|
} else if let Some(scene_area) = scene_area {
|
||||||
to.render_in(scene_area.clip_w(offset-1), &CORNERS)?;
|
to.render_in(scene_area.clip_w(scene_title_w), &CORNERS)?;
|
||||||
//to.fill_bg(scene_area, Color::Rgb(40, 50, 30));
|
//to.fill_bg(scene_area, Color::Rgb(40, 50, 30));
|
||||||
} else {
|
} else {
|
||||||
to.render_in(area.clip_w(offset-1).clip_h(2), &CORNERS)?;
|
to.render_in(area.clip_w(scene_title_w).clip_h(track_title_h), &CORNERS)?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ impl Content for PhrasePool<Tui> {
|
||||||
if let Some(PhrasePoolMode::Rename(phrase, _)) = mode {
|
if let Some(PhrasePoolMode::Rename(phrase, _)) = mode {
|
||||||
if *focused && i == *phrase { row2 = format!("{row2}▄"); }
|
if *focused && i == *phrase { row2 = format!("{row2}▄"); }
|
||||||
};
|
};
|
||||||
|
let row2 = TuiStyle::bold(row2, true);
|
||||||
let bg = if i == self.phrase { color } else { color };
|
let bg = if i == self.phrase { color } else { color };
|
||||||
add(&col!(row1, row2).fill_x().bg(bg))?;
|
add(&col!(row1, row2).fill_x().bg(bg))?;
|
||||||
if *focused && i == self.phrase { add(&CORNERS)?; }
|
if *focused && i == self.phrase { add(&CORNERS)?; }
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue