diff options
author | 2021-07-20 21:44:33 +0700 | |
---|---|---|
committer | 2021-07-20 21:44:33 +0700 | |
commit | 8e29709b69ec0eae211887c8c6d91558175997b5 (patch) | |
tree | c6fe2b40d4be34867e61b9061d27ae44916ad4ab /examples/game_of_life/src | |
parent | a6dbaf0f5fd3590a8cfe92f924184c5d78e00152 (diff) | |
parent | 82db3c78b6cfa2cc55ece6ffa46811bfb5195f60 (diff) | |
download | iced-8e29709b69ec0eae211887c8c6d91558175997b5.tar.gz iced-8e29709b69ec0eae211887c8c6d91558175997b5.tar.bz2 iced-8e29709b69ec0eae211887c8c6d91558175997b5.zip |
Merge pull request #945 from derezzedex/menu
feat: add menus
Diffstat (limited to 'examples/game_of_life/src')
-rw-r--r-- | examples/game_of_life/src/main.rs | 8 | ||||
-rw-r--r-- | examples/game_of_life/src/preset.rs | 13 |
2 files changed, 21 insertions, 0 deletions
diff --git a/examples/game_of_life/src/main.rs b/examples/game_of_life/src/main.rs index 64599163..877aa2d2 100644 --- a/examples/game_of_life/src/main.rs +++ b/examples/game_of_life/src/main.rs @@ -6,6 +6,7 @@ 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; @@ -128,6 +129,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 { |