|
1 |
| -use std::{io::stdout, thread::sleep, time::Duration}; |
2 |
| - |
3 |
| -use anyhow::Result; |
4 |
| -use crossterm::{ |
5 |
| - terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, |
6 |
| - ExecutableCommand, |
7 |
| -}; |
| 1 | +use color_eyre::Result; |
8 | 2 | use ratatui::prelude::*;
|
9 | 3 | use tui_big_text::{BigText, PixelSize};
|
10 | 4 |
|
| 5 | +mod common; |
| 6 | + |
11 | 7 | fn main() -> Result<()> {
|
12 |
| - stdout().execute(EnterAlternateScreen)?; |
13 |
| - enable_raw_mode()?; |
14 |
| - let backend = CrosstermBackend::new(stdout()); |
15 |
| - let mut terminal = Terminal::new(backend)?; |
16 |
| - terminal.clear()?; |
17 |
| - terminal.draw(|frame| render(frame).expect("failed to render"))?; |
18 |
| - sleep(Duration::from_secs(5)); |
19 |
| - terminal.clear()?; |
20 |
| - stdout().execute(LeaveAlternateScreen)?; |
21 |
| - disable_raw_mode()?; |
| 8 | + color_eyre::install()?; |
| 9 | + common::run(render)?; |
22 | 10 | Ok(())
|
23 | 11 | }
|
24 | 12 |
|
25 | 13 | fn render(frame: &mut Frame) -> Result<()> {
|
| 14 | + let title = Line::from("tui-big-text pixel size demo. Press 'q' to quit") |
| 15 | + .centered() |
| 16 | + .cyan(); |
| 17 | + |
26 | 18 | let full_size_text = BigText::builder()
|
27 | 19 | .pixel_size(PixelSize::Full)
|
28 | 20 | .lines(vec!["FullSize".white().into()])
|
@@ -53,13 +45,15 @@ fn render(frame: &mut Frame) -> Result<()> {
|
53 | 45 | .lines(vec!["Sextant".cyan().into(), " 1/2*1/3".cyan().into()])
|
54 | 46 | .build()?;
|
55 | 47 |
|
56 |
| - // Setup layout for 6 blocks |
| 48 | + // Setup layout for the title and 6 blocks |
57 | 49 | use Constraint::*;
|
58 |
| - let [full, half_height, middle, bottom] = |
59 |
| - Layout::vertical([Length(8), Length(4), Length(8), Length(6)]).areas(frame.size()); |
| 50 | + let [top, full, half_height, middle, bottom] = |
| 51 | + Layout::vertical([Length(2), Length(8), Length(4), Length(8), Length(6)]) |
| 52 | + .areas(frame.size()); |
60 | 53 | let [half_wide, quadrant] = Layout::horizontal([Length(32), Length(32)]).areas(middle);
|
61 | 54 | let [third_height, sextant] = Layout::horizontal([Length(32), Length(32)]).areas(bottom);
|
62 | 55 |
|
| 56 | + frame.render_widget(title, top); |
63 | 57 | frame.render_widget(full_size_text, full);
|
64 | 58 | frame.render_widget(half_height_text, half_height);
|
65 | 59 | frame.render_widget(half_wide_text, half_wide);
|
|
0 commit comments