keyfork-prompt: add bracketed paste
This commit is contained in:
parent
d7f33874f6
commit
3190ba97db
|
@ -10,6 +10,6 @@ default = ["mnemonic"]
|
|||
mnemonic = ["keyfork-mnemonic-util"]
|
||||
|
||||
[dependencies]
|
||||
crossterm = { version = "0.27.0", default-features = false, features = ["use-dev-tty", "events"] }
|
||||
crossterm = { version = "0.27.0", default-features = false, features = ["use-dev-tty", "events", "bracketed-paste"] }
|
||||
keyfork-mnemonic-util = { version = "0.1.0", path = "../keyfork-mnemonic-util", optional = true }
|
||||
thiserror = "1.0.51"
|
||||
|
|
|
@ -8,7 +8,7 @@ use keyfork_mnemonic_util::Wordlist;
|
|||
|
||||
use crossterm::{
|
||||
cursor,
|
||||
event::{read, Event, KeyCode, KeyModifiers},
|
||||
event::{read, DisableBracketedPaste, EnableBracketedPaste, Event, KeyCode, KeyModifiers},
|
||||
style::{Print, PrintStyledContent, Stylize},
|
||||
terminal,
|
||||
tty::IsTty,
|
||||
|
@ -77,6 +77,7 @@ where
|
|||
Ok(line)
|
||||
}
|
||||
|
||||
// TODO: create a wrapper for bracketed paste similar to RawMode
|
||||
#[cfg(feature = "mnemonic")]
|
||||
pub fn prompt_wordlist(&mut self, prompt: &str, wordlist: &Wordlist) -> Result<String> {
|
||||
let mut terminal = AlternateScreen::new(&mut self.write)?;
|
||||
|
@ -84,7 +85,8 @@ where
|
|||
|
||||
terminal
|
||||
.queue(terminal::Clear(terminal::ClearType::All))?
|
||||
.queue(cursor::MoveTo(0, 0))?;
|
||||
.queue(cursor::MoveTo(0, 0))?
|
||||
.queue(EnableBracketedPaste)?;
|
||||
let mut lines = prompt.lines().peekable();
|
||||
let mut prefix_length = 0;
|
||||
while let Some(line) = lines.next() {
|
||||
|
@ -107,6 +109,10 @@ where
|
|||
cols = new_cols;
|
||||
_rows = new_rows;
|
||||
}
|
||||
Event::Paste(mut p) => {
|
||||
p.retain(|c| c != '\n');
|
||||
input.push_str(&p);
|
||||
}
|
||||
Event::Key(k) => match k.code {
|
||||
KeyCode::Enter => {
|
||||
input.push('\n');
|
||||
|
@ -184,6 +190,8 @@ where
|
|||
terminal.flush()?;
|
||||
}
|
||||
|
||||
terminal.queue(DisableBracketedPaste)?.flush()?;
|
||||
|
||||
Ok(input)
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue