mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 19:56:42 +01:00
more status bar
This commit is contained in:
parent
3010c9ef5d
commit
9abd0b7c50
2 changed files with 31 additions and 18 deletions
|
|
@ -39,7 +39,8 @@ pub enum ArrangerStatusBar {
|
||||||
ArrangementScene,
|
ArrangementScene,
|
||||||
ArrangementClip,
|
ArrangementClip,
|
||||||
PhrasePool,
|
PhrasePool,
|
||||||
PhraseEditor,
|
PhraseView,
|
||||||
|
PhraseEdit,
|
||||||
}
|
}
|
||||||
/// Represents the tracks and scenes of the composition.
|
/// Represents the tracks and scenes of the composition.
|
||||||
pub struct Arrangement<E: Engine> {
|
pub struct Arrangement<E: Engine> {
|
||||||
|
|
@ -161,15 +162,18 @@ impl<E: Engine> Arranger<E> {
|
||||||
/// Update status bar
|
/// Update status bar
|
||||||
pub fn update_status (&mut self) {
|
pub fn update_status (&mut self) {
|
||||||
self.status = match self.focused() {
|
self.status = match self.focused() {
|
||||||
ArrangerFocus::Transport => ArrangerStatusBar::Transport,
|
ArrangerFocus::Transport => ArrangerStatusBar::Transport,
|
||||||
ArrangerFocus::Arrangement => match self.arrangement.selected {
|
ArrangerFocus::Arrangement => match self.arrangement.selected {
|
||||||
ArrangementFocus::Mix => ArrangerStatusBar::ArrangementMix,
|
ArrangementFocus::Mix => ArrangerStatusBar::ArrangementMix,
|
||||||
ArrangementFocus::Track(_) => ArrangerStatusBar::ArrangementTrack,
|
ArrangementFocus::Track(_) => ArrangerStatusBar::ArrangementTrack,
|
||||||
ArrangementFocus::Scene(_) => ArrangerStatusBar::ArrangementScene,
|
ArrangementFocus::Scene(_) => ArrangerStatusBar::ArrangementScene,
|
||||||
ArrangementFocus::Clip(_, _) => ArrangerStatusBar::ArrangementClip,
|
ArrangementFocus::Clip(_, _) => ArrangerStatusBar::ArrangementClip,
|
||||||
},
|
},
|
||||||
ArrangerFocus::PhrasePool => ArrangerStatusBar::PhrasePool,
|
ArrangerFocus::PhrasePool => ArrangerStatusBar::PhrasePool,
|
||||||
ArrangerFocus::PhraseEditor => ArrangerStatusBar::PhraseEditor,
|
ArrangerFocus::PhraseEditor => match self.editor.entered {
|
||||||
|
true => ArrangerStatusBar::PhraseEdit,
|
||||||
|
false => ArrangerStatusBar::PhraseView,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,22 +26,31 @@ impl Content for ArrangerStatusBar {
|
||||||
type Engine = Tui;
|
type Engine = Tui;
|
||||||
fn content (&self) -> impl Widget<Engine = Tui> {
|
fn content (&self) -> impl Widget<Engine = Tui> {
|
||||||
let label = match self {
|
let label = match self {
|
||||||
Self::Transport => "TRANSPORT",
|
Self::Transport => "TRANSPORT",
|
||||||
Self::ArrangementMix => "COMPOSITION",
|
Self::ArrangementMix => "PROJECT",
|
||||||
Self::ArrangementTrack => "TRACK",
|
Self::ArrangementTrack => "TRACK",
|
||||||
Self::ArrangementScene => "SCENE",
|
Self::ArrangementScene => "SCENE",
|
||||||
Self::ArrangementClip => "CLIP",
|
Self::ArrangementClip => "CLIP",
|
||||||
Self::PhrasePool => "PHRASES",
|
Self::PhrasePool => "SEQ LIST",
|
||||||
Self::PhraseEditor => "SEQUENCER",
|
Self::PhraseView => "SEQ VIEW",
|
||||||
|
Self::PhraseEdit => "SEQ EDIT",
|
||||||
};
|
};
|
||||||
let label = TuiStyle::bg(format!(" {label} "), Color::Rgb(150, 160, 90))
|
let label = TuiStyle::bg(format!(" {label} "), Color::Rgb(150, 160, 90))
|
||||||
.fg(Color::Rgb(0, 0, 0))
|
.fg(Color::Rgb(0, 0, 0))
|
||||||
.bold(true);
|
.bold(true);
|
||||||
row!(label, " ", match self {
|
row!(label, " ", match self {
|
||||||
|
Self::ArrangementMix =>
|
||||||
|
"[<>]Resize arranger",
|
||||||
Self::ArrangementClip =>
|
Self::ArrangementClip =>
|
||||||
"[G]et [S]et [A]dd [I]nsert [D]uplicate [E]dit [C]olor [,.]Choose",
|
"[G]et [S]et [A]dd [I]nsert [D]uplicate [E]dit [C]olor re[N]ame [,.]Choose",
|
||||||
|
Self::ArrangementTrack =>
|
||||||
|
"[,.]Resize [<>]Move",
|
||||||
Self::PhrasePool =>
|
Self::PhrasePool =>
|
||||||
"[A]ppend [I]nsert [D]uplicate [C]olor re[N]ame leng[T]h [,.]Move [<>]Resize",
|
"[A]ppend [I]nsert [D]uplicate [C]olor re[N]ame leng[T]h [,.]Move [<>]Resize list",
|
||||||
|
Self::PhraseView =>
|
||||||
|
"[Enter]Edit notes [Arrows/PgUp/PgDn]Scroll",
|
||||||
|
Self::PhraseEdit =>
|
||||||
|
"[Esc]Exit edit mode [A]ppend [S]et",
|
||||||
_ => ""
|
_ => ""
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
@ -132,7 +141,7 @@ impl<'a> Content for VerticalArranger<'a, Tui> {
|
||||||
|
|
||||||
// scene titles
|
// scene titles
|
||||||
let scene_name = |scene, playing: bool, height|row!(
|
let scene_name = |scene, playing: bool, height|row!(
|
||||||
if playing { "▶ " } else { " " },
|
if playing { " ▶" } else { " " },
|
||||||
(scene as &Scene).name.read().unwrap().as_str(),
|
(scene as &Scene).name.read().unwrap().as_str(),
|
||||||
).fixed_xy(offset.saturating_sub(1), height);
|
).fixed_xy(offset.saturating_sub(1), height);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue