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:
@@ -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()
|
||||
}
|
||||
Reference in New Issue
Block a user