Skip to main content

md_tui/boxes/
errorbox.rs

1use ratatui::{
2    buffer::Buffer,
3    layout::{Alignment, Rect},
4    widgets::{Block, Borders, Paragraph, Widget, Wrap},
5};
6
7#[derive(Debug, Clone)]
8pub struct ErrorBox {
9    message: String,
10}
11
12impl ErrorBox {
13    #[must_use]
14    pub fn new(message: String) -> Self {
15        Self { message }
16    }
17
18    #[must_use]
19    pub fn dimensions(&self) -> (u16, u16) {
20        ((self.message.len() / 30) as u16 + 4, 30)
21    }
22
23    pub fn set_message(&mut self, message: String) {
24        self.message = message;
25    }
26}
27
28impl Default for ErrorBox {
29    fn default() -> Self {
30        Self::new(String::new())
31    }
32}
33
34impl Widget for ErrorBox {
35    fn render(self, area: Rect, buf: &mut Buffer) {
36        let paragraph = Paragraph::new(self.message)
37            .block(Block::default().borders(Borders::ALL))
38            .wrap(Wrap { trim: true })
39            .alignment(Alignment::Center);
40        paragraph.render(area, buf);
41    }
42}