use crate::sys;
use crate::ui::Ui;
use super::{MainMenuBarToken, MenuBarToken, MenuToken};
impl Ui {
#[must_use]
#[doc(alias = "BeginMainMenuBar")]
pub fn begin_main_menu_bar(&self) -> Option<MainMenuBarToken<'_>> {
if unsafe { sys::igBeginMainMenuBar() } {
Some(MainMenuBarToken::new(self))
} else {
None
}
}
#[must_use]
#[doc(alias = "BeginMenuBar")]
pub fn begin_menu_bar(&self) -> Option<MenuBarToken<'_>> {
if unsafe { sys::igBeginMenuBar() } {
Some(MenuBarToken::new(self))
} else {
None
}
}
#[must_use]
#[doc(alias = "BeginMenu")]
pub fn begin_menu(&self, label: impl AsRef<str>) -> Option<MenuToken<'_>> {
self.begin_menu_with_enabled(label, true)
}
#[must_use]
#[doc(alias = "BeginMenu")]
pub fn begin_menu_with_enabled(
&self,
label: impl AsRef<str>,
enabled: bool,
) -> Option<MenuToken<'_>> {
let label_ptr = self.scratch_txt(label);
if unsafe { sys::igBeginMenu(label_ptr, enabled) } {
Some(MenuToken::new(self))
} else {
None
}
}
#[doc(alias = "BeginMenu")]
pub fn menu<F: FnOnce()>(&self, label: impl AsRef<str>, f: F) {
self.menu_with_enabled(label, true, f);
}
#[doc(alias = "BeginMenu")]
pub fn menu_with_enabled<F: FnOnce()>(&self, label: impl AsRef<str>, enabled: bool, f: F) {
if let Some(_menu) = self.begin_menu_with_enabled(label, enabled) {
f();
}
}
}