fix renaming of duplicates; remove Arranger::modal

This commit is contained in:
🪞👃🪞 2024-10-11 16:19:06 +03:00
parent de4797ab52
commit f500c717a2
5 changed files with 44 additions and 140 deletions

View file

@ -50,12 +50,12 @@ impl Content for PhrasePool<Tui> {
let row1 = format!(" {i}");
let row2 = if let Some(PhrasePoolMode::Rename(phrase, _)) = self.mode {
if self.focused && i == phrase {
format!(" {}", name.read().unwrap())
format!(" {}", name)
} else {
format!(" {}", name.read().unwrap())
format!(" {}", name)
}
} else {
format!(" {}", name.read().unwrap())
format!(" {}", name)
};
add(&col!(row1, row2).fill_x().bg(if i == self.phrase {
color //Color::Rgb(40, 50, 30)
@ -85,24 +85,16 @@ 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 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.mode = None;
},
_ => return Ok(None)
Some(PhrasePoolMode::Rename(phrase, ref mut old_name)) => {
let mut phrase = self.phrases[phrase].write().unwrap();
match from.event() {
key!(KeyCode::Backspace) => { phrase.name.pop(); },
key!(KeyCode::Char(c)) => { phrase.name.push(*c); },
key!(Shift-KeyCode::Char(c)) => { phrase.name.push(*c); },
key!(KeyCode::Esc) => { phrase.name = old_name.clone(); self.mode = None; },
key!(KeyCode::Enter) => { self.mode = None; },
_ => return Ok(None)
}
},
None => match from.event() {
key!(KeyCode::Up) => self.phrase = if self.phrase > 0 {
@ -115,14 +107,14 @@ impl Handle<Tui> for PhrasePool<Tui> {
},
key!(KeyCode::Char('a')) => { // append new
let mut phrase = Phrase::default();
phrase.name = Arc::new(RwLock::new("(no name)".to_string()));
phrase.name = String::from("(no name)");
phrase.color = random_color();
self.phrases.push(Arc::new(RwLock::new(phrase)));
self.phrase = self.phrases.len() - 1;
},
key!(KeyCode::Char('i')) => { // insert new
let mut phrase = Phrase::default();
phrase.name = Arc::new(RwLock::new("(no name)".to_string()));
phrase.name = String::from("(no name)");
phrase.color = random_color();
self.phrases.insert(self.phrase + 1, Arc::new(RwLock::new(phrase)));
self.phrase += 1;
@ -138,10 +130,7 @@ impl Handle<Tui> for PhrasePool<Tui> {
},
key!(KeyCode::Char('n')) => { // change name
let phrase = self.phrases[self.phrase].read().unwrap();
self.mode = Some(PhrasePoolMode::Rename(
self.phrase,
phrase.name.read().unwrap().clone()
));
self.mode = Some(PhrasePoolMode::Rename(self.phrase, phrase.name.clone()));
},
_ => return Ok(None),
}