mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 19:56:42 +01:00
wip: refactor pt.27: 13 errors
This commit is contained in:
parent
7384950302
commit
4522ebaa4b
4 changed files with 81 additions and 84 deletions
|
|
@ -128,47 +128,3 @@ pub enum AppViewFocus<F: std::fmt::Debug + Copy + Clone + PartialEq> {
|
|||
Menu,
|
||||
Content(F),
|
||||
}
|
||||
|
||||
impl<A, C> FocusGrid for AppView<Tui, A, C>
|
||||
where
|
||||
A: Widget<Engine = Tui> + Handle<Tui> + Audio + FocusGrid,
|
||||
C: Command<A>
|
||||
{
|
||||
type Item = AppViewFocus<<A as FocusGrid>::Item>;
|
||||
fn cursor (&self) -> (usize, usize) {
|
||||
self.cursor
|
||||
}
|
||||
fn cursor_mut (&mut self) -> &mut (usize, usize) {
|
||||
&mut self.cursor
|
||||
}
|
||||
fn focus_enter (&mut self) {
|
||||
let focused = self.focused();
|
||||
if !self.entered {
|
||||
self.entered = true;
|
||||
// TODO
|
||||
}
|
||||
}
|
||||
fn focus_exit (&mut self) {
|
||||
if self.entered {
|
||||
self.entered = false;
|
||||
// TODO
|
||||
}
|
||||
}
|
||||
fn entered (&self) -> Option<Self::Item> {
|
||||
if self.entered {
|
||||
Some(self.focused())
|
||||
} else {
|
||||
None
|
||||
}
|
||||
}
|
||||
fn layout (&self) -> &[&[Self::Item]] {
|
||||
&[
|
||||
&[AppViewFocus::Menu],
|
||||
FocusGrid::layout(&self.ui)
|
||||
//&[AppViewFocus::Content(())],
|
||||
]
|
||||
}
|
||||
fn update_focus (&mut self) {
|
||||
// TODO
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,57 +14,56 @@ pub enum ArrangerViewFocus {
|
|||
}
|
||||
|
||||
/// Focus layout of arranger app
|
||||
impl<E: Engine> FocusGrid for ArrangerView<E> {
|
||||
type Item = ArrangerViewFocus;
|
||||
impl FocusGrid for AppView<Tui, ArrangerView<Tui>, ArrangerViewCommand> {
|
||||
type Item = AppViewFocus<ArrangerViewFocus>;
|
||||
fn cursor (&self) -> (usize, usize) {
|
||||
self.focus_cursor
|
||||
self.cursor
|
||||
}
|
||||
fn cursor_mut (&mut self) -> &mut (usize, usize) {
|
||||
&mut self.focus_cursor
|
||||
&mut self.cursor
|
||||
}
|
||||
fn focus_enter (&mut self) {
|
||||
use AppViewFocus::*;
|
||||
use ArrangerViewFocus::*;
|
||||
let focused = self.focused();
|
||||
if !self.entered {
|
||||
self.entered =
|
||||
focused == ArrangerViewFocus::Arranger;
|
||||
self.sequencer.editor.entered =
|
||||
focused == ArrangerViewFocus::PhraseEditor;
|
||||
self.sequencer.phrases.entered =
|
||||
focused == ArrangerViewFocus::PhrasePool;
|
||||
self.entered = focused == Content(Arranger);
|
||||
self.app.sequencer.editor.entered = focused == Content(PhraseEditor);
|
||||
self.app.sequencer.phrases.entered = focused == Content(PhrasePool);
|
||||
}
|
||||
}
|
||||
fn focus_exit (&mut self) {
|
||||
if self.entered {
|
||||
self.entered = false;
|
||||
self.sequencer.editor.entered = false;
|
||||
self.sequencer.phrases.entered = false;
|
||||
self.app.sequencer.editor.entered = false;
|
||||
self.app.sequencer.phrases.entered = false;
|
||||
}
|
||||
}
|
||||
fn entered (&self) -> Option<ArrangerViewFocus> {
|
||||
fn entered (&self) -> Option<Self::Item> {
|
||||
if self.entered {
|
||||
Some(self.focused())
|
||||
} else {
|
||||
None
|
||||
}
|
||||
}
|
||||
fn layout (&self) -> &[&[ArrangerViewFocus]] {
|
||||
fn layout (&self) -> &[&[Self::Item]] {
|
||||
use AppViewFocus::*;
|
||||
use ArrangerViewFocus::*;
|
||||
&[
|
||||
&[Transport, Transport],
|
||||
&[Arranger, Arranger],
|
||||
&[PhrasePool, PhraseEditor],
|
||||
&[Menu, Menu ],
|
||||
&[Content(Transport), Content(Transport) ],
|
||||
&[Content(Arranger), Content(Arranger) ],
|
||||
&[Content(PhrasePool), Content(PhraseEditor)],
|
||||
]
|
||||
}
|
||||
fn update_focus (&mut self) {
|
||||
use AppViewFocus::*;
|
||||
use ArrangerViewFocus::*;
|
||||
let focused = self.focused();
|
||||
self.focused =
|
||||
focused == ArrangerViewFocus::Arranger;
|
||||
self.sequencer.transport.focused =
|
||||
focused == ArrangerViewFocus::Transport;
|
||||
self.sequencer.phrases.focused =
|
||||
focused == ArrangerViewFocus::PhrasePool;
|
||||
self.sequencer.editor.focused =
|
||||
focused == ArrangerViewFocus::PhraseEditor;
|
||||
self.app.focused = focused == Content(Arranger);
|
||||
self.app.sequencer.transport.focused = focused == Content(Transport);
|
||||
self.app.sequencer.phrases.focused = focused == Content(PhrasePool);
|
||||
self.app.sequencer.editor.focused = focused == Content(PhraseEditor);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ pub enum PhrasePoolMode {
|
|||
}
|
||||
|
||||
impl<E: Engine> PhrasePoolView<E> {
|
||||
pub fn new (model: Vec<Arc<RwLock<Phrase>>>) -> Self {
|
||||
pub fn new (model: PhrasePoolModel) -> Self {
|
||||
Self {
|
||||
_engine: Default::default(),
|
||||
scroll: 0,
|
||||
|
|
|
|||
|
|
@ -11,32 +11,74 @@ pub enum SequencerFocus {
|
|||
PhraseEditor,
|
||||
}
|
||||
|
||||
/// Focus layout of sequencer app
|
||||
impl<E: Engine> FocusGrid for SequencerView<E> {
|
||||
type Item = SequencerFocus;
|
||||
impl FocusGrid for AppView<Tui, SequencerView<Tui>, SequencerViewCommand> {
|
||||
type Item = AppViewFocus<SequencerFocus>;
|
||||
fn cursor (&self) -> (usize, usize) {
|
||||
self.cursor
|
||||
}
|
||||
fn cursor_mut (&mut self) -> &mut (usize, usize) {
|
||||
&mut self.cursor
|
||||
}
|
||||
fn layout (&self) -> &[&[SequencerFocus]] { &[
|
||||
&[SequencerFocus::Transport],
|
||||
&[SequencerFocus::PhrasePool, SequencerFocus::PhraseEditor],
|
||||
] }
|
||||
fn focus_enter (&mut self) {
|
||||
self.entered = true
|
||||
let focused = self.focused();
|
||||
if !self.entered {
|
||||
self.entered = true;
|
||||
// TODO
|
||||
}
|
||||
}
|
||||
fn focus_exit (&mut self) {
|
||||
self.entered = false
|
||||
if self.entered {
|
||||
self.entered = false;
|
||||
// TODO
|
||||
}
|
||||
}
|
||||
fn entered (&self) -> Option<Self::Item> {
|
||||
if self.entered { Some(self.focused()) } else { None }
|
||||
if self.entered {
|
||||
Some(self.focused())
|
||||
} else {
|
||||
None
|
||||
}
|
||||
}
|
||||
fn layout (&self) -> &[&[Self::Item]] {
|
||||
use AppViewFocus::*;
|
||||
use SequencerFocus::*;
|
||||
&[
|
||||
&[Menu, Menu ],
|
||||
&[Content(Transport), Content(Transport) ],
|
||||
&[Content(PhrasePool), Content(PhraseEditor)],
|
||||
]
|
||||
}
|
||||
fn update_focus (&mut self) {
|
||||
let focused = self.focused();
|
||||
self.transport.focused = focused == SequencerFocus::Transport;
|
||||
self.phrases.focused = focused == SequencerFocus::PhrasePool;
|
||||
self.editor.focused = focused == SequencerFocus::PhraseEditor;
|
||||
// TODO
|
||||
}
|
||||
}
|
||||
|
||||
///// Focus layout of sequencer app
|
||||
//impl<E: Engine> FocusGrid for SequencerView<E> {
|
||||
//type Item = SequencerFocus;
|
||||
//fn cursor (&self) -> (usize, usize) {
|
||||
//self.cursor
|
||||
//}
|
||||
//fn cursor_mut (&mut self) -> &mut (usize, usize) {
|
||||
//&mut self.cursor
|
||||
//}
|
||||
//fn layout (&self) -> &[&[SequencerFocus]] { &[
|
||||
//&[SequencerFocus::Transport],
|
||||
//&[SequencerFocus::PhrasePool, SequencerFocus::PhraseEditor],
|
||||
//] }
|
||||
//fn focus_enter (&mut self) {
|
||||
//self.entered = true
|
||||
//}
|
||||
//fn focus_exit (&mut self) {
|
||||
//self.entered = false
|
||||
//}
|
||||
//fn entered (&self) -> Option<Self::Item> {
|
||||
//if self.entered { Some(self.focused()) } else { None }
|
||||
//}
|
||||
//fn update_focus (&mut self) {
|
||||
//let focused = self.focused();
|
||||
//self.transport.focused = focused == SequencerFocus::Transport;
|
||||
//self.phrases.focused = focused == SequencerFocus::PhrasePool;
|
||||
//self.editor.focused = focused == SequencerFocus::PhraseEditor;
|
||||
//}
|
||||
//}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue