mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 11:46:41 +01:00
wip: full screen editor in arranger
This commit is contained in:
parent
4f575246ef
commit
f938ade839
4 changed files with 44 additions and 37 deletions
|
|
@ -33,17 +33,22 @@ impl App {
|
|||
)));
|
||||
{
|
||||
let cache = self.view_cache.read().unwrap();
|
||||
add(&Align::w(Bsp::s(
|
||||
add(&Fixed::x(16, Align::w(Bsp::s(
|
||||
FieldH(theme, "Beat", cache.beat.view.clone()),
|
||||
FieldH(theme, "Time", cache.time.view.clone()),
|
||||
)));
|
||||
add(&Align::w(Bsp::s(
|
||||
))));
|
||||
add(&Fixed::x(16, Align::w(Bsp::s(
|
||||
Fill::x(Align::w(FieldH(theme, "BPM", cache.bpm.view.clone()))),
|
||||
Fill::x(Align::w(FieldH(theme, "SR ", cache.sr.view.clone()))),
|
||||
)));
|
||||
add(&FieldH(theme, "Buf",
|
||||
Bsp::e(cache.buf.view.clone(), Bsp::e(" = ", cache.lat.view.clone()))
|
||||
));
|
||||
))));
|
||||
add(&Fixed::x(16, Align::w(Bsp::s(
|
||||
Fill::x(Align::w(FieldH(theme, "Buf", cache.buf.view.clone()))),
|
||||
Fill::x(Align::w(FieldH(theme, "Lat", cache.lat.view.clone()))),
|
||||
))));
|
||||
add(&FieldV(theme, "Selection", Fill::x(Align::w(self.selection().describe(
|
||||
self.tracks(),
|
||||
self.scenes()
|
||||
)))));
|
||||
}
|
||||
}))
|
||||
}
|
||||
|
|
@ -111,7 +116,7 @@ impl App {
|
|||
pub fn view_tracks_scenes (&self) -> impl Content<TuiOut> + use<'_> {
|
||||
Bsp::e(
|
||||
Fixed::x(20, Align::nw(self.project.view_scenes_names())),
|
||||
Bsp::w(self.view_pool(), self.project.view_scenes_clips()),
|
||||
self.project.view_scenes_clips(),
|
||||
)
|
||||
}
|
||||
pub fn view_tracks_inputs <'a> (&'a self) -> impl Content<TuiOut> + use<'a> {
|
||||
|
|
|
|||
|
|
@ -10,13 +10,12 @@ impl Arrangement {
|
|||
self.view_track_row_section(
|
||||
theme,
|
||||
Bsp::s(
|
||||
Fill::x(Align::w(button_2("i", "nput", false))),
|
||||
Fill::x(Align::nw(Stack::south(move|add: &mut dyn FnMut(&dyn Render<TuiOut>)|{
|
||||
add(&"kyp");
|
||||
Fixed::y(1, Fill::x(Align::w(button_3("i", "nput ", format!("{}", self.midi_ins.len()), false)))),
|
||||
Fixed::y(h - 1, Fill::x(Align::nw(Stack::south(move|add: &mut dyn FnMut(&dyn Render<TuiOut>)|{
|
||||
for (index, port) in self.midi_ins.iter().enumerate() {
|
||||
add(&Fill::x(Align::w(format!("·i{index:02} {}", port.name()))));
|
||||
}
|
||||
})))),
|
||||
}))))),
|
||||
button_2("I", "+", false),
|
||||
Tui::bg(theme.darker.rgb, Align::w(Fill::x(
|
||||
Stack::east(move|add: &mut dyn FnMut(&dyn Render<TuiOut>)|{
|
||||
|
|
@ -42,12 +41,13 @@ impl Arrangement {
|
|||
let h = h + 1;
|
||||
self.view_track_row_section(
|
||||
theme,
|
||||
Bsp::s(Fill::x(Align::w(button_2("o", "utput", false))),
|
||||
Fill::xy(Align::nw(Stack::south(|add: &mut dyn FnMut(&dyn Render<TuiOut>)|{
|
||||
Bsp::s(
|
||||
Fixed::y(1, Fill::x(Align::w(button_3("o", "utput", format!("{}", self.midi_outs.len()), false)))),
|
||||
Fixed::y(h - 1, Fill::xy(Align::nw(Stack::south(|add: &mut dyn FnMut(&dyn Render<TuiOut>)|{
|
||||
for (index, port) in self.midi_outs().iter().enumerate() {
|
||||
add(&Fill::x(Align::w(format!("·o{index:02} {}", port.name()))));
|
||||
}
|
||||
})))),
|
||||
}))))),
|
||||
button_2("O", "+", false),
|
||||
Tui::bg(theme.darker.rgb, Align::w(Fill::x(
|
||||
Stack::east(move|add: &mut dyn FnMut(&dyn Render<TuiOut>)|{
|
||||
|
|
@ -60,6 +60,24 @@ impl Arrangement {
|
|||
}
|
||||
})))))
|
||||
}
|
||||
pub fn view_track_devices <'a> (&'a self, theme: ItemTheme) -> impl Content<TuiOut> + 'a {
|
||||
let mut h = 2u16;
|
||||
for track in self.tracks().iter() {
|
||||
h = h.max(track.devices.len() as u16);
|
||||
}
|
||||
self.view_track_row_section(
|
||||
theme,
|
||||
button_3("d", "evice", format!("{}", self.track().map(|t|t.devices.len()).unwrap_or(0)), false),
|
||||
button_2("D", "+", false),
|
||||
Fixed::y(h, Tui::bg(theme.darker.rgb, Align::w(Fill::x(Stack::east(
|
||||
move|add: &mut dyn FnMut(&dyn Render<TuiOut>)|{
|
||||
for (index, track, x1, x2) in self.tracks_with_sizes() {
|
||||
add(&Fixed::xy(self.track_width(index, track), h + 1,
|
||||
Tui::bg(track.color.dark.rgb, Align::nw(Map::south(1, move||0..h,
|
||||
|_, index|format!("·d{index:02} {}", "--------"))))));
|
||||
}
|
||||
}))))))
|
||||
}
|
||||
}
|
||||
|
||||
pub trait HasClipsSize {
|
||||
|
|
@ -125,7 +143,7 @@ pub trait TracksView:
|
|||
fn view_track_names (&self, theme: ItemTheme) -> impl Content<TuiOut> {
|
||||
self.view_track_row_section(
|
||||
theme,
|
||||
button_2("t", "rack", false),
|
||||
button_2("t", "rack ", false),
|
||||
button_2("T", "+", false),
|
||||
Tui::bg(theme.darker.rgb, Fixed::y(2, Fill::x(
|
||||
Stack::east(move|add: &mut dyn FnMut(&dyn Render<TuiOut>)|{
|
||||
|
|
@ -167,24 +185,6 @@ pub trait TracksView:
|
|||
}
|
||||
})))))
|
||||
}
|
||||
fn view_track_devices <'a> (&'a self, theme: ItemTheme) -> impl Content<TuiOut> {
|
||||
let mut h = 2u16;
|
||||
for track in self.tracks().iter() {
|
||||
h = h.max(track.devices.len() as u16);
|
||||
}
|
||||
self.view_track_row_section(
|
||||
theme,
|
||||
button_2("d", "evice", false),
|
||||
button_2("D", "+", false),
|
||||
Fixed::y(h, Tui::bg(theme.darker.rgb, Align::w(Fill::x(Stack::east(
|
||||
move|add: &mut dyn FnMut(&dyn Render<TuiOut>)|{
|
||||
for (index, track, x1, x2) in self.tracks_with_sizes() {
|
||||
add(&Fixed::xy(self.track_width(index, track), h + 1,
|
||||
Tui::bg(track.color.dark.rgb, Align::nw(Map::south(1, move||0..h,
|
||||
|_, index|format!("·d{index:02} {}", "--------"))))));
|
||||
}
|
||||
}))))))
|
||||
}
|
||||
fn view_track_inputs <'a> (&'a self, theme: ItemTheme) -> impl Content<TuiOut> {
|
||||
let mut h = 0u16;
|
||||
for track in self.tracks().iter() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue