mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 19:56: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
|
|
@ -833,10 +833,22 @@ where
|
|||
($($expr:expr),* $(,)?) => { Layers::new(move|add|{ $(add(&$expr)?;)* Ok(()) }) }
|
||||
}
|
||||
#[macro_export] macro_rules! col {
|
||||
($($expr:expr),* $(,)?) => { Stack::down(move|add|{ $(add(&$expr)?;)* Ok(()) }) }
|
||||
($($expr:expr),* $(,)?) => { Stack::down(move|add|{ $(add(&$expr)?;)* Ok(()) }) };
|
||||
($pat:pat in $collection:expr => $item:expr) => {
|
||||
Stack::down(move |add|{
|
||||
for $pat in $collection { add(&$item)?; }
|
||||
Ok(())
|
||||
})
|
||||
}
|
||||
}
|
||||
#[macro_export] macro_rules! row {
|
||||
($($expr:expr),* $(,)?) => { Stack::right(move|add|{ $(add(&$expr)?;)* Ok(()) }) }
|
||||
($($expr:expr),* $(,)?) => { Stack::right(move|add|{ $(add(&$expr)?;)* Ok(()) }) };
|
||||
($pat:pat in $collection:expr => $item:expr) => {
|
||||
Stack::right(move |add|{
|
||||
for $pat in $collection { add(&$item)?; }
|
||||
Ok(())
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
/// A binary split with fixed proportion
|
||||
|
|
|
|||
|
|
@ -466,8 +466,9 @@ impl<S: BorderStyle, W: Widget<Engine = Tui>> Content for Bordered<S, W> {
|
|||
fn content (&self) -> impl Widget<Engine = Tui> {
|
||||
let style = self.0;
|
||||
Layers::new(move|add|{
|
||||
add(&Inset::XY(1, 1, &self.1 as &dyn Widget<Engine = Tui>))?;
|
||||
add(&Border(style))?;
|
||||
add(&Inset::XY(1, 1, &self.1 as &dyn Widget<Engine = Tui>))
|
||||
Ok(())
|
||||
}).fill_xy()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -491,21 +491,14 @@ 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 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);
|
||||
add(&Stack::right(move |add| {
|
||||
Stack::right(move |add| {
|
||||
add(&Stack::right(|add|{
|
||||
add(&if playing { "▶ " } else { " " })?;
|
||||
add(&scene.name.read().unwrap().as_str())
|
||||
|
|
@ -533,12 +526,15 @@ impl<'a> Content for VerticalArranger<'a, Tui> {
|
|||
}).fixed_xy(*w as u16, height))?;
|
||||
}
|
||||
Ok(())
|
||||
}).fixed_y(height))?;
|
||||
}
|
||||
}).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