use crate::*; /// Create app state from JACK handle. impl TryFrom<&Arc>> for TransportTui { type Error = Box; fn try_from (jack: &Arc>) -> Usually { Ok(Self { metronome: false, transport: jack.read().unwrap().transport(), jack: jack.clone(), focused: false, focus: TransportFocus::PlayPause, size: Measure::new(), }) } } impl TryFrom<&Arc>> for SequencerTui { type Error = Box; fn try_from (jack: &Arc>) -> Usually { Ok(Self::new(SequencerTui { phrases: vec![], metronome: false, transport: jack.read().unwrap().transport(), jack: jack.clone(), focused: false, focus: TransportFocus::PlayPause, size: Measure::new(), }.into(), None, None)) } } impl TryFrom<&Arc>> for ArrangerTui { type Error = Box; fn try_from (jack: &Arc>) -> Usually { Ok(Self { name: Arc::new(RwLock::new(String::new())), phrases: vec![], phrase: 0, scenes: vec![], tracks: vec![], metronome: false, playing: None.into(), started: None.into(), transport: jack.read().unwrap().transport(), current: Instant::default(), jack: jack.clone(), selected: ArrangerSelection::Clip(0, 0), mode: ArrangerMode::Vertical(2), color: Color::Rgb(28, 35, 25).into(), size: Measure::new(), entered: false, quant: Default::default(), sync: Default::default(), splits: [20, 20], note_buf: vec![], midi_buf: vec![], cursor: (0, 0), entered: false, history: vec![], size: Measure::new(), menu_bar: None, status_bar: None, }) } }