provide transport in arranger

This commit is contained in:
🪞👃🪞 2024-10-05 11:49:04 +03:00
parent d821787fcf
commit 9b8a14df0e
3 changed files with 21 additions and 19 deletions

View file

@ -24,8 +24,13 @@ pub struct ArrangerCli {
impl ArrangerCli { impl ArrangerCli {
/// Run the arranger TUI from CLI arguments. /// Run the arranger TUI from CLI arguments.
fn run (&self) -> Usually<()> { fn run (&self) -> Usually<()> {
let jack = JackClient::Inactive(
Client::new("tek_arranger", ClientOptions::NO_START_SERVER)?.0
);
let mut arranger = Arranger::new(""); let mut arranger = Arranger::new("");
let mut transport = self.transport.then_some(TransportToolbar::new(None)); let mut transport = self.transport.then_some(
TransportToolbar::new(Some(jack.transport()))
);
if let Some(name) = self.name.as_ref() { if let Some(name) = self.name.as_ref() {
*arranger.name.write().unwrap() = name.clone(); *arranger.name.write().unwrap() = name.clone();
} }

View file

@ -1,6 +1,20 @@
include!("lib.rs"); include!("lib.rs");
/// Application entrypoint. /// Application entrypoint.
pub fn main () -> Usually<()> { pub fn main () -> Usually<()> {
Tui::run(TransportToolbar::standalone()?)?; let jack = JackClient::Inactive(
Client::new("tek_transport", ClientOptions::NO_START_SERVER)?.0
);
let mut transport = TransportToolbar::new(Some(jack.transport()));
transport.focused = true;
let transport = Arc::new(RwLock::new(transport));
transport.write().unwrap().jack = Some(
jack.activate(
&transport.clone(),
|state: &Arc<RwLock<TransportToolbar<Tui>>>, client, scope| {
state.write().unwrap().process(client, scope)
}
)?
);
Tui::run(transport)?;
Ok(()) Ok(())
} }

View file

@ -27,23 +27,6 @@ pub struct TransportToolbar<E: Engine> {
} }
impl<E: Engine> TransportToolbar<E> { impl<E: Engine> TransportToolbar<E> {
pub fn standalone () -> Usually<Arc<RwLock<Self>>> where Self: 'static {
let jack = JackClient::Inactive(
Client::new("tek_transport", ClientOptions::NO_START_SERVER)?.0
);
let mut transport = Self::new(Some(jack.transport()));
transport.focused = true;
let transport = Arc::new(RwLock::new(transport));
transport.write().unwrap().jack = Some(
jack.activate(
&transport.clone(),
|state: &Arc<RwLock<TransportToolbar<E>>>, client, scope| {
state.write().unwrap().process(client, scope)
}
)?
);
Ok(transport)
}
pub fn new (transport: Option<Transport>) -> Self { pub fn new (transport: Option<Transport>) -> Self {
let timebase = Arc::new(Timebase::default()); let timebase = Arc::new(Timebase::default());
Self { Self {