diff options
| author | 2021-07-22 12:37:39 -0500 | |
|---|---|---|
| committer | 2021-07-22 12:37:39 -0500 | |
| commit | e822f654e44d2d7375b7fda966bb772055f377d4 (patch) | |
| tree | 8707561f1bb09c9e58cc9d9884bfb16d956f9f65 /examples/menu | |
| parent | 1c06920158e1a47977b2762bf8b34e56fd1a935a (diff) | |
| parent | dc0b96ce407283f2ffd9add5ad339f89097555d3 (diff) | |
| download | iced-e822f654e44d2d7375b7fda966bb772055f377d4.tar.gz iced-e822f654e44d2d7375b7fda966bb772055f377d4.tar.bz2 iced-e822f654e44d2d7375b7fda966bb772055f377d4.zip | |
Merge branch 'master' of https://github.com/hecrj/iced into wgpu_outdatedframe
Diffstat (limited to '')
| -rw-r--r-- | examples/menu/Cargo.toml | 10 | ||||
| -rw-r--r-- | examples/menu/src/main.rs | 117 | 
2 files changed, 127 insertions, 0 deletions
| diff --git a/examples/menu/Cargo.toml b/examples/menu/Cargo.toml new file mode 100644 index 00000000..44597734 --- /dev/null +++ b/examples/menu/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "menu" +version = "0.1.0" +authors = ["Héctor Ramón Jiménez <hector0193@gmail.com>"] +edition = "2018" +publish = false + +[dependencies] +iced = { path = "../.." } +iced_native = { path = "../../native" }
\ No newline at end of file diff --git a/examples/menu/src/main.rs b/examples/menu/src/main.rs new file mode 100644 index 00000000..7403713c --- /dev/null +++ b/examples/menu/src/main.rs @@ -0,0 +1,117 @@ +use iced::menu::{self, Menu}; +use iced::{ +    executor, Application, Clipboard, Command, Container, Element, Length, +    Settings, Text, +}; +use iced_native::keyboard::{Hotkey, KeyCode, Modifiers}; + +pub fn main() -> iced::Result { +    App::run(Settings::default()) +} + +#[derive(Debug, Default)] +struct App { +    selected: Option<Entry>, +} + +#[derive(Debug, Clone)] +enum Entry { +    One, +    Two, +    Three, +    A, +    B, +    C, +} + +#[derive(Debug, Clone)] +enum Message { +    MenuActivated(Entry), +} + +impl Application for App { +    type Executor = executor::Default; +    type Message = Message; +    type Flags = (); + +    fn new(_flags: ()) -> (App, Command<Message>) { +        (App::default(), Command::none()) +    } + +    fn title(&self) -> String { +        String::from("Menu - Iced") +    } + +    fn menu(&self) -> Menu<Message> { +        let alt = Modifiers::ALT; +        let ctrl_shift = Modifiers::CTRL | Modifiers::SHIFT; + +        Menu::with_entries(vec![ +            menu::Entry::dropdown( +                "First", +                Menu::with_entries(vec![ +                    menu::Entry::item( +                        "One", +                        Hotkey::new(alt, KeyCode::F1), +                        Message::MenuActivated(Entry::One), +                    ), +                    menu::Entry::item( +                        "Two", +                        Hotkey::new(alt, KeyCode::F2), +                        Message::MenuActivated(Entry::Two), +                    ), +                    menu::Entry::Separator, +                    menu::Entry::item( +                        "Three", +                        Hotkey::new(alt, KeyCode::F3), +                        Message::MenuActivated(Entry::Three), +                    ), +                ]), +            ), +            menu::Entry::dropdown( +                "Second", +                Menu::with_entries(vec![ +                    menu::Entry::item( +                        "A", +                        Hotkey::new(ctrl_shift, KeyCode::A), +                        Message::MenuActivated(Entry::A), +                    ), +                    menu::Entry::item( +                        "B", +                        Hotkey::new(ctrl_shift, KeyCode::B), +                        Message::MenuActivated(Entry::B), +                    ), +                    menu::Entry::Separator, +                    menu::Entry::item( +                        "C", +                        Hotkey::new(ctrl_shift, KeyCode::C), +                        Message::MenuActivated(Entry::C), +                    ), +                ]), +            ), +        ]) +    } + +    fn update( +        &mut self, +        message: Message, +        _clipboard: &mut Clipboard, +    ) -> Command<Message> { +        match message { +            Message::MenuActivated(entry) => self.selected = Some(entry), +        } + +        Command::none() +    } + +    fn view(&mut self) -> Element<Message> { +        Container::new( +            Text::new(format!("Selected {:?}", self.selected)).size(48), +        ) +        .width(Length::Fill) +        .height(Length::Fill) +        .center_x() +        .center_y() +        .into() +    } +} | 
