iced_aw 0.14.0

Additional widgets for the Iced GUI library
Documentation
use iced::Length;
use iced_aw::{Menu, MenuBar, menu, menu_items};
use iced_widget::{button, container, text};

#[derive(Default)]
pub struct App;

#[derive(Clone, Copy)]
pub enum Message {
    NoOp,
}

pub fn main() -> iced::Result {
    iced::application(App::default, App::update, App::view).run()
}

impl App {
    pub fn update(&mut self, msg: Message) {
        match msg {
            Message::NoOp => println!("Hello"),
        }
    }

    pub fn title(&self) -> String {
        "hello".into()
    }

    pub fn view(&self) -> iced::Element<'_, Message> {
        let file_menu = Menu::new(menu_items!(
            (button("New").on_press(Message::NoOp)),
            (button("Open").on_press(Message::NoOp)),
            (button("Exit").on_press(Message::NoOp)),
        ))
        .width(Length::Fill);

        let edit_menu = Menu::new(menu_items!(
            (button("Copy").on_press(Message::NoOp)),
            (button("Paste").on_press(Message::NoOp)),
        ))
        .width(Length::Shrink);

        let about_menu =
            Menu::new(menu_items!((button("About").on_press(Message::NoOp)))).width(Length::Shrink);

        let menu_bar = MenuBar::new(menu_items!(
            (container(text("File")), file_menu),
            (container(text("Edit")), edit_menu),
            (container(text("Help")), about_menu),
        ))
        .draw_path(menu::DrawPath::Backdrop);

        menu_bar.into()
    }
}