Begin to split out display module

Move the display to a dedicated module so that things can begin to DRY
out
This commit is contained in:
Greg Hellings
2024-10-16 15:44:50 -05:00
parent 529a1be7df
commit 0904dce763
4 changed files with 56 additions and 21 deletions
+43
View File
@@ -0,0 +1,43 @@
use iced::{border::Radius, widget::{button, text}, Background, Border, Color, Shadow, Theme};
use super::super::cell::Cell;
use super::Message;
const LIGHT_GRAY: Color = Color {
r: 0.5,
g: 0.5,
b: 0.5,
a: 1.0,
};
pub fn widget(cell: &Cell) -> iced::Element<Message> {
let display = match cell.value() {
Some(v) => v.to_string(),
None => "?".to_string(),
};
button(text(display))
.style(|theme: &Theme, status| {
let palette = theme.palette();
let mut border = Border::default().color(LIGHT_GRAY);
border.width = 1.0;
match status {
button::Status::Active => {
button::Style{
background: Some(Background::from(palette.background)),
text_color: palette.text,
border,
shadow: Shadow::default(),
}
}
_ => {
let mut style = button::primary(theme, status);
style.border.radius = Radius::new(0);
style
}
}
})
.height(50)
.width(50)
.on_press(Message::Pressed)
.into()
}