mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-07 12:16:42 +01:00
wip: focus refactor, e0
This commit is contained in:
parent
b663a09c15
commit
6f5c28f671
1 changed files with 20 additions and 12 deletions
|
|
@ -69,12 +69,12 @@ pub trait PhrasesViewState: Send + Sync {
|
||||||
fn phrase_mode (&self) -> &Option<PhrasesMode>;
|
fn phrase_mode (&self) -> &Option<PhrasesMode>;
|
||||||
}
|
}
|
||||||
macro_rules! impl_phrases_view_state {
|
macro_rules! impl_phrases_view_state {
|
||||||
($Struct:ident $(:: $field:ident)* [$self:ident: $focus:expr] [self: $enter:expr]) => {
|
($Struct:ident $(:: $field:ident)* [$self1:ident: $focus:expr] [$self2:ident: $enter:expr]) => {
|
||||||
impl PhrasesViewState for $Struct {
|
impl PhrasesViewState for $Struct {
|
||||||
fn phrases_focused (&$self) -> bool {
|
fn phrases_focused (&$self1) -> bool {
|
||||||
$focus
|
$focus
|
||||||
}
|
}
|
||||||
fn phrases_entered (&$self) -> bool {
|
fn phrases_entered (&$self2) -> bool {
|
||||||
$enter
|
$enter
|
||||||
}
|
}
|
||||||
fn phrases (&self) -> Vec<Arc<RwLock<Phrase>>> {
|
fn phrases (&self) -> Vec<Arc<RwLock<Phrase>>> {
|
||||||
|
|
@ -111,20 +111,22 @@ pub trait PhraseViewState: Send + Sync {
|
||||||
fn size (&self) -> &Measure<Tui>;
|
fn size (&self) -> &Measure<Tui>;
|
||||||
}
|
}
|
||||||
macro_rules! impl_phrase_view_state {
|
macro_rules! impl_phrase_view_state {
|
||||||
($Struct:ident $(:: $field:ident)*) => {
|
($Struct:ident $(:: $field:ident)* [$self1:ident : $focused:expr] [$self2:ident : $entered:expr]) => {
|
||||||
impl PhraseViewState for $Struct {
|
impl PhraseViewState for $Struct {
|
||||||
fn phrase_editing (&self) -> &Option<Arc<RwLock<Phrase>>> {
|
fn phrase_editing (&self) -> &Option<Arc<RwLock<Phrase>>> {
|
||||||
&self$(.$field)*.phrase
|
&self$(.$field)*.phrase
|
||||||
}
|
}
|
||||||
fn phrase_editor_focused (&self) -> bool {
|
fn phrase_editor_focused (&$self1) -> bool {
|
||||||
self$(.$field)*.focus.is_focused()
|
$focused
|
||||||
|
//self$(.$field)*.focus.is_focused()
|
||||||
|
}
|
||||||
|
fn phrase_editor_entered (&$self2) -> bool {
|
||||||
|
$entered
|
||||||
|
//self$(.$field)*.focus.is_entered()
|
||||||
}
|
}
|
||||||
fn phrase_editor_size (&self) -> &Measure<Tui> {
|
fn phrase_editor_size (&self) -> &Measure<Tui> {
|
||||||
todo!()
|
todo!()
|
||||||
}
|
}
|
||||||
fn phrase_editor_entered (&self) -> bool {
|
|
||||||
self$(.$field)*.focus.is_entered()
|
|
||||||
}
|
|
||||||
fn keys (&self) -> &Buffer {
|
fn keys (&self) -> &Buffer {
|
||||||
&self$(.$field)*.keys
|
&self$(.$field)*.keys
|
||||||
}
|
}
|
||||||
|
|
@ -149,9 +151,15 @@ macro_rules! impl_phrase_view_state {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
impl_phrase_view_state!(PhraseEditorModel);
|
impl_phrase_view_state!(PhraseEditorModel
|
||||||
impl_phrase_view_state!(SequencerTui::editor);
|
[self: true]
|
||||||
impl_phrase_view_state!(ArrangerTui::editor);
|
[self: true]);
|
||||||
|
impl_phrase_view_state!(SequencerTui::editor
|
||||||
|
[self: self.focused() == AppFocus::Content(SequencerFocus::PhraseEditor)]
|
||||||
|
[self: self.entered() && self.focused() == AppFocus::Content(SequencerFocus::PhraseEditor)]);
|
||||||
|
impl_phrase_view_state!(ArrangerTui::editor
|
||||||
|
[self: self.focused() == AppFocus::Content(ArrangerFocus::PhraseEditor)]
|
||||||
|
[self: self.entered() && self.focused() == AppFocus::Content(ArrangerFocus::PhraseEditor)]);
|
||||||
|
|
||||||
fn track_widths (tracks: &[ArrangerTrack]) -> Vec<(usize, usize)> {
|
fn track_widths (tracks: &[ArrangerTrack]) -> Vec<(usize, usize)> {
|
||||||
let mut widths = vec![];
|
let mut widths = vec![];
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue