Add some styling to pane_grid buttons

This commit is contained in:
Héctor Ramón Jiménez 2020-03-18 01:27:23 +01:00
parent 20b142e8e3
commit b8a035d2da

View File

@ -167,7 +167,7 @@ impl Content {
close,
} = self;
let button = |state, label, message| {
let button = |state, label, message, style| {
Button::new(
state,
Text::new(label)
@ -176,7 +176,9 @@ impl Content {
.size(16),
)
.width(Length::Fill)
.padding(8)
.on_press(message)
.style(style)
};
let mut controls = Column::new()
@ -186,16 +188,22 @@ impl Content {
split_horizontally,
"Split horizontally",
Message::Split(pane_grid::Axis::Horizontal, pane),
style::Button::Primary,
))
.push(button(
split_vertically,
"Split vertically",
Message::Split(pane_grid::Axis::Vertical, pane),
style::Button::Primary,
));
if total_panes > 1 {
controls =
controls.push(button(close, "Close", Message::Close(pane)));
controls = controls.push(button(
close,
"Close",
Message::Close(pane),
style::Button::Destructive,
));
}
let content = Scrollable::new(scroll)
@ -217,7 +225,7 @@ impl Content {
}
mod style {
use iced::{container, Background, Color};
use iced::{button, container, Background, Color, Vector};
pub struct Pane {
pub is_focused: bool,
@ -237,4 +245,39 @@ mod style {
}
}
}
pub enum Button {
Primary,
Destructive,
}
impl button::StyleSheet for Button {
fn active(&self) -> button::Style {
let color = match self {
Button::Primary => Color::from_rgb8(0x25, 0x7A, 0xFD),
Button::Destructive => Color::from_rgb(0.8, 0.2, 0.2),
};
button::Style {
background: None,
border_color: color,
border_radius: 5,
border_width: 1,
shadow_offset: Vector::new(0.0, 0.0),
text_color: color,
..button::Style::default()
}
}
fn hovered(&self) -> button::Style {
let active = self.active();
button::Style {
background: Some(Background::Color(active.border_color)),
text_color: Color::WHITE,
border_width: 0,
..active
}
}
}
}