wiard 0.8.0

Window handling library for Windows in Rust
Documentation
fn main() -> anyhow::Result<()> {
    let mut event_rx = wiard::EventReceiver::new();
    let file_menu = wiard::Menu::new()?;
    let menu_index_quit = file_menu.push("quit(&Q)")?;
    let menu = wiard::Menu::new()?;
    let menu_index_item = menu.push("item")?;
    let color_menu = wiard::Menu::new()?;
    let color_menu_system = color_menu.push("system")?;
    let color_menu_light = color_menu.push("light")?;
    let color_menu_dark = color_menu.push("dark")?;
    menu.push(
        wiard::MenuItem::builder()
            .text("Color")
            .sub_menu(&color_menu),
    )?;
    let header_menu = wiard::MenuBar::new()?;
    header_menu.push(
        wiard::MenuBarItem::builder()
            .text("File(&F)")
            .sub_menu(&file_menu),
    )?;
    header_menu.push(wiard::MenuBarItem::builder().text("Menu").sub_menu(&menu))?;
    let window = wiard::Window::builder(&event_rx)
        .title("wiard menu")
        .menu(&header_menu)
        .build()?;
    loop {
        let Some((event, _)) = event_rx.recv() else {
            break;
        };
        if let wiard::Event::MenuCommand(mc) = event {
            if mc.handle == file_menu {
                if mc.index == menu_index_quit {
                    window.close();
                }
            } else if mc.handle == menu && mc.index == menu_index_item {
                println!("clicked help/item");
            } else if mc.handle == color_menu {
                if mc.index == color_menu_system {
                    window.set_color_mode(wiard::ColorMode::System);
                } else if mc.index == color_menu_light {
                    window.set_color_mode(wiard::ColorMode::Light);
                } else if mc.index == color_menu_dark {
                    window.set_color_mode(wiard::ColorMode::Dark);
                }
            }
        } else if let wiard::Event::ColorModeChanged(ev) = event {
            println!("{ev:?}");
        }
    }
    Ok(())
}