use crate::*; /// Create app state from JACK handle. impl TryFrom<&Arc>> for TransportTui { type Error = Box; fn try_from (jack: &Arc>) -> Usually { Ok(Self { jack: jack.clone(), clock: ClockModel::from(&Arc::new(jack.read().unwrap().transport())), size: Measure::new(), cursor: (0, 0), focus: FocusState::Entered(AppFocus::Content(TransportFocus::Bpm)) }) } } impl TryFrom<&Arc>> for SequencerTui { type Error = Box; fn try_from (jack: &Arc>) -> Usually { let clock = ClockModel::from(&Arc::new(jack.read().unwrap().transport())); Ok(Self { jack: jack.clone(), phrases: PhrasesModel::default(), player: PhrasePlayerModel::from(&clock), editor: PhraseEditorModel::default(), size: Measure::new(), cursor: (0, 0), entered: false, split: 20, midi_buf: vec![vec![];65536], note_buf: vec![], clock, focus: FocusState::Entered(AppFocus::Content(SequencerFocus::Transport(TransportFocus::Bpm))), perf: PerfModel::default(), }) } } impl TryFrom<&Arc>> for ArrangerTui { type Error = Box; fn try_from (jack: &Arc>) -> Usually { Ok(Self { jack: jack.clone(), clock: ClockModel::from(&Arc::new(jack.read().unwrap().transport())), phrases: PhrasesModel::default(), editor: PhraseEditorModel::default(), selected: ArrangerSelection::Clip(0, 0), scenes: vec![], tracks: vec![], color: Color::Rgb(28, 35, 25).into(), history: vec![], mode: ArrangerMode::Vertical(2), name: Arc::new(RwLock::new(String::new())), size: Measure::new(), cursor: (0, 0), splits: [20, 20], entered: false, menu_bar: None, status_bar: None, midi_buf: vec![vec![];65536], note_buf: vec![], focus: FocusState::Entered(AppFocus::Content(ArrangerFocus::Transport(TransportFocus::Bpm))), perf: PerfModel::default(), }) } }