aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2023-02-09 10:30:17 -0330
committerSam Anthony <sam@samanthony.xyz>2023-02-09 10:30:17 -0330
commit18d2de963b04e26c597189f0ccfa0fbd81bd7059 (patch)
tree663246493a24aabb71e75ea43da9c17a18d14fdd
parent676e90b57e3a7fe96aa393c59a897bccff0ab8ec (diff)
downloadpfc-18d2de963b04e26c597189f0ccfa0fbd81bd7059.zip
trig function styling
-rw-r--r--src/ui.rs25
1 files changed, 20 insertions, 5 deletions
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<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)