wip: prototype chains/stacks

This commit is contained in:
🪞👃🪞 2024-06-12 12:43:17 +03:00
parent dc09ea901f
commit d330d31ce4
3 changed files with 239 additions and 66 deletions

View file

@ -48,9 +48,6 @@ fn main () -> Result<(), Box<dyn Error>> {
)?,
focus: 0,
devices: vec![
crate::device::Device::Mixer(
crate::device::mixer::Mixer::new()?
),
crate::device::Device::Sequencer(
crate::device::sequencer::Sequencer::new(
Some("Melody#000"),
@ -58,19 +55,22 @@ fn main () -> Result<(), Box<dyn Error>> {
None
)?
),
crate::device::Device::Sequencer(
crate::device::sequencer::Sequencer::new(
Some("Rhythm#000"),
None,
None,
)?
),
crate::device::Device::Sampler(
crate::device::sampler::Sampler::new()?
),
crate::device::Device::Looper(
crate::device::looper::Looper::new()?
),
//crate::device::Device::Sequencer(
//crate::device::sequencer::Sequencer::new(
//Some("Rhythm#000"),
//None,
//None,
//)?
//),
//crate::device::Device::Mixer(
//crate::device::mixer::Mixer::new()?
//),
//crate::device::Device::Sampler(
//crate::device::sampler::Sampler::new()?
//),
//crate::device::Device::Looper(
//crate::device::looper::Looper::new()?
//),
]
})
}
@ -106,24 +106,30 @@ impl WidgetRef for App {
fn render_ref (&self, area: Rect, buffer: &mut Buffer) {
use ratatui::style::Stylize;
let mut constraints = vec![
Constraint::Length(4),
Constraint::Length(10),
Constraint::Max(18),
Constraint::Max(18),
Constraint::Max(0),
Constraint::Max(0),
Constraint::Max(0),
Constraint::Max(40),
Constraint::Max(40),
];
let areas = Layout::default()
.direction(Direction::Vertical)
.direction(Direction::Horizontal)
.constraints(&constraints)
.split(area);
.split(Rect {
x: area.x,
y: area.y,
width: area.width,
height: area.height - 4
});
self.transport.render(Rect {
x: area.width.saturating_sub(80u16) / 2,
y: area.y + area.height - 4,
width: area.width,
height: 4
}, buffer);
self.transport.render(areas[0], buffer);
for (index, device) in self.devices.iter().enumerate() {
device.render(areas[index + 1], buffer);
device.render(areas[index], buffer);
if index == self.focus {
draw_focus_corners(buffer, areas[index+1]);
draw_focus_corners(buffer, areas[index]);
}
}
}