mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-10 21:56:42 +01:00
implement sequencer focus; auto update_focus
This commit is contained in:
parent
9f15f8fff9
commit
3bf475d15e
8 changed files with 119 additions and 160 deletions
|
|
@ -7,30 +7,22 @@ pub fn main () -> Usually<()> { ArrangerCli::parse().run() }
|
|||
#[command(version, about, long_about = None)]
|
||||
pub struct ArrangerCli {
|
||||
/// Name of JACK client
|
||||
#[arg(short, long)]
|
||||
name: Option<String>,
|
||||
#[arg(short, long)] name: Option<String>,
|
||||
/// Whether to include a transport toolbar (default: true)
|
||||
#[arg(short, long, default_value_t = true)]
|
||||
transport: bool,
|
||||
#[arg(short, long, default_value_t = true)] transport: bool,
|
||||
/// Number of tracks
|
||||
#[arg(short = 'x', long, default_value_t = 8)]
|
||||
tracks: usize,
|
||||
#[arg(short = 'x', long, default_value_t = 8)] tracks: usize,
|
||||
/// Number of scenes
|
||||
#[arg(short, long, default_value_t = 8)]
|
||||
scenes: usize,
|
||||
#[arg(short, long, default_value_t = 8)] scenes: usize,
|
||||
}
|
||||
|
||||
impl ArrangerCli {
|
||||
/// Run the arranger TUI from CLI arguments.
|
||||
fn run (&self) -> Usually<()> {
|
||||
let jack = JackClient::Inactive(
|
||||
Client::new("tek_arranger", ClientOptions::NO_START_SERVER)?.0
|
||||
);
|
||||
let jack_transport = jack.transport();
|
||||
let mut transport = TransportToolbar::new(Some(jack_transport));
|
||||
transport.set_focused(true);
|
||||
let transport = Arc::new(RwLock::new(transport));
|
||||
let phrases = Arc::new(RwLock::new(PhrasePool::new()));
|
||||
let jack = Client::new("tek_arranger", ClientOptions::NO_START_SERVER)?.0;
|
||||
let jack = JackClient::Inactive(jack);
|
||||
let transport = Arc::new(RwLock::new(TransportToolbar::new(Some(jack.transport()))));
|
||||
let phrases = Arc::new(RwLock::new(PhrasePool::new()));
|
||||
let mut arrangement = Arrangement::new("", &phrases);
|
||||
if let Some(name) = self.name.as_ref() {
|
||||
*arrangement.name.write().unwrap() = name.clone();
|
||||
|
|
@ -57,7 +49,7 @@ impl ArrangerCli {
|
|||
}
|
||||
)?
|
||||
);
|
||||
Tui::run(Arc::new(RwLock::new(Arranger {
|
||||
let mut app = Arranger {
|
||||
focus_cursor: (0, 1),
|
||||
transport: self.transport.then_some(transport),
|
||||
show_sequencer: Some(tek_core::Direction::Down),
|
||||
|
|
@ -65,7 +57,9 @@ impl ArrangerCli {
|
|||
editor: PhraseEditor::new(),
|
||||
arrangement,
|
||||
phrases,
|
||||
})))?;
|
||||
};
|
||||
app.update_focus();
|
||||
Tui::run(Arc::new(RwLock::new(app)))?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue