wip: p.55, e=95

This commit is contained in:
🪞👃🪞 2024-11-18 22:05:11 +01:00
parent 54fb5b6ece
commit 37ac7823af
10 changed files with 272 additions and 219 deletions

View file

@ -3,8 +3,8 @@ use crate::*;
pub struct TransportView<'a, T: TransportViewState>(pub &'a T);
pub trait TransportViewState: Send + Sync {
fn focus (&self) -> TransportFocus;
fn is_focused (&self) -> bool;
fn transport_selected (&self) -> TransportFocus;
fn transport_focused (&self) -> bool;
fn transport_state (&self) -> Option<TransportState>;
fn bpm_value (&self) -> f64;
fn sync_value (&self) -> f64;
@ -13,10 +13,10 @@ pub trait TransportViewState: Send + Sync {
}
impl TransportViewState for TransportTui {
fn focus (&self) -> TransportFocus {
fn transport_selected (&self) -> TransportFocus {
self.focus
}
fn is_focused (&self) -> bool {
fn transport_focused (&self) -> bool {
true
}
fn transport_state (&self) -> Option<TransportState> {
@ -37,10 +37,10 @@ impl TransportViewState for TransportTui {
}
impl TransportViewState for SequencerTui {
fn focus (&self) -> TransportFocus {
fn transport_selected (&self) -> TransportFocus {
self.focus
}
fn is_focused (&self) -> bool {
fn transport_focused (&self) -> bool {
self.focused() == SequencerFocus::Transport
}
fn transport_state (&self) -> Option<TransportState> {
@ -61,10 +61,10 @@ impl TransportViewState for SequencerTui {
}
impl TransportViewState for ArrangerTui {
fn focus (&self) -> TransportFocus {
fn transport_selected (&self) -> TransportFocus {
self.focus
}
fn is_focused (&self) -> bool {
fn transport_focused (&self) -> bool {
self.focused() == ArrangerFocus::Transport
}
fn transport_state (&self) -> Option<TransportState> {
@ -85,11 +85,11 @@ impl TransportViewState for ArrangerTui {
}
pub trait ArrangerViewState {
fn is_focused (&self) -> bool;
fn arranger_focused (&self) -> bool;
}
impl ArrangerViewState for ArrangerTui {
fn is_focused (&self) -> bool {
fn arranger_focused (&self) -> bool {
self.focused() == ArrangerFocus::Arranger
}
}
@ -97,7 +97,7 @@ impl ArrangerViewState for ArrangerTui {
pub struct PhrasesView<'a, T: PhrasesViewState>(pub &'a T);
pub trait PhrasesViewState: Send + Sync {
fn focused (&self) -> bool;
fn phrases_focused (&self) -> bool;
fn entered (&self) -> bool;
fn phrases (&self) -> Vec<Arc<RwLock<Phrase>>>;
fn phrase (&self) -> usize;
@ -105,7 +105,7 @@ pub trait PhrasesViewState: Send + Sync {
}
impl PhrasesViewState for PhrasesTui {
fn focused (&self) -> bool {
fn phrases_focused (&self) -> bool {
todo!()
}
fn entered (&self) -> bool {
@ -123,7 +123,7 @@ impl PhrasesViewState for PhrasesTui {
}
impl PhrasesViewState for SequencerTui {
fn focused (&self) -> bool {
fn phrases_focused (&self) -> bool {
todo!()
}
fn entered (&self) -> bool {
@ -136,12 +136,12 @@ impl PhrasesViewState for SequencerTui {
todo!()
}
fn mode (&self) -> &Option<PhrasesMode> {
&self.mode
&self.phrases_mode
}
}
impl PhrasesViewState for ArrangerTui {
fn focused (&self) -> bool {
fn phrases_focused (&self) -> bool {
todo!()
}
fn entered (&self) -> bool {
@ -154,14 +154,14 @@ impl PhrasesViewState for ArrangerTui {
todo!()
}
fn mode (&self) -> &Option<PhrasesMode> {
&self.mode
&self.phrases_mode
}
}
pub struct PhraseView<'a, T: PhraseViewState>(pub &'a T);
pub trait PhraseViewState: Send + Sync {
fn focused (&self) -> bool;
fn phrase_focused (&self) -> bool;
fn entered (&self) -> bool;
fn keys (&self) -> &Buffer;
fn phrase (&self) -> &Option<Arc<RwLock<Phrase>>>;
@ -174,7 +174,7 @@ pub trait PhraseViewState: Send + Sync {
}
impl PhraseViewState for PhraseTui {
fn focused (&self) -> bool {
fn phrase_focused (&self) -> bool {
self.focused
}
fn entered (&self) -> bool {
@ -207,7 +207,7 @@ impl PhraseViewState for PhraseTui {
}
impl PhraseViewState for SequencerTui {
fn focused (&self) -> bool {
fn phrase_focused (&self) -> bool {
todo!()
}
fn entered (&self) -> bool {
@ -240,7 +240,7 @@ impl PhraseViewState for SequencerTui {
}
impl PhraseViewState for ArrangerTui {
fn focused (&self) -> bool {
fn phrase_focused (&self) -> bool {
todo!()
}
fn entered (&self) -> bool {
@ -471,7 +471,7 @@ pub fn arranger_content_vertical (
// cursor
add(&CustomWidget::new(any_size, move|to: &mut TuiOutput|{
let area = to.area();
let focused = view.is_focused();
let focused = view.arranger_focused();
let selected = view.selected;
let get_track_area = |t: usize| [
scenes_w + area.x() + cols[t].1 as u16, area.y(),
@ -524,7 +524,7 @@ pub fn arranger_content_vertical (
})
}))
}).bg(bg.rgb);
let color = TuiTheme::title_fg(view.is_focused());
let color = TuiTheme::title_fg(view.arranger_focused());
let size = format!("{}x{}", view.size.w(), view.size.h());
let lower_right = TuiStyle::fg(size, color).pull_x(1).align_se().fill_xy();
lay!(arrangement, lower_right)
@ -533,7 +533,7 @@ pub fn arranger_content_vertical (
pub fn arranger_content_horizontal (
view: &ArrangerTui,
) -> impl Widget<Engine = Tui> + use<'_> {
let focused = view.is_focused();
let focused = view.arranger_focused();
let _tracks = view.tracks();
lay!(
focused.then_some(Background(TuiTheme::border_bg())),