mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 11:46:41 +01:00
This commit is contained in:
parent
7f03116cb3
commit
e987aa697d
16 changed files with 107 additions and 135 deletions
|
|
@ -2,11 +2,11 @@ use crate::*;
|
|||
|
||||
impl Arrangement {
|
||||
pub fn view_inputs <'a> (&'a self, _theme: ItemTheme) -> impl Content<TuiOut> + 'a {
|
||||
Stack::south(move|add: &mut dyn FnMut(&dyn Render<TuiOut>)|{
|
||||
Stack::south(move|add|{
|
||||
add(&Fixed::y(1,
|
||||
Bsp::e(Fixed::x(20, Align::w(button_3("i", "nput ", format!("{}", self.midi_ins.len()), false))),
|
||||
Bsp::w(Fixed::x(4, button_2("I", "+", false)),
|
||||
Stack::east(move|add: &mut dyn FnMut(&dyn Render<TuiOut>)|{
|
||||
Stack::east(move|add|{
|
||||
for (_index, track, _x1, _x2) in self.tracks_with_sizes() {
|
||||
add(&Tui::bg(track.color.dark.rgb, Align::w(Fixed::x(track.width as u16, row!(
|
||||
Either(track.sequencer.monitoring, Tui::fg(Green, "mon "), "mon "),
|
||||
|
|
@ -20,7 +20,7 @@ impl Arrangement {
|
|||
Fixed::x(20, Align::w(Bsp::e(" ● ",
|
||||
Tui::bold(true, Tui::fg(Rgb(255,255,255), port.port_name()))))),
|
||||
Bsp::w(Fixed::x(4, ()),
|
||||
Stack::east(move|add: &mut dyn FnMut(&dyn Render<TuiOut>)|{
|
||||
Stack::east(move|add|{
|
||||
for (_index, track, _x1, _x2) in self.tracks_with_sizes() {
|
||||
add(&Tui::bg(track.color.darker.rgb, Align::w(Fixed::x(track.width as u16, row!(
|
||||
Either(track.sequencer.monitoring, Tui::fg(Green, " ● "), " · "),
|
||||
|
|
@ -40,7 +40,7 @@ impl Arrangement {
|
|||
let h = h as u16;
|
||||
let list = 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>)|{
|
||||
Fixed::y(h - 1, Fill::xy(Align::nw(Stack::south(|add|{
|
||||
for (_index, port) in self.midi_outs().iter().enumerate() {
|
||||
add(&Fixed::y(1,Fill::x(Bsp::e(
|
||||
Align::w(Bsp::e(" ● ", Tui::fg(Rgb(255,255,255),Tui::bold(true, port.port_name())))),
|
||||
|
|
@ -52,12 +52,12 @@ impl Arrangement {
|
|||
}
|
||||
}
|
||||
})))));
|
||||
Fixed::y(h, self.view_track_row_section(theme, list, button_2("O", "+", false),
|
||||
Fixed::y(h, Self::view_track_row_section(theme, list, button_2("O", "+", false),
|
||||
Tui::bg(theme.darker.rgb, Align::w(Fill::x(
|
||||
Stack::east(move|add: &mut dyn FnMut(&dyn Render<TuiOut>)|{
|
||||
Stack::east(move|add|{
|
||||
for (index, track, _x1, _x2) in self.tracks_with_sizes() {
|
||||
add(&Fixed::x(self.track_width(index, track),
|
||||
Stack::south(move|add: &mut dyn FnMut(&dyn Render<TuiOut>)|{
|
||||
Stack::south(move|add|{
|
||||
add(&Fixed::y(1, Align::w(Bsp::e(
|
||||
Either(true, Tui::fg(Green, "play "), "play "),
|
||||
Either(false, Tui::fg(Yellow, "solo "), "solo "),
|
||||
|
|
@ -77,11 +77,11 @@ impl Arrangement {
|
|||
for track in self.tracks().iter() {
|
||||
h = h.max(track.devices.len() as u16 * 2);
|
||||
}
|
||||
self.view_track_row_section(
|
||||
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),
|
||||
Stack::east(move|add: &mut dyn FnMut(&dyn Render<TuiOut>)|{
|
||||
Stack::east(move|add|{
|
||||
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(2, move||0..h,
|
||||
|
|
@ -135,8 +135,7 @@ pub trait TracksView:
|
|||
}
|
||||
})
|
||||
}
|
||||
fn view_track_row_section <'a> (
|
||||
&'a self,
|
||||
fn view_track_row_section (
|
||||
_theme: ItemTheme,
|
||||
button: impl Content<TuiOut>,
|
||||
button_add: impl Content<TuiOut>,
|
||||
|
|
@ -151,51 +150,44 @@ pub trait TracksView:
|
|||
Fixed::x(12, Tui::bg(theme.darker.rgb, Fill::x(Align::e(content))))
|
||||
}
|
||||
fn view_track_names (&self, theme: ItemTheme) -> impl Content<TuiOut> {
|
||||
self.view_track_row_section(
|
||||
theme,
|
||||
Bsp::s(
|
||||
button_3("t", "rack ", if let Some(track) = self.selection().track() {
|
||||
format!("{track}/{}", self.tracks().len())
|
||||
} else {
|
||||
format!("{}", self.tracks().len())
|
||||
}, false),
|
||||
button_3("s", "cene ", if let Some(scene) = self.selection().scene() {
|
||||
format!("{scene}/{}", self.scenes().len())
|
||||
} else {
|
||||
format!("{}", self.scenes().len())
|
||||
}, false)
|
||||
),
|
||||
Bsp::s(
|
||||
button_2("T", "+", false),
|
||||
button_2("S", "+", false),
|
||||
),
|
||||
Tui::bg(theme.darker.rgb, Fixed::y(2, Fill::x(
|
||||
Stack::east(move|add: &mut dyn FnMut(&dyn Render<TuiOut>)|{
|
||||
for (index, track, _x1, _x2) in self.tracks_with_sizes() {
|
||||
add(&Fixed::x(self.track_width(index, track),
|
||||
Tui::bg(if self.selection().track() == Some(index) {
|
||||
track.color.light.rgb
|
||||
} else {
|
||||
track.color.base.rgb
|
||||
}, Bsp::s(Fill::x(Align::nw(Bsp::e(
|
||||
format!("·t{index:02} "),
|
||||
Tui::fg(Rgb(255, 255, 255), Tui::bold(true, &track.name))
|
||||
))), ""))) );
|
||||
}
|
||||
})))))
|
||||
let track_count = self.tracks().len();
|
||||
let scene_count = self.scenes().len();
|
||||
let selected = self.selection();
|
||||
let button = Bsp::s(
|
||||
button_3("t", "rack ", format!("{}{track_count}", selected.track()
|
||||
.map(|track|format!("{track}/")).unwrap_or_default()), false),
|
||||
button_3("s", "cene ", format!("{}{scene_count}", selected.scene()
|
||||
.map(|scene|format!("{scene}/")).unwrap_or_default()), false));
|
||||
let button_2 = Bsp::s(
|
||||
button_2("T", "+", false),
|
||||
button_2("S", "+", false));
|
||||
Self::view_track_row_section(theme, button, button_2, Tui::bg(theme.darker.rgb,
|
||||
Fixed::y(2, Fill::x(Stack::east(move|add|{
|
||||
for (index, track, _x1, _x2) in self.tracks_with_sizes() {
|
||||
add(&Fixed::x(self.track_width(index, track),
|
||||
Tui::bg(if selected.track() == Some(index) {
|
||||
track.color.light.rgb
|
||||
} else {
|
||||
track.color.base.rgb
|
||||
}, Bsp::s(Fill::x(Align::nw(Bsp::e(
|
||||
format!("·t{index:02} "),
|
||||
Tui::fg(Rgb(255, 255, 255), Tui::bold(true, &track.name))
|
||||
))), ""))) );
|
||||
}
|
||||
})))))
|
||||
}
|
||||
fn view_track_outputs <'a> (&'a self, theme: ItemTheme, _h: u16) -> impl Content<TuiOut> {
|
||||
self.view_track_row_section(theme,
|
||||
Self::view_track_row_section(theme,
|
||||
Bsp::s(
|
||||
Fill::x(Align::w(button_2("o", "utput", false))),
|
||||
Fill::xy(Stack::south(|add: &mut dyn FnMut(&dyn Render<TuiOut>)|{
|
||||
Fill::xy(Stack::south(|add|{
|
||||
for port in self.midi_outs().iter() {
|
||||
add(&Fill::x(Align::w(port.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>)|{
|
||||
Stack::east(move|add|{
|
||||
for (index, track, _x1, _x2) in self.tracks_with_sizes() {
|
||||
add(&Fixed::x(self.track_width(index, track),
|
||||
Align::nw(Fill::y(Map::south(1, ||track.sequencer.midi_outs.iter(),
|
||||
|
|
@ -210,12 +202,12 @@ pub trait TracksView:
|
|||
for track in self.tracks().iter() {
|
||||
h = h.max(track.sequencer.midi_ins.len() as u16);
|
||||
}
|
||||
self.view_track_row_section(
|
||||
Self::view_track_row_section(
|
||||
theme,
|
||||
button_2("i", "nput", false),
|
||||
button_2("I", "+", false),
|
||||
Tui::bg(theme.darker.rgb, Align::w(Fill::x(
|
||||
Stack::east(move|add: &mut dyn FnMut(&dyn Render<TuiOut>)|{
|
||||
Stack::east(move|add|{
|
||||
for (index, track, _x1, _x2) in self.tracks_with_sizes() {
|
||||
add(&Fixed::xy(self.track_width(index, track), h + 1,
|
||||
Align::nw(Bsp::s(
|
||||
|
|
@ -268,7 +260,7 @@ pub trait ScenesView:
|
|||
})
|
||||
}
|
||||
fn view_scenes_names (&self) -> impl Content<TuiOut> {
|
||||
Fixed::x(20, Stack::south(move|add: &mut dyn FnMut(&dyn Render<TuiOut>)|{
|
||||
Fixed::x(20, Stack::south(move|add|{
|
||||
for (index, scene, ..) in self.scenes_with_sizes() {
|
||||
add(&self.view_scene_name(index, scene));
|
||||
}
|
||||
|
|
@ -309,7 +301,7 @@ pub trait ClipsView:
|
|||
{
|
||||
self.clips_size().of(Fill::xy(Bsp::a(
|
||||
Fill::xy(Align::se(Tui::fg(Green, format!("{}x{}", self.clips_size().w(), self.clips_size().h())))),
|
||||
Stack::<TuiOut, _>::east(move|column: &mut dyn FnMut(&dyn Render<TuiOut>)|{
|
||||
Stack::<TuiOut, _>::east(move|column|{
|
||||
for (track_index, track, _, _) in self.tracks_with_sizes() {
|
||||
//column(&Fixed::x(5, Fill::xy(Tui::bg(Green, "kyp"))));
|
||||
column(&Fixed::x(
|
||||
|
|
@ -321,7 +313,7 @@ pub trait ClipsView:
|
|||
}
|
||||
|
||||
fn view_track_clips <'a> (&'a self, track_index: usize, track: &'a Track) -> impl Content<TuiOut> + 'a {
|
||||
Stack::south(move|cell: &mut dyn FnMut(&dyn Render<TuiOut>)|{
|
||||
Stack::south(move|cell|{
|
||||
for (scene_index, scene, ..) in self.scenes_with_sizes() {
|
||||
let (name, theme): (Arc<str>, ItemTheme) = if let Some(Some(clip)) = &scene.clips.get(track_index) {
|
||||
let clip = clip.read().unwrap();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue