Dialog

Struct Dialog 

Source
pub struct Dialog {
    pub open: bool,
    pub submitted: bool,
    pub working_input: String,
    pub submitted_input: String,
    /* private fields */
}
Expand description

The data structure for the dialog.

Fields§

§open: bool

Whether or not the dialog box is open.

§submitted: bool

Whether or not input has been submitted.

§working_input: String

The text being written into the dialog box when it’s open. This field can be used to pre-populate the dialog with a value before it is opened. It will be cleared when the user presses Esc or Enter.

§submitted_input: String

The text that has been written and is submitted for use when the user presses Enter. Any surrounding whitespace will be trimmed.

Implementations§

Source§

impl Dialog

Source

pub fn key_action(&mut self, key_code: &KeyCode)

Respond to key press.

Examples found in repository?
examples/basic.rs (line 87)
73fn run(
74    app: &mut App,
75    terminal: &mut Terminal<CrosstermBackend<Stdout>>,
76) -> Result<(), std::io::Error> {
77    while !app.exit {
78        // Redraw the frame every time.
79        terminal.draw(|frame| render(frame, app))?;
80
81        // Handle user input.
82        match event::read()? {
83            Event::Key(key_event) if key_event.kind == KeyEventKind::Press => {
84                // Pass all `key_event.code`s to a dialog if open.
85                // (The dialog handles closing itself, when the user presses `Enter` or `Esc`.)
86                if app.dialog.open {
87                    app.dialog.key_action(&key_event.code);
88                    if app.dialog.submitted {
89                        // Here is where you'd do something more significant.
90                        app.text = app.dialog.submitted_input.clone();
91                    }
92                // Otherwise handle them here.
93                } else {
94                    match key_event.code {
95                        KeyCode::Char('q') => app.exit = true,
96                        // Your app needs to open the dialog.
97                        KeyCode::Char('d') => app.dialog.open = true,
98                        _ => (),
99                    }
100                }
101            }
102            _ => (),
103        };
104    }
105    Ok(())
106}
Source

pub fn title_top(&mut self, title: &str) -> Self

Set the top title of the block surrounding the widget.

If the method is not used, there will be no top title.

Examples found in repository?
examples/basic.rs (line 137)
108fn render(frame: &mut Frame, app: &mut App) {
109    // Layout the rectangles of the UI.
110    let horizontal = Layout::horizontal([Constraint::Fill(1), Constraint::Length(SIDEBAR_SIZE)]);
111
112    let [left, right] = horizontal.areas(frame.area());
113
114    // Left - main content.
115    let main_block = Block::default()
116        .title_top(Line::from(" tui-dialog example ").bold().centered())
117        .borders(Borders::ALL)
118        .border_set(border::THICK)
119        .padding(Padding::horizontal(1));
120
121    // Right - Controls menu
122    let controls_block = Block::default()
123        .title_top(Line::from(" Controls").centered().bold())
124        .borders(Borders::ALL)
125        .border_set(border::THICK);
126
127    let controls_content: Vec<Line<'_>> = vec![
128        vec!["d".blue(), " Show dialog".into()].into(),
129        vec!["q".blue(), " Quit".into()].into(),
130    ];
131
132    let controls = Paragraph::new(controls_content).block(controls_block);
133    frame.render_widget(controls, right);
134    frame.render_widget(Paragraph::new(app.text.clone()).block(main_block), left);
135
136    let dialog_area = centered_rect(frame.area(), 45, 5, -(SIDEBAR_SIZE as i16), 0);
137    frame.render_widget(app.dialog.title_top("Enter text:"), dialog_area);
138}
Source

pub fn title_bottom(&mut self, title: &str) -> Self

Set the bottom title of the block surrounding the widget.

If the method is not used, the bottom title will default to BOTTOM_TITLE.

Source

pub fn borders(&mut self, borders: Borders) -> Self

Set borders of the block surrounding the widget.

If the method is not used, the borders will default to ratatui::widgets::Borders::ALL.

Source

pub fn style(&mut self, style: Style) -> Self

Set the style of the widget.

If the method is not used, the style will be the default with a ratatui::style::Color::DarkGray background.

Trait Implementations§

Source§

impl Clone for Dialog

Source§

fn clone(&self) -> Dialog

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Default for Dialog

Source§

fn default() -> Dialog

Returns the “default value” for a type. Read more
Source§

impl PartialEq for Dialog

Source§

fn eq(&self, other: &Dialog) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Widget for Dialog

Source§

fn render(self, area: Rect, buf: &mut Buffer)

Draws the current state of the widget in the given buffer. That is the only method required to implement a custom widget.
Source§

impl StructuralPartialEq for Dialog

Auto Trait Implementations§

§

impl Freeze for Dialog

§

impl RefUnwindSafe for Dialog

§

impl Send for Dialog

§

impl Sync for Dialog

§

impl Unpin for Dialog

§

impl UnwindSafe for Dialog

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.