pub struct SelectInput { /* private fields */ }
Expand description
An option selection field.
§Examples
use tty_interface::Style;
use tty_form::{
step::CompoundStep,
control::{Control, SelectInput},
};
let mut step = CompoundStep::new();
SelectInput::new("Select favorite food:", vec![
("Pizza", "A supreme pizza."),
("Burgers", "A hamburger with cheese."),
("Fries", "Simple potato french-fries."),
]).add_to(&mut step);
Implementations§
Source§impl SelectInput
impl SelectInput
Sourcepub fn new(prompt: &str, options: Vec<(&str, &str)>) -> Self
pub fn new(prompt: &str, options: Vec<(&str, &str)>) -> Self
Create a new option-selection input with the specified prompt and options.
Examples found in repository?
examples/basic.rs (lines 25-33)
19fn execute() -> Result<String> {
20 let mut form = Form::new();
21
22 let mut commit_summary = CompoundStep::new();
23 commit_summary.set_max_line_length(80);
24
25 SelectInput::new(
26 "Select the commit type.",
27 vec![
28 ("feat", "implemented a new feature"),
29 ("bug", "fixed existing behavior"),
30 ("docs", "added documentation"),
31 ("chore", "non-source changes"),
32 ],
33 )
34 .add_to(&mut commit_summary);
35
36 let mut opening_paren = StaticText::new("(");
37 let mut closing_paren = StaticText::new(")");
38
39 let mut scope_input = TextInput::new("Enter the commit's scope.", true);
40
41 let empty_scope = scope_input.set_evaluation(Evaluation::IsEmpty);
42 opening_paren.set_dependency(empty_scope, Action::Hide);
43 closing_paren.set_dependency(empty_scope, Action::Hide);
44
45 let mut breaking_bang = StaticText::new("!");
46 let colon = StaticText::new(": ");
47
48 let description = TextInput::new("Enter the commit's description.", true);
49
50 let mut long_description = TextBlockStep::new("Enter a long-form commit description.");
51 long_description.set_margins(Some(1), Some(1));
52 long_description.set_max_line_length(100);
53
54 let mut breaking_step = YesNoStep::new(
55 "Is this commit a breaking change?",
56 "Enter a description of the breaking change.",
57 "BREAKING CHANGE",
58 );
59
60 let trailers = KeyValueStep::new("Enter any key-value trailers, such as tickets.");
61
62 let breaking_change = breaking_step.set_evaluation(Evaluation::Equal("Yes".to_string()));
63 breaking_bang.set_dependency(breaking_change, Action::Show);
64
65 opening_paren.add_to(&mut commit_summary);
66 scope_input.add_to(&mut commit_summary);
67 closing_paren.add_to(&mut commit_summary);
68 breaking_bang.add_to(&mut commit_summary);
69 colon.add_to(&mut commit_summary);
70 description.add_to(&mut commit_summary);
71 commit_summary.add_to(&mut form);
72 long_description.add_to(&mut form);
73 trailers.add_to(&mut form);
74 breaking_step.add_to(&mut form);
75
76 let mut stdout = stdout();
77 let mut stdin = StdinDevice;
78
79 let mut interface = Interface::new_relative(&mut stdout)?;
80
81 let result = form.execute(&mut interface, &mut stdin);
82 interface.exit()?;
83
84 let mut output = String::new();
85 match result {
86 Ok(value) => output = value,
87 Err(Error::Canceled) => println!("Form canceled."),
88 Err(err) => eprintln!("Unexpected error occurred: {:?}", err),
89 }
90
91 Ok(output)
92}
Sourcepub fn set_prompt(&mut self, prompt: &str)
pub fn set_prompt(&mut self, prompt: &str)
Update this input’s prompt text.
Sourcepub fn add_option(&mut self, option: SelectInputOption)
pub fn add_option(&mut self, option: SelectInputOption)
Add an option to this input’s list.
Sourcepub fn set_options(&mut self, options: Vec<SelectInputOption>)
pub fn set_options(&mut self, options: Vec<SelectInputOption>)
Set this input’s options.
Trait Implementations§
Source§impl Control for SelectInput
impl Control for SelectInput
Source§fn text(&self) -> (Segment, Option<u16>)
fn text(&self) -> (Segment, Option<u16>)
This control’s rendered contents and an optional offset for the cursor.
Source§fn drawer(&self) -> Option<DrawerContents>
fn drawer(&self) -> Option<DrawerContents>
This control’s drawer contents, if available.
Source§fn evaluation(&self) -> Option<(DependencyId, Evaluation)>
fn evaluation(&self) -> Option<(DependencyId, Evaluation)>
This control’s dependency evaluation which other controls may react to.
Source§fn dependency(&self) -> Option<(DependencyId, Action)>
fn dependency(&self) -> Option<(DependencyId, Action)>
This control’s dependency which it may react to.
Source§fn evaluate(&self, evaluation: &Evaluation) -> bool
fn evaluate(&self, evaluation: &Evaluation) -> bool
Perform an evaluation against this control’s current state.
Source§fn add_to(self, step: &mut CompoundStep)
fn add_to(self, step: &mut CompoundStep)
Finish configuration and add this control to the specified form step.
Auto Trait Implementations§
impl Freeze for SelectInput
impl RefUnwindSafe for SelectInput
impl Send for SelectInput
impl Sync for SelectInput
impl Unpin for SelectInput
impl UnwindSafe for SelectInput
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more