diff options
Diffstat (limited to 'src/gui/question.rs')
| -rw-r--r-- | src/gui/question.rs | 12 | 
1 files changed, 10 insertions, 2 deletions
| diff --git a/src/gui/question.rs b/src/gui/question.rs index 27759f8..8f9ee19 100644 --- a/src/gui/question.rs +++ b/src/gui/question.rs @@ -25,12 +25,17 @@ enum Answer {      Difficulty { difficulty: Difficulty },  } +pub enum Response { +    Aborted, +    Answered { difficulty: Difficulty }, +} +  pub fn ask<B: Backend>(      terminal: &mut Terminal<B>,      events: &Events,      title: &str,      card: &Card, -) -> Result<Difficulty> { +) -> Result<Response> {      let mut state = State {          input: String::new(),          answer: Answer::Write, @@ -155,6 +160,9 @@ pub fn ask<B: Backend>(                              state.input = format!("{}{}", words.join(" "), if words.len() > 0 {" " } else {""});                          }                      } +                    Key::Ctrl('c') => { +                        return Ok(Response::Aborted); +                    }                      _ => {}                  },                  Answer::Difficulty { @@ -171,7 +179,7 @@ pub fn ask<B: Backend>(                              state.answer = Answer::Difficulty { difficulty: *d }                          }                      } -                    Key::Char('\n') => return Ok(selected), +                    Key::Char('\n') => return Ok(Response::Answered { difficulty: selected }),                      _ => {}                  },              } | 
