Render a loading/status message on the terminal (stays in alternate screen)
(
terminal: &mut Terminal<CrosstermBackend<io::Stdout>>,
message: &str,
)
| 72 | |
| 73 | /// Render a loading/status message on the terminal (stays in alternate screen) |
| 74 | pub fn render_loading( |
| 75 | terminal: &mut Terminal<CrosstermBackend<io::Stdout>>, |
| 76 | message: &str, |
| 77 | ) -> Result<()> { |
| 78 | let msg = message.to_string(); |
| 79 | terminal.draw(|frame| { |
| 80 | let area = frame.area(); |
| 81 | let chunks = Layout::default() |
| 82 | .direction(Direction::Vertical) |
| 83 | .constraints([ |
| 84 | Constraint::Percentage(45), |
| 85 | Constraint::Length(3), |
| 86 | Constraint::Percentage(45), |
| 87 | ]) |
| 88 | .split(area); |
| 89 | |
| 90 | let text = vec![Line::from(Span::styled( |
| 91 | msg, |
| 92 | Style::default() |
| 93 | .fg(Color::Cyan) |
| 94 | .add_modifier(Modifier::BOLD), |
| 95 | ))]; |
| 96 | |
| 97 | let paragraph = Paragraph::new(text).alignment(Alignment::Center); |
| 98 | frame.render_widget(paragraph, chunks[1]); |
| 99 | })?; |
| 100 | Ok(()) |
| 101 | } |
no outgoing calls
no test coverage detected