tek/crates/tek_sequencer/src/arranger_modal.rs

56 lines
1.4 KiB
Rust

use crate::*;
/// Appears on first run (i.e. if state dir is missing).
pub struct ArrangerRenameModal(bool, ArrangerFocus, String);
impl ArrangerRenameModal {
pub fn new (focus: ArrangerFocus, name: String) -> Self {
Self(false, focus, name)
}
}
render!(ArrangerRenameModal |self, buf, area| {
let y = area.y + area.height / 2;
Lozenge(Style::default().bold().white().dim()).draw(buf, Rect {
x: 1,
y: y - 1,
width: area.width - 2,
height: 3
})?;
let label = match self.1 {
ArrangerFocus::Mix => "Rename project:",
ArrangerFocus::Track(_) => "Rename track:",
ArrangerFocus::Scene(_) => "Rename scene:",
ArrangerFocus::Clip(_, _) => "Rename clip:",
};
label.blit(
buf, area.x + 3, y, Some(Style::default().not_bold().white().not_dim())
)?;
self.2.blit(
buf, area.x + 3 + label.len() as u16 + 1, y, Some(Style::default().bold().white().not_dim())
)?;
Ok(area)
});
handle!(ArrangerRenameModal |self, e| {
match e {
AppEvent::Input(Event::Key(k)) => {
if k.code == KeyCode::Esc {
self.exit();
} else {
todo!();
};
Ok(true)
},
_ => Ok(false),
}
});
impl Exit for ArrangerRenameModal {
fn exited (&self) -> bool {
self.0
}
fn exit (&mut self) {
self.0 = true
}
}