add align_s/n; position playhead

This commit is contained in:
🪞👃🪞 2024-10-22 01:10:35 +03:00
parent 61992ab2a2
commit 9cd9131d5d
5 changed files with 79 additions and 104 deletions

View file

@ -43,42 +43,45 @@ impl Content for ArrangerStatusBar {
["", "<>", "resize view"],
]),
Self::ArrangementClip => command(&[
["", "g", "et"],
["", "s", "et"],
["", "a", "dd"],
["", "i", "ns"],
["", "d", "up"],
["", "e", "dit"],
["", "c", "olor"],
["re", "n", "ame"],
["", ",.", "select"],
["", "g", "et"],
["", "s", "et"],
["", "a", "dd"],
["", "i", "ns"],
["", "d", "up"],
["", "e", "dit"],
["", "c", "olor"],
["re", "n", "ame"],
["", ",.", "select"],
]),
Self::ArrangementTrack => command(&[
["", ",.", "resize"],
["", "<>", "move"],
["", "i", "nput"],
["", "o", "utput"],
["", "m", "ute"],
["", "s", "olo"],
["", "i", "nput"],
["", "o", "utput"],
["", "m", "ute"],
["", "s", "olo"],
]),
Self::PhrasePool => command(&[
["", "a", "ppend"],
["", "i", "nsert"],
["", "d", "uplicate"],
["", "c", "olor"],
["re", "n", "ame"],
["leng", "t", "h"],
["", ",.", "move"],
["", "<>", "resize view"],
["", "a", "ppend"],
["", "i", "nsert"],
["", "d", "uplicate"],
["", "c", "olor"],
["re", "n", "ame"],
["leng", "t", "h"],
["", ",.", "move"],
["", "<>", "resize view"],
]),
Self::PhraseView => command(&[
["", "enter", " edit"],
["", "enter", " edit"],
["", "arrows/pgup/pgdn", " scroll"],
["", ",.", "zoom"],
]),
Self::PhraseEdit => command(&[
["", "esc", " exit"],
["", "a", "ppend"],
["", "s", "et"],
["", "a", "ppend"],
["", "s", "et"],
["", ",.", "length"],
["", "<>", "zoom"],
]),
_ => command(&[])
};
@ -101,20 +104,11 @@ impl Content for Arrangement<Tui> {
fn content (&self) -> impl Widget<Engine = Tui> {
Layers::new(move |add|{
match self.mode {
ArrangementViewMode::Horizontal => add(&HorizontalArranger(&self)),
ArrangementViewMode::Vertical(factor) => add(&VerticalArranger(&self, factor))
ArrangementViewMode::Horizontal => add(&HorizontalArranger(&self)),
ArrangementViewMode::Vertical(factor) => add(&VerticalArranger(&self, factor)),
}?;
let color = if self.focused{Color::Rgb(150, 160, 90)}else{Color::Rgb(120, 130, 100)};
//if self.focused {
//let commands = "[G]et [S]et [A]dd [I]nsert [D]uplicate [E]dit [C]olor";
//let lower_left = Align::SW(TuiStyle::fg(commands, color).push_x(1));
//add(&lower_left)?;
//}
//let description = self.selected.description(&self.tracks, &self.scenes);
//let lower_right = Align::SE(TuiStyle::fg(description.as_str(), color).pull_x(1));
//add(&lower_right)?;
let upper_left = TuiStyle::fg("Session", color).push_x(1);
add(&upper_left)
add(&TuiStyle::fg("Session", color).push_x(1))
})
}
}
@ -122,22 +116,22 @@ impl<'a> Content for VerticalArranger<'a, Tui> {
type Engine = Tui;
fn content (&self) -> impl Widget<Engine = Tui> {
let Self(state, factor) = self;
let (cols, rows) = if *factor == 0 {(
state.track_widths(), Scene::ppqs(state.scenes.as_slice()),
)} else {(
state.track_widths(),
(0..=state.scenes.len()).map(|i|(factor*PPQ, factor*PPQ*i)).collect::<Vec<_>>(),
)};
let cols = state.track_widths();
let rows = if *factor == 0 {
Scene::ppqs(state.scenes.as_slice())
} else {
(0..=state.scenes.len()).map(|i|(factor*PPQ, factor*PPQ*i)).collect::<Vec<_>>()
};
let tracks: &[ArrangementTrack<Tui>] = state.tracks.as_ref();
let scenes: &[Scene] = state.scenes.as_ref();
let offset = 3 + Scene::longest_name(scenes) as u16; // x of 1st track
let bg = state.color;
let clip_bg = Color::Rgb(40, 50, 30);
let offset = 3 + Scene::longest_name(scenes) as u16; // x of 1st track
let bg = state.color;
let clip_bg = Color::Rgb(40, 50, 30);
let border_bg = Color::Rgb(40, 50, 30);
let border_hi = Color::Rgb(100, 110, 40);
let border_lo = Color::Rgb(70, 80, 50);
let border_fg = if self.0.focused { border_hi } else { border_lo };
let border = Lozenge(Style::default().bg(border_bg).fg(border_fg));
let border = Lozenge(Style::default().bg(border_bg).fg(border_fg));
Layers::new(move |add|{
let rows: &[(usize, usize)] = rows.as_ref();
let cols: &[(usize, usize)] = cols.as_ref();