b3-core 0.4.0

A cross-platform framework that provides access and management of the main elements of a graphical application.
Documentation
use crate::{Action, ContextOwner, Icon, Menu, MenuItem, ShortCode};

pub(crate) trait MenuItemApi {
    fn new(ctx: &impl ContextOwner, separator: bool) -> Self;

    fn set_title(&mut self, title: String);
    fn title(&self) -> String;

    fn set_action(&mut self, action: Option<Action>);

    fn set_submenu(&mut self, submenu: Option<Menu>);
    fn submenu(&self) -> Option<&Menu>;
    fn submenu_mut(&mut self) -> Option<&mut Menu>;
    fn has_submenu(&self) -> bool;

    fn set_short_code(&mut self, short_code: ShortCode);
    fn short_code(&self) -> &ShortCode;

    fn set_enabled(&mut self, enabled: bool);
    fn enabled(&self) -> bool;

    fn set_tooltip(&mut self, tooltip: Option<String>);
    fn tooltip(&self) -> Option<String>;

    fn set_icon(&mut self, icon: Option<Icon>);
    fn icon(&self) -> Option<&Icon>;
}

pub(crate) trait MenuApi {
    fn new(ctx: &impl ContextOwner, items: Vec<MenuItem>) -> Self;

    fn add_item(&mut self, item: MenuItem);
}