diff options
Diffstat (limited to 'examples/game_of_life')
| -rw-r--r-- | examples/game_of_life/src/main.rs | 13 | ||||
| -rw-r--r-- | examples/game_of_life/src/preset.rs | 13 | ||||
| -rw-r--r-- | examples/game_of_life/src/style.rs | 1 | 
3 files changed, 27 insertions, 0 deletions
| diff --git a/examples/game_of_life/src/main.rs b/examples/game_of_life/src/main.rs index 64599163..c3e16e8b 100644 --- a/examples/game_of_life/src/main.rs +++ b/examples/game_of_life/src/main.rs @@ -6,9 +6,11 @@ mod style;  use grid::Grid;  use iced::button::{self, Button};  use iced::executor; +use iced::menu::{self, Menu};  use iced::pick_list::{self, PickList};  use iced::slider::{self, Slider};  use iced::time; +use iced::window;  use iced::{      Align, Application, Checkbox, Clipboard, Column, Command, Container,      Element, Length, Row, Settings, Subscription, Text, @@ -19,6 +21,10 @@ use std::time::{Duration, Instant};  pub fn main() -> iced::Result {      GameOfLife::run(Settings {          antialiasing: true, +        window: window::Settings { +            position: window::Position::Centered, +            ..window::Settings::default() +        },          ..Settings::default()      })  } @@ -128,6 +134,13 @@ impl Application for GameOfLife {          }      } +    fn menu(&self) -> Menu<Message> { +        Menu::with_entries(vec![menu::Entry::dropdown( +            "Presets", +            Preset::menu().map(Message::PresetPicked), +        )]) +    } +      fn view(&mut self) -> Element<Message> {          let version = self.version;          let selected_speed = self.next_speed.unwrap_or(self.speed); diff --git a/examples/game_of_life/src/preset.rs b/examples/game_of_life/src/preset.rs index 05157b6a..1c199a72 100644 --- a/examples/game_of_life/src/preset.rs +++ b/examples/game_of_life/src/preset.rs @@ -1,3 +1,5 @@ +use iced::menu::{self, Menu}; +  #[derive(Debug, Clone, Copy, PartialEq, Eq)]  pub enum Preset {      Custom, @@ -26,6 +28,17 @@ pub static ALL: &[Preset] = &[  ];  impl Preset { +    pub fn menu() -> Menu<Self> { +        Menu::with_entries( +            ALL.iter() +                .copied() +                .map(|preset| { +                    menu::Entry::item(preset.to_string(), None, preset) +                }) +                .collect(), +        ) +    } +      pub fn life(self) -> Vec<(isize, isize)> {          #[rustfmt::skip]          let cells = match self { diff --git a/examples/game_of_life/src/style.rs b/examples/game_of_life/src/style.rs index 6605826f..be9a0e96 100644 --- a/examples/game_of_life/src/style.rs +++ b/examples/game_of_life/src/style.rs @@ -171,6 +171,7 @@ impl pick_list::StyleSheet for PickList {              },              border_radius: 2.0,              icon_size: 0.5, +            ..pick_list::Style::default()          }      } | 
