1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
extern crate crossterm; use crossterm::event::{poll, read, Event, KeyCode}; extern crate std; use std::time::Duration; use crate::log; use crate::events::UserEvent; use crate::errors::UserError; pub fn catch_events(log: &mut log::Log) -> (UserEvent, UserError) { if poll(Duration::from_nanos(1)).unwrap() { match read().unwrap() { Event::Key(key_event) => { if key_event.modifiers.is_empty() { match key_event.code { KeyCode::Enter => { log.generationnumber_resetcursor(); log.texturessettings_setgenerationnumber(); return (UserEvent::Generate, UserError::ResizeCheck) }, KeyCode::Esc => { log.generationnumber_resetcursor(); return (UserEvent::Continue, UserError::ResizeCheck) } KeyCode::Left => { log.generationnumber_cursorleft(); }, KeyCode::Right => { log.generationnumber_cursorright(); }, KeyCode::Char(n) if n.is_ascii_digit() => { log.generationnumber_setvalue(n); }, _ => (), } } }, Event::Resize(_, _) => { return (UserEvent::SetGenerationNumber, UserError::ResizeCheck) }, _ => {}, } } (UserEvent::SetGenerationNumber, UserError::NoneError) }