mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-07 04:06:45 +01:00
67 lines
2.2 KiB
Rust
67 lines
2.2 KiB
Rust
use crate::*;
|
|
|
|
/// Create app state from JACK handle.
|
|
impl TryFrom<&Arc<RwLock<JackClient>>> for TransportTui {
|
|
type Error = Box<dyn std::error::Error>;
|
|
fn try_from (jack: &Arc<RwLock<JackClient>>) -> Usually<Self> {
|
|
Ok(Self {
|
|
metronome: false,
|
|
transport: jack.read().unwrap().transport(),
|
|
jack: jack.clone(),
|
|
focused: false,
|
|
focus: TransportFocus::PlayPause,
|
|
size: Measure::new(),
|
|
})
|
|
}
|
|
}
|
|
|
|
impl TryFrom<&Arc<RwLock<JackClient>>> for SequencerTui {
|
|
type Error = Box<dyn std::error::Error>;
|
|
fn try_from (jack: &Arc<RwLock<JackClient>>) -> Usually<Self> {
|
|
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<RwLock<JackClient>>> for ArrangerTui {
|
|
type Error = Box<dyn std::error::Error>;
|
|
fn try_from (jack: &Arc<RwLock<JackClient>>) -> Usually<Self> {
|
|
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,
|
|
})
|
|
}
|
|
}
|
|
|