diff options
| author | Sam Anthony <sam@samanthony.xyz> | 2023-02-04 10:54:22 -0330 |
|---|---|---|
| committer | Sam Anthony <sam@samanthony.xyz> | 2023-02-04 10:54:22 -0330 |
| commit | a6425ae123f9a1492d380d860d74f4589d180879 (patch) | |
| tree | 11762b05c7830df8ca389a9b2c9605f7bf541822 | |
| parent | 0ba1f5aa16dd068c4355f9ea486ab5f92afb1104 (diff) | |
| download | pfc-a6425ae123f9a1492d380d860d74f4589d180879.zip | |
version number widget
| -rw-r--r-- | src/ui.rs | 17 |
1 files changed, 12 insertions, 5 deletions
@@ -6,8 +6,8 @@ use crossterm::{ use std::io; use tui::{ backend::{Backend, CrosstermBackend}, - layout::{Constraint, Direction, Layout}, - widgets::{List, ListItem, Paragraph}, + layout::{Alignment, Constraint, Direction, Layout}, + widgets::{List, ListItem, Paragraph, Widget}, Frame, Terminal, }; @@ -16,8 +16,9 @@ use crate::Calculator; impl Calculator { pub fn draw<B: Backend>(&self, f: &mut Frame<B>) { let chunks = layout(self.stack.len()).split(f.size()); - f.render_widget(stack_list(&self.stack), chunks[1]); - f.render_widget(Paragraph::new(self.input_buffer.as_str()), chunks[2]); + f.render_widget(version_number_widget(), chunks[0]); + f.render_widget(stack_widget(&self.stack), chunks[2]); + f.render_widget(Paragraph::new(self.input_buffer.as_str()), chunks[3]); } } @@ -48,6 +49,7 @@ fn layout(stack_size: usize) -> Layout { .direction(Direction::Vertical) .constraints( [ + Constraint::Length(1), Constraint::Max(u16::MAX), Constraint::Length(stack_size as u16), Constraint::Length(1), @@ -56,7 +58,7 @@ fn layout(stack_size: usize) -> Layout { ) } -fn stack_list(stack: &Vec<f64>) -> List { +fn stack_widget(stack: &Vec<f64>) -> impl Widget { List::new( stack .iter() @@ -64,3 +66,8 @@ fn stack_list(stack: &Vec<f64>) -> List { .collect::<Vec<ListItem>>(), ) } + +fn version_number_widget() -> impl Widget { + Paragraph::new(format!("pfc-{}", option_env!("CARGO_PKG_VERSION").unwrap())) + .alignment(Alignment::Center) +} |