use super::menu::Menu;
use super::menuitem::MenuItem;
use objc::rc::{Id, Owned, Shared};
use objc::{class, msg_send, sel};
#[derive(Debug)]
pub struct MenuBar(Id<Menu, Owned>);
impl MenuBar {
pub fn into_raw(self) -> Id<Menu, Owned> {
self.0
}
pub fn new(f: impl FnOnce(&mut Menu) -> ()) -> Self {
let menu = Menu::new();
let mut menubar = Self(menu);
let mut first = Menu::new();
f(&mut first);
menubar.add_menu(first);
menubar
}
fn add_menu<'a>(&'a mut self, menu: Id<Menu, Owned>) -> Id<Menu, Shared> {
let mut item = MenuItem::new_empty();
let menu = item.set_submenu(Some(menu)).unwrap();
let _item = self.0.add(item);
menu
}
pub fn add<'a>(&'a mut self, title: &str, f: impl FnOnce(&mut Menu) -> ()) -> Id<Menu, Shared> {
let mut menu = Menu::new_with_title(title);
f(&mut menu);
self.add_menu(menu)
}
#[doc(alias = "menuBarVisible")]
fn global_visible() -> bool {
unimplemented!()
}
#[doc(alias = "setMenuBarVisible")]
#[doc(alias = "setMenuBarVisible:")]
fn set_global_visible(visible: bool) {
unimplemented!()
}
#[doc(alias = "menuBarHeight")]
fn global_height() -> f64 {
unimplemented!()
}
}