From 94383d82a5d080a28de025fadc6b7ba27e37927d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor=20Ram=C3=B3n=20Jim=C3=A9nez?= Date: Fri, 10 Jul 2020 07:41:31 +0200 Subject: [PATCH] Style `PickList` in `game_of_life` example --- examples/game_of_life/src/main.rs | 17 +++++---- examples/game_of_life/src/preset.rs | 18 +++++----- examples/game_of_life/src/style.rs | 56 ++++++++++++++++++++++++++++- 3 files changed, 75 insertions(+), 16 deletions(-) diff --git a/examples/game_of_life/src/main.rs b/examples/game_of_life/src/main.rs index 4663ae72..27d4eec1 100644 --- a/examples/game_of_life/src/main.rs +++ b/examples/game_of_life/src/main.rs @@ -842,12 +842,17 @@ impl Controls { .spacing(5) .text_size(16), ) - .push(PickList::new( - &mut self.preset_list, - preset::ALL, - Some(preset), - Message::PresetPicked, - )) + .push( + PickList::new( + &mut self.preset_list, + preset::ALL, + Some(preset), + Message::PresetPicked, + ) + .padding(8) + .text_size(16) + .style(style::PickList), + ) .push( Button::new(&mut self.clear_button, Text::new("Clear")) .on_press(Message::Clear) diff --git a/examples/game_of_life/src/preset.rs b/examples/game_of_life/src/preset.rs index 1a471141..05157b6a 100644 --- a/examples/game_of_life/src/preset.rs +++ b/examples/game_of_life/src/preset.rs @@ -8,8 +8,8 @@ pub enum Preset { TenCellRow, LightweightSpaceship, Tumbler, - Acorn, GliderGun, + Acorn, } pub static ALL: &[Preset] = &[ @@ -21,8 +21,8 @@ pub static ALL: &[Preset] = &[ Preset::TenCellRow, Preset::LightweightSpaceship, Preset::Tumbler, - Preset::Acorn, Preset::GliderGun, + Preset::Acorn, ]; impl Preset { @@ -76,11 +76,6 @@ impl Preset { "x x x x", "xx xx", ], - Preset::Acorn => vec![ - " x ", - " x ", - "xx xxx", - ], Preset::GliderGun => vec![ " x ", " x x ", @@ -91,7 +86,12 @@ impl Preset { " x x x ", " x x ", " xx ", - ] + ], + Preset::Acorn => vec![ + " x ", + " x ", + "xx xxx", + ], }; let start_row = -(cells.len() as isize / 2); @@ -134,8 +134,8 @@ impl std::fmt::Display for Preset { Preset::TenCellRow => "10 Cell Row", Preset::LightweightSpaceship => "Lightweight spaceship", Preset::Tumbler => "Tumbler", - Preset::Acorn => "Acorn", Preset::GliderGun => "Gosper Glider Gun", + Preset::Acorn => "Acorn", } ) } diff --git a/examples/game_of_life/src/style.rs b/examples/game_of_life/src/style.rs index d59569f2..308ce43c 100644 --- a/examples/game_of_life/src/style.rs +++ b/examples/game_of_life/src/style.rs @@ -1,4 +1,4 @@ -use iced::{button, container, slider, Background, Color}; +use iced::{button, container, pick_list, slider, Background, Color}; const ACTIVE: Color = Color::from_rgb( 0x72 as f32 / 255.0, @@ -18,6 +18,12 @@ const HOVERED: Color = Color::from_rgb( 0xC4 as f32 / 255.0, ); +const BACKGROUND: Color = Color::from_rgb( + 0x2F as f32 / 255.0, + 0x31 as f32 / 255.0, + 0x36 as f32 / 255.0, +); + pub struct Container; impl container::StyleSheet for Container { @@ -132,3 +138,51 @@ impl slider::StyleSheet for Slider { } } } + +pub struct PickList; + +impl pick_list::StyleSheet for PickList { + fn menu(&self) -> pick_list::Menu { + pick_list::Menu { + text_color: Color::WHITE, + background: BACKGROUND.into(), + border_width: 1, + border_color: Color { + a: 0.7, + ..Color::BLACK + }, + selected_background: Color { + a: 0.5, + ..Color::BLACK + } + .into(), + selected_text_color: Color::WHITE, + } + } + + fn active(&self) -> pick_list::Style { + pick_list::Style { + text_color: Color::WHITE, + background: BACKGROUND.into(), + border_width: 1, + border_color: Color { + a: 0.6, + ..Color::BLACK + }, + border_radius: 2, + icon_size: 0.5, + } + } + + fn hovered(&self) -> pick_list::Style { + let active = self.active(); + + pick_list::Style { + border_color: Color { + a: 0.9, + ..Color::BLACK + }, + ..active + } + } +}