From 18d2de963b04e26c597189f0ccfa0fbd81bd7059 Mon Sep 17 00:00:00 2001 From: Sam Anthony Date: Thu, 9 Feb 2023 10:30:17 -0330 Subject: trig function styling --- src/ui.rs | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/ui.rs b/src/ui.rs index 0aa1a2b..7222935 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -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(&self, f: &mut Frame) { 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) -> 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) -- cgit v1.2.3