tray_icon::menu

Struct Menu

Source
pub struct Menu { /* private fields */ }
Expand description

A root menu that can be added to a Window on Windows and Linux and used as the app global menu on macOS.

Implementations§

Source§

impl Menu

Source

pub fn new() -> Menu

Creates a new menu.

Source

pub fn with_id<I>(id: I) -> Menu
where I: Into<MenuId>,

Creates a new menu with the specified id.

Source

pub fn with_items(items: &[&dyn IsMenuItem]) -> Result<Menu, Error>

Creates a new menu with given items. It calls Menu::new and Menu::append_items internally.

Source

pub fn with_id_and_items<I>( id: I, items: &[&dyn IsMenuItem], ) -> Result<Menu, Error>
where I: Into<MenuId>,

Creates a new menu with the specified id and given items. It calls Menu::new and Menu::append_items internally.

Source

pub fn id(&self) -> &MenuId

Returns a unique identifier associated with this menu.

Source

pub fn append(&self, item: &dyn IsMenuItem) -> Result<(), Error>

Add a menu item to the end of this menu.

§Platform-spcific:
  • macOS: Only Submenu can be added to the menu
Source

pub fn append_items(&self, items: &[&dyn IsMenuItem]) -> Result<(), Error>

Add menu items to the end of this menu. It calls Menu::append in a loop internally.

§Platform-spcific:
  • macOS: Only Submenu can be added to the menu
Source

pub fn prepend(&self, item: &dyn IsMenuItem) -> Result<(), Error>

Add a menu item to the beginning of this menu.

§Platform-spcific:
  • macOS: Only Submenu can be added to the menu
Source

pub fn prepend_items(&self, items: &[&dyn IsMenuItem]) -> Result<(), Error>

Add menu items to the beginning of this menu. It calls Menu::insert_items with position of 0 internally.

§Platform-spcific:
  • macOS: Only Submenu can be added to the menu
Source

pub fn insert( &self, item: &dyn IsMenuItem, position: usize, ) -> Result<(), Error>

Insert a menu item at the specified postion in the menu.

§Platform-spcific:
  • macOS: Only Submenu can be added to the menu
Source

pub fn insert_items( &self, items: &[&dyn IsMenuItem], position: usize, ) -> Result<(), Error>

Insert menu items at the specified postion in the menu.

§Platform-spcific:
  • macOS: Only Submenu can be added to the menu
Source

pub fn remove(&self, item: &dyn IsMenuItem) -> Result<(), Error>

Remove a menu item from this menu.

Source

pub fn remove_at(&self, position: usize) -> Option<MenuItemKind>

Remove the menu item at the specified position from this menu and returns it.

Source

pub fn items(&self) -> Vec<MenuItemKind>

Returns a list of menu items that has been added to this menu.

Source

pub unsafe fn init_for_hwnd(&self, hwnd: isize) -> Result<(), Error>

Adds this menu to a win32 window.

§Safety

The hwnd must be a valid window HWND.

§Note about accelerators:

For accelerators to work, the event loop needs to call TranslateAcceleratorW with the HACCEL returned from Menu::haccel

§Example:
let menu = Menu::new();
unsafe {
    let mut msg: MSG = std::mem::zeroed();
    while GetMessageW(&mut msg, std::ptr::null_mut(), 0, 0) == 1 {
        let translated = TranslateAcceleratorW(msg.hwnd, menu.haccel() as _, &msg as *const _);
        if translated != 1{
            TranslateMessage(&msg);
            DispatchMessageW(&msg);
        }
    }
}
Source

pub unsafe fn init_for_hwnd_with_theme( &self, hwnd: isize, theme: MenuTheme, ) -> Result<(), Error>

Adds this menu to a win32 window using the specified theme.

See Menu::init_for_hwnd for more info.

Note that the theme only affects the menu bar itself and not submenus or context menu.

§Safety

The hwnd must be a valid window HWND.

Source

pub unsafe fn set_theme_for_hwnd( &self, hwnd: isize, theme: MenuTheme, ) -> Result<(), Error>

Set a theme for the menu bar on this window.

Note that the theme only affects the menu bar itself and not submenus or context menu.

§Safety

The hwnd must be a valid window HWND.

Source

pub fn haccel(&self) -> isize

Returns The HACCEL associated with this menu It can be used with TranslateAcceleratorW in the event loop to enable accelerators

The returned HACCEL is valid as long as the Menu is.

Source

pub unsafe fn remove_for_hwnd(&self, hwnd: isize) -> Result<(), Error>

Removes this menu from a win32 window

§Safety

The hwnd must be a valid window HWND.

Source

pub unsafe fn hide_for_hwnd(&self, hwnd: isize) -> Result<(), Error>

Hides this menu from a win32 window

§Safety

The hwnd must be a valid window HWND.

Source

pub unsafe fn show_for_hwnd(&self, hwnd: isize) -> Result<(), Error>

Shows this menu on a win32 window

§Safety

The hwnd must be a valid window HWND.

Source

pub unsafe fn is_visible_on_hwnd(&self, hwnd: isize) -> bool

Returns whether this menu visible on a on a win32 window

§Safety

The hwnd must be a valid window HWND.

Trait Implementations§

Source§

impl Clone for Menu

Source§

fn clone(&self) -> Menu

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl ContextMenu for Menu

Source§

fn hpopupmenu(&self) -> isize

Get the popup HMENU for this menu. Read more
Source§

unsafe fn show_context_menu_for_hwnd( &self, hwnd: isize, position: Option<Position>, )

Shows this menu as a context menu inside a win32 window. Read more
Source§

unsafe fn attach_menu_subclass_for_hwnd(&self, hwnd: isize)

Attach the menu subclass handler to the given hwnd so you can recieve events from that window using MenuEvent::receiver Read more
Source§

unsafe fn detach_menu_subclass_from_hwnd(&self, hwnd: isize)

Remove the menu subclass handler from the given hwnd Read more
Source§

impl Default for Menu

Source§

fn default() -> Menu

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl Freeze for Menu

§

impl !RefUnwindSafe for Menu

§

impl !Send for Menu

§

impl !Sync for Menu

§

impl Unpin for Menu

§

impl !UnwindSafe for Menu

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.