diff options
| author | Sam Anthony <sam@samanthony.xyz> | 2023-02-09 10:30:17 -0330 |
|---|---|---|
| committer | Sam Anthony <sam@samanthony.xyz> | 2023-02-09 10:30:17 -0330 |
| commit | 18d2de963b04e26c597189f0ccfa0fbd81bd7059 (patch) | |
| tree | 663246493a24aabb71e75ea43da9c17a18d14fdd | |
| parent | 676e90b57e3a7fe96aa393c59a897bccff0ab8ec (diff) | |
| download | pfc-18d2de963b04e26c597189f0ccfa0fbd81bd7059.zip | |
trig function styling
| -rw-r--r-- | src/ui.rs | 25 |
1 files changed, 20 insertions, 5 deletions
@@ -7,6 +7,8 @@ use std::io; use tui::{ backend::{Backend, CrosstermBackend}, layout::{Alignment, Constraint, Direction, Layout, Rect}, + style::{Modifier, Style}, + text::{Span, Spans}, widgets::{Block, Borders, List, ListItem, Paragraph, Widget}, Frame, Terminal, }; @@ -15,16 +17,14 @@ use crate::Calculator; const WIDTH: u16 = 32; +const FUNCTIONS: [&str; 1] = ["sin"]; + impl Calculator { pub fn draw<B: Backend>(&self, f: &mut Frame<B>) { let chunks = layout(self.stack.len(), f.size()); f.render_widget(version_number_widget(), chunks[0]); f.render_widget(stack_widget(&self.stack), chunks[2]); - f.render_widget( - Paragraph::new(format!("> {}", self.input_buffer)) - .block(Block::default().borders(Borders::ALL)), - chunks[3], - ); + f.render_widget(input_buffer_widget(&self.input_buffer), chunks[3]); } } @@ -80,6 +80,21 @@ fn stack_widget(stack: &Vec<f64>) -> impl Widget { .block(Block::default().borders(Borders::ALL)) } +fn input_buffer_widget(input_buffer: &str) -> impl Widget { + Paragraph::new(Spans::from(vec![ + Span::raw(">"), + Span::styled( + format!(" {}", input_buffer), + if FUNCTIONS.contains(&input_buffer) { + Style::default().add_modifier(Modifier::BOLD) + } else { + Style::default() + }, + ), + ])) + .block(Block::default().borders(Borders::ALL)) +} + fn version_number_widget() -> impl Widget { Paragraph::new(format!("pfc-{}", option_env!("CARGO_PKG_VERSION").unwrap())) .alignment(Alignment::Center) |