mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-07 20:26:42 +01:00
wip: p.55, e=95
This commit is contained in:
parent
54fb5b6ece
commit
37ac7823af
10 changed files with 272 additions and 219 deletions
|
|
@ -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())),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue