instant rename preview

This commit is contained in:
🪞👃🪞 2024-10-11 14:35:43 +03:00
parent 1bed8aa72f
commit 9a0c9d9459

View file

@ -48,9 +48,9 @@ impl Content for PhrasePool<Tui> {
(i, phrase) in self.phrases.iter().enumerate() => Layers::new(|add|{
let Phrase { ref name, color, .. } = *phrase.read().unwrap();
let row1 = format!(" {i}");
let row2 = if let Some(PhrasePoolMode::Rename(phrase, ref new_name)) = self.mode {
let row2 = if let Some(PhrasePoolMode::Rename(phrase, _)) = self.mode {
if self.focused && i == phrase {
format!(" {new_name}")
format!(" {}", name.read().unwrap())
} else {
format!(" {}", name.read().unwrap())
}
@ -85,13 +85,21 @@ impl Content for PhrasePool<Tui> {
impl Handle<Tui> for PhrasePool<Tui> {
fn handle (&mut self, from: &TuiInput) -> Perhaps<bool> {
match self.mode {
Some(PhrasePoolMode::Rename(phrase, ref mut new_name)) => match from.event() {
key!(KeyCode::Backspace) => { new_name.pop(); },
key!(KeyCode::Char(c)) => { new_name.push(*c); },
key!(Shift-KeyCode::Char(c)) => { new_name.push(*c); },
key!(KeyCode::Esc) => { self.mode = None; },
Some(PhrasePoolMode::Rename(phrase, ref mut old_name)) => match from.event() {
key!(KeyCode::Backspace) => {
self.phrases[phrase].read().unwrap().name.write().unwrap().pop();
},
key!(KeyCode::Char(c)) => {
self.phrases[phrase].read().unwrap().name.write().unwrap().push(*c);
},
key!(Shift-KeyCode::Char(c)) => {
self.phrases[phrase].read().unwrap().name.write().unwrap().push(*c);
},
key!(KeyCode::Esc) => {
*self.phrases[phrase].read().unwrap().name.write().unwrap() = old_name.clone();
self.mode = None;
},
key!(KeyCode::Enter) => {
*self.phrases[phrase].read().unwrap().name.write().unwrap() = new_name.clone();
self.mode = None;
},
_ => return Ok(None)