use unicode_width::UnicodeWidthChar;
+use super::activity_stack::UtilityActivity;
use super::client::Client;
use super::coloured_string::ColouredString;
use super::tui::{
prompt: ColouredString,
promptwidth: usize,
ed: SingleLineEditor,
+ result: Box<dyn Fn(&str) -> LogicalAction>,
}
impl BottomLineEditorOverlay {
- fn new(prompt: ColouredString) -> Self {
+ fn new(prompt: ColouredString, result: Box<dyn Fn(&str) -> LogicalAction>)
+ -> Self
+ {
let promptwidth = prompt.width();
BottomLineEditorOverlay {
prompt: prompt,
promptwidth,
ed: SingleLineEditor::new(),
+ result: result,
}
}
}
LogicalAction
{
if self.ed.handle_keypress(key) {
- LogicalAction::Beep // FIXME: do something!
+ (self.result)(&self.ed.core.text)
} else {
LogicalAction::Nothing
}
pub fn get_user_to_examine() -> Box<dyn ActivityState> {
Box::new(BottomLineEditorOverlay::new(
- ColouredString::plain("Examine User: ")))
+ ColouredString::plain("Examine User: "),
+ Box::new(move |s| LogicalAction::Goto(
+ UtilityActivity::ExamineUser(s.to_owned()).into()))
+ ))
}