You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
phetch/src/ui/action.rs

37 lines
1.6 KiB
Rust

use crate::ui::Key;
use std::fmt;
5 years ago
pub enum Action {
None, // do nothing
Open(String, String), // open(title, url)
Keypress(Key), // unknown keypress
Redraw, // redraw everything
5 years ago
Draw(String), // draw something on screen
Status(String), // set the "status" line to something
Prompt(String, Box<dyn FnOnce(String) -> Action>), // query string, callback on success
5 years ago
List(Vec<Action>), // do more than one action
Error(String), // error message
5 years ago
}
impl fmt::Debug for Action {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Action::None => write!(f, "None"),
Action::Open(title, url) => write!(f, "Open: {}, {}", title, url),
Action::Keypress(key) => write!(f, "Keypress: {:?}", key),
Action::Redraw => write!(f, "Redraw"),
Action::Draw(s) => write!(f, "Draw: {:?}", s),
Action::Status(s) => write!(f, "Status: {}", s),
Action::Prompt(s, _) => write!(f, "Prompt: {}", s),
Action::List(li) => {
write!(f, "List: \n");
for a in li {
write!(f, "{:?}", a);
}
Ok(())
}
Action::Error(s) => write!(f, "Error: {}", s),
}
}
}