mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-07 20:26:42 +01:00
add iteration versions of row and col macros
This commit is contained in:
parent
ad39376659
commit
fd2e8f83f6
3 changed files with 57 additions and 50 deletions
|
|
@ -491,54 +491,50 @@ impl<'a> Content for VerticalArranger<'a, Tui> {
|
|||
let cols = cols.as_ref();
|
||||
add(&VerticalArrangerGrid(offset, &rows, &cols))?;
|
||||
add(&VerticalArrangerCursor(state.focused, state.selected, offset, &cols, &rows))?;
|
||||
add(&Stack::down(|add|{
|
||||
add(&Stack::right(move |add|{
|
||||
for (track, (w, _)) in tracks.iter().zip(cols) {
|
||||
add(&Layers::new(|add|{
|
||||
add(&Background(COLOR_BG1))?;
|
||||
add(&track.name.read().unwrap().as_str())
|
||||
}).min_xy(*w as u16, 2))?;
|
||||
}
|
||||
Ok(())
|
||||
}).push_x(offset))?;
|
||||
add(&Stack::down(move |add| {
|
||||
for (scene, (pulses, _)) in scenes.iter().zip(rows) {
|
||||
let height = 1.max((pulses / 96) as u16);
|
||||
let playing = scene.is_playing(tracks);
|
||||
add(&Stack::right(move |add| {
|
||||
add(&Stack::right(|add|{
|
||||
add(&if playing { "▶ " } else { " " })?;
|
||||
add(&scene.name.read().unwrap().as_str())
|
||||
}).fixed_xy(offset.saturating_sub(1), height))?;
|
||||
for (track, (w, _x)) in cols.iter().enumerate() {
|
||||
add(&Layers::new(move |add|{
|
||||
let mut color = COLOR_BG0;
|
||||
if let (Some(track), Some(Some(clip))) = (
|
||||
tracks.get(track),
|
||||
scene.clips.get(track),
|
||||
) {
|
||||
if let Some(phrase) = track.phrases.get(*clip) {
|
||||
add(&format!(
|
||||
"{clip:02} {}",
|
||||
phrase.read().unwrap().name.read().unwrap()
|
||||
).as_str().push_x(1))?;
|
||||
color = if track.sequence == Some(*clip) {
|
||||
COLOR_PLAYING
|
||||
} else {
|
||||
COLOR_BG1
|
||||
};
|
||||
}
|
||||
}
|
||||
add(&Background(color))
|
||||
}).fixed_xy(*w as u16, height))?;
|
||||
let track_titles = row!((track, (w, _)) in tracks.iter().zip(cols) => {
|
||||
(&track.name.read().unwrap().as_str() as &dyn Widget<Engine = Tui>)
|
||||
.bg(COLOR_BG1).min_xy(*w as u16, 2)
|
||||
}.push_x(offset));
|
||||
let track_clips = col!((scene, (pulses, _)) in scenes.iter().zip(rows) => {
|
||||
let height = 1.max((pulses / 96) as u16);
|
||||
let playing = scene.is_playing(tracks);
|
||||
Stack::right(move |add| {
|
||||
add(&Stack::right(|add|{
|
||||
add(&if playing { "▶ " } else { " " })?;
|
||||
add(&scene.name.read().unwrap().as_str())
|
||||
}).fixed_xy(offset.saturating_sub(1), height))?;
|
||||
for (track, (w, _x)) in cols.iter().enumerate() {
|
||||
add(&Layers::new(move |add|{
|
||||
let mut color = COLOR_BG0;
|
||||
if let (Some(track), Some(Some(clip))) = (
|
||||
tracks.get(track),
|
||||
scene.clips.get(track),
|
||||
) {
|
||||
if let Some(phrase) = track.phrases.get(*clip) {
|
||||
add(&format!(
|
||||
"{clip:02} {}",
|
||||
phrase.read().unwrap().name.read().unwrap()
|
||||
).as_str().push_x(1))?;
|
||||
color = if track.sequence == Some(*clip) {
|
||||
COLOR_PLAYING
|
||||
} else {
|
||||
COLOR_BG1
|
||||
};
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}).fixed_y(height))?;
|
||||
add(&Background(color))
|
||||
}).fixed_xy(*w as u16, height))?;
|
||||
}
|
||||
Ok(())
|
||||
}))
|
||||
}))
|
||||
}).fixed_y(height)
|
||||
});
|
||||
add(&col!(track_titles, track_clips))?;
|
||||
Ok(())
|
||||
})
|
||||
.bg(Color::Rgb(35,40,25))
|
||||
.border(Lozenge(Style::default()
|
||||
.bg(Color::Rgb(40,50,30))
|
||||
.fg(Color::Rgb(70,80,50))))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1428,9 +1424,7 @@ impl Content for Sequencer<Tui> {
|
|||
}),
|
||||
|
||||
);
|
||||
row!(toolbar, content)
|
||||
.fill_x()
|
||||
//.inset_x(1)
|
||||
row!(toolbar, content).fill_x()
|
||||
.bg(Color::Rgb(40,50,30))
|
||||
.border(Lozenge(Style::default()
|
||||
.bg(Color::Rgb(40,50,30))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue