Struct titanium::desktop::gui::libdruid::Menu

pub struct Menu<T> { /* private fields */ }
Expand description

A menu.

Menus can be nested arbitrarily, so this could also be a submenu. See the module level documentation for more on how to use menus.

Implementations§

§

impl<T> Menu<T>where T: Data,

pub fn empty() -> Menu<T>

Create an empty menu.

pub fn new(title: impl Into<LabelText<T>>) -> Menu<T>

Create a menu with the given name.

pub fn enabled_if( self, enabled: impl FnMut(&T, &Env) -> bool + 'static ) -> Menu<T>

Provide a callback for determining whether this item should be enabled.

Whenever the callback returns true, the menu will be enabled.

pub fn enabled(self, enabled: bool) -> Menu<T>

Enable or disable this menu.

pub fn entry(self, entry: impl Into<MenuEntry<T>>) -> Menu<T>

Append a menu entry to this menu, returning the modified menu.

pub fn separator(self) -> Menu<T>

Append a separator to this menu, returning the modified menu.

pub fn refresh_on( self, refresh: impl FnMut(&T, &T, &Env) -> bool + 'static ) -> Menu<T>

Supply a function to check when this menu needs to refresh itself.

The arguments to the callback are (in order):

  • the previous value of the data,
  • the current value of the data, and
  • the current value of the environment.

The callback should return true if the menu needs to refresh itself.

This callback is intended to be purely an optimization. If you do create a menu without supplying a refresh callback, the menu will recursively check whether any children have changed and refresh itself if any have. By supplying a callback here, you can short-circuit those recursive calls.

pub fn rebuild_on( self, rebuild: impl FnMut(&T, &T, &Env) -> bool + 'static ) -> Menu<T>

Supply a function to check when this menu needs to be rebuild from scratch.

The arguments to the callback are (in order):

  • the previous value of the data,
  • the current value of the data, and
  • the current value of the environment.

The callback should return true if the menu needs to be rebuilt.

The difference between rebuilding and refreshing (as in refresh_on) is that rebuilding creates the menu from scratch using the original menu-building callback, whereas refreshing involves tweaking the existing menu entries (e.g. enabling or disabling items).

If you do not provide a callback using this method, the menu will never get rebuilt. Also, only window and application menus get rebuilt; context menus never do.

pub fn lens<S>(self, lens: impl Lens<S, T> + 'static) -> MenuEntry<S>where S: Data,

Wraps this menu in a lens, so that it can be added to a Menu<S>.

Trait Implementations§

§

impl<T> From<Menu<T>> for MenuEntry<T>where T: Data,

§

fn from(menu: Menu<T>) -> MenuEntry<T>

Converts to this type from the input type.

Auto Trait Implementations§

§

impl<T> !RefUnwindSafe for Menu<T>

§

impl<T> !Send for Menu<T>

§

impl<T> !Sync for Menu<T>

§

impl<T> Unpin for Menu<T>

§

impl<T> !UnwindSafe for Menu<T>

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

const: unstable · source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

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

const: unstable · 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.

§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> RoundFrom<T> for T

§

fn round_from(x: T) -> T

Performs the conversion.
§

impl<T, U> RoundInto<U> for Twhere U: RoundFrom<T>,

§

fn round_into(self) -> U

Performs the conversion.
source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
source§

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

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
source§

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

§

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

The type returned in the event of a conversion error.
const: unstable · source§

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

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more