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 }), _ => {} }, } |