mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-08 04:36:45 +01:00
56 lines
1.4 KiB
Rust
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
|
|
}
|
|
}
|