use serde::{Deserialize, Serialize};
use crate::*;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum DialogEvent {
ActivateModal,
EnterPressed,
EscPressed,
}
impl DialogEvent {
pub fn try_from(input_event: &InputEvent, maybe_modal_keypress: Option<KeyPress>) -> Option<Self> {
if let InputEvent::Keyboard(keypress) = input_event {
if let Some(modal_keypress) = maybe_modal_keypress {
if keypress == &modal_keypress {
return Some(Self::ActivateModal);
}
}
match keypress {
KeyPress::Plain {
key: Key::SpecialKey(SpecialKey::Enter),
} => {
return Some(Self::EnterPressed);
}
KeyPress::Plain {
key: Key::SpecialKey(SpecialKey::Esc),
} => {
return Some(Self::EscPressed);
}
_ => {}
}
}
None
}
}