ComboBox

Struct ComboBox 

Source
pub struct ComboBox<A, V: Clone + Debug + Eq + 'static> { /* private fields */ }
Expand description

A pop-up multiple choice menu

§Messages

A combobox presents a menu with a fixed set of choices when clicked. Each choice has an associated value of type V.

If no selection handler exists, then the choice’s message is emitted when selected. If a handler is specified via Self::with or Self::with_msg then this message is passed to the handler and not emitted.

§Messages

kas::messages::SetIndex may be used to set the selected entry.

kas::messages::Expand and kas::messages::Collapse may be used to open and close the menu.

Implementations§

Source§

impl<A, V: Clone + Debug + Eq + 'static> ComboBox<A, V>

Source

pub fn new<T, I>( iter: I, state_fn: impl Fn(&ConfigCx<'_>, &A) -> V + 'static, ) -> Self
where T: Into<AccessString>, I: IntoIterator<Item = (T, V)>,

Construct a combobox

Constructs a combobox with labels derived from an iterator over string types. For example:

#[derive(Clone, Copy, Debug, PartialEq, Eq)]
enum Select { A, B, C }

let combobox = ComboBox::new(
    [("A", Select::A), ("B", Select::B), ("C", Select::C)],
    |_, selection| *selection,
);

The closure state_fn selects the active entry from input data.

Source

pub fn new_vec( entries: Vec<MenuEntry<V>>, state_fn: impl Fn(&ConfigCx<'_>, &A) -> V + 'static, ) -> Self

Construct a combobox with the given menu entries

A combobox presents a menu with a fixed set of choices when clicked.

The closure state_fn selects the active entry from input data.

Source

pub fn with_msg<M: Debug + 'static>(self, f: impl Fn(V) -> M + 'static) -> Self

Send the message generated by f on selection

Source

pub fn with<F>(self, f: F) -> ComboBox<A, V>
where F: Fn(&mut EventCx<'_>, V) + 'static,

Call the handler f on selection

On selection of a new choice the closure f is called with the choice’s message.

Source

pub fn new_msg<T, I, M>( iter: I, state_fn: impl Fn(&ConfigCx<'_>, &A) -> V + 'static, msg_fn: impl Fn(V) -> M + 'static, ) -> Self
where T: Into<AccessString>, I: IntoIterator<Item = (T, V)>, M: Debug + 'static,

Construct a combobox which sends a message on selection

See Self::new and Self::with_msg for documentation.

Source§

impl<A, V: Clone + Debug + Eq + 'static> ComboBox<A, V>

Source

pub fn active(&self) -> usize

Get the index of the active choice

This index is normally less than the number of choices (self.len()), but may not be if set programmatically or there are no choices.

Source

pub fn set_active(&mut self, cx: &mut EventState, index: usize)

Set the active choice

Source

pub fn len(&self) -> usize

Get the number of entries

Source

pub fn is_empty(&self) -> bool

True if the box contains no entries

Source

pub fn clear(&mut self)

Remove all choices

Source

pub fn push<T: Into<AccessString>>( &mut self, cx: &mut ConfigCx<'_>, label: T, msg: V, ) -> usize

Add a choice to the combobox, in last position

Returns the index of the new choice

Source

pub fn pop(&mut self, cx: &mut EventState) -> Option<()>

Pops the last choice from the combobox

Source

pub fn insert<T: Into<AccessString>>( &mut self, cx: &mut ConfigCx<'_>, index: usize, label: T, msg: V, )

Add a choice at position index

Panics if index > len.

Source

pub fn remove(&mut self, cx: &mut EventState, index: usize)

Removes the choice at position index

Panics if index is out of bounds.

Source

pub fn replace<T: Into<AccessString>>( &mut self, cx: &mut ConfigCx<'_>, index: usize, label: T, msg: V, )

Replace the choice at index

Panics if index is out of bounds.

Trait Implementations§

Source§

impl<A, V: Clone + Debug + Eq + 'static> Events for ComboBox<A, V>

Source§

const REDRAW_ON_MOUSE_OVER: bool = true

Does this widget have a different appearance on mouse over? Read more
Source§

fn update(&mut self, cx: &mut ConfigCx<'_>, data: &A)

Update self using input data Read more
Source§

fn handle_event( &mut self, cx: &mut EventCx<'_>, _: &A, event: Event<'_>, ) -> IsUsed

Handle an Event Read more
Source§

fn handle_messages(&mut self, cx: &mut EventCx<'_>, _: &Self::Data)

Handler for messages from children/descendants Read more
Source§

fn mouse_over_icon(&self) -> Option<CursorIcon>

The mouse cursor icon to use on mouse over Read more
Source§

fn make_child_id(&mut self, index: usize) -> Id

Make an identifier for a child Read more
Source§

fn configure(&mut self, cx: &mut ConfigCx<'_>)

Configure self Read more
Source§

fn configure_recurse(&mut self, cx: &mut ConfigCx<'_>, data: &Self::Data)

Configure children Read more
Source§

fn update_recurse(&mut self, cx: &mut ConfigCx<'_>, data: &Self::Data)

Update children Read more
Source§

fn handle_mouse_over(&mut self, cx: &mut EventCx<'_>, state: bool)

Mouse focus handler Read more
Source§

fn handle_scroll( &mut self, cx: &mut EventCx<'_>, data: &Self::Data, scroll: Scroll, )

Handler for scrolling Read more
Source§

impl<A, V: Clone + Debug + Eq + 'static> Layout for ComboBox<A, V>

Source§

fn rect(&self) -> Rect

Get the widget’s region Read more
Source§

fn size_rules(&mut self, sizer: SizeCx<'_>, axis: AxisInfo) -> SizeRules

Get size rules for the given axis Read more
Source§

fn set_rect(&mut self, cx: &mut ConfigCx<'_>, rect: Rect, hints: AlignHints)

Set size and position Read more
Source§

fn try_probe(&self, coord: Coord) -> Option<Id>

Probe a coordinate for a widget’s Id Read more
Source§

fn draw(&self, draw: DrawCx<'_>)

Draw a widget and its children Read more
Source§

impl<A, V: Clone + Debug + Eq + 'static> MacroDefinedLayout for ComboBox<A, V>

Source§

fn rect(&self) -> Rect

Get the widget’s region
Source§

fn size_rules(&mut self, sizer: SizeCx<'_>, axis: AxisInfo) -> SizeRules

Get size rules for the given axis
Source§

fn set_rect(&mut self, cx: &mut ConfigCx<'_>, rect: Rect, hints: AlignHints)

Set size and position
Source§

fn try_probe(&self, coord: Coord) -> Option<Id>

Probe a coordinate for a widget’s Id
Source§

fn draw(&self, draw: DrawCx<'_>)

Draw a widget and its children
Source§

impl<A, V: Clone + Debug + Eq + 'static> Tile for ComboBox<A, V>

Source§

fn navigable(&self) -> bool

Whether this widget supports navigation focus Read more
Source§

fn role(&self, _: &mut dyn RoleCx) -> Role<'_>

Describe the widget’s role Read more
Source§

fn nav_next(&self, _: bool, _: Option<usize>) -> Option<usize>

Navigation in spatial order Read more
Source§

fn probe(&self, _: Coord) -> Id

Probe a coordinate for a widget’s Id Read more
Source§

fn as_tile(&self) -> &dyn Tile

Get as a dyn Tile Read more
Source§

fn id_ref(&self) -> &Id

Get a reference to the widget’s identifier Read more
Source§

fn identify(&self) -> IdentifyWidget<'_>

Return a Display-able widget identifier Read more
Source§

fn get_child(&self, index: usize) -> Option<&dyn Tile>

Access a child as a dyn Tile, if available Read more
Source§

fn child_indices(&self) -> ChildIndices

Get child indices available to recursion Read more
Source§

fn id(&self) -> Id

Get the widget’s identifier Read more
Source§

fn tooltip(&self) -> Option<&str>

Tooltip Read more
Source§

fn role_child_properties(&self, cx: &mut dyn RoleCx, index: usize)

Specify additional role properties for child index Read more
Source§

fn find_child_index(&self, id: &Id) -> Option<usize>

Find the child which is an ancestor of this id, if any Read more
Source§

fn translation(&self, index: usize) -> Offset

Get translation of child index relative to this widget Read more
Source§

impl<A, V: Clone + Debug + Eq + 'static> Widget for ComboBox<A, V>

Source§

type Data = A

Input data type Read more
Source§

fn as_node<'__a>(&'__a mut self, data: &'__a Self::Data) -> Node<'__a>

Erase type Read more
Source§

fn child_node<'__n>( &'__n mut self, data: &'__n Self::Data, index: usize, ) -> Option<Node<'__n>>

Access a child as a Node, if available Read more

Auto Trait Implementations§

§

impl<A, V> Freeze for ComboBox<A, V>

§

impl<A, V> !RefUnwindSafe for ComboBox<A, V>

§

impl<A, V> !Send for ComboBox<A, V>

§

impl<A, V> !Sync for ComboBox<A, V>

§

impl<A, V> Unpin for ComboBox<A, V>
where V: Unpin,

§

impl<A, V> !UnwindSafe for ComboBox<A, V>

Blanket Implementations§

Source§

impl<W> AdaptWidget for W
where W: Widget,

Source§

fn align(self, hints: AlignHints) -> Align<Self>

Apply an alignment hint Read more
Source§

fn pack(self, hints: AlignHints) -> Pack<Self>

Apply an alignment hint, squash and align the result Read more
Source§

fn margins(self, dirs: Directions, style: MarginStyle) -> Margins<Self>

Specify margins Read more
Source§

fn map<A, F>(self, f: F) -> Map<A, Self, F>
where F: for<'a> Fn(&'a A) -> &'a Self::Data,

Map data type via a function Read more
Source§

fn on_configure<F>(self, f: F) -> AdaptEvents<Self>
where F: Fn(&mut AdaptConfigCx<'_, '_>, &mut Self) + 'static,

Call the given closure on Events::configure Read more
Source§

fn on_update<F>(self, f: F) -> AdaptEvents<Self>
where F: Fn(&mut AdaptConfigCx<'_, '_>, &mut Self, &Self::Data) + 'static,

Call the given closure on Events::update Read more
Source§

fn on_message<M, H>(self, handler: H) -> AdaptEvents<Self>
where M: Debug + 'static, H: Fn(&mut AdaptEventCx<'_, '_>, &mut Self, M) + 'static,

Add a handler on message of type M Read more
Source§

fn map_message<M, N, H>(self, handler: H) -> AdaptEvents<Self>
where M: Debug + 'static, N: Debug + 'static, H: Fn(usize, M) -> N + 'static,

Add a child handler to map messages of type M to N Read more
Source§

fn on_messages<H>(self, handler: H) -> AdaptEvents<Self>
where H: Fn(&mut AdaptEventCx<'_, '_>, &mut Self, &Self::Data) + 'static,

Add a generic message handler Read more
Source§

fn with_min_size_px(self, w: i32, h: i32) -> Reserve<Self>

Construct a wrapper, setting minimum size in pixels Read more
Source§

fn with_min_size_em(self, w: f32, h: f32) -> Reserve<Self>

Construct a wrapper, setting minimum size in Em Read more
Source§

fn with_label<D, T>(self, direction: D, label: T) -> WithLabel<Self, D>

Construct a wrapper widget adding a label Read more
Source§

fn with_hidden_label<T: ToString>(self, label: T) -> WithHiddenLabel<Self>

Construct a wrapper widget adding a hidden label Read more
Source§

fn with_state<A>(self, state: Self::Data) -> Adapt<A, Self>

Construct an Adapt widget over input
Source§

impl<W> AdaptWidgetAny for W
where W: Widget<Data = ()>,

Source§

fn map_any<A>(self) -> MapAny<A, Self>

Map any input data to () Read more
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<S, T> Cast<T> for S
where T: Conv<S>,

Source§

fn cast(self) -> T

Cast from Self to T Read more
Source§

fn try_cast(self) -> Result<T, Error>

Try converting from Self to T Read more
Source§

impl<S, T> CastApprox<T> for S
where T: ConvApprox<S>,

Source§

fn try_cast_approx(self) -> Result<T, Error>

Try approximate conversion from Self to T Read more
Source§

fn cast_approx(self) -> T

Cast approximately from Self to T Read more
Source§

impl<S, T> CastFloat<T> for S
where T: ConvFloat<S>,

Source§

fn cast_trunc(self) -> T

Cast to integer, truncating Read more
Source§

fn cast_nearest(self) -> T

Cast to the nearest integer Read more
Source§

fn cast_floor(self) -> T

Cast the floor to an integer Read more
Source§

fn cast_ceil(self) -> T

Cast the ceiling to an integer Read more
Source§

fn try_cast_trunc(self) -> Result<T, Error>

Try converting to integer with truncation Read more
Source§

fn try_cast_nearest(self) -> Result<T, Error>

Try converting to the nearest integer Read more
Source§

fn try_cast_floor(self) -> Result<T, Error>

Try converting the floor to an integer Read more
Source§

fn try_cast_ceil(self) -> Result<T, Error>

Try convert the ceiling to an integer Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

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

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

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 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<W> TileExt for W
where W: Tile + ?Sized,

Source§

fn eq_id<T>(&self, rhs: T) -> bool
where Id: PartialEq<T>,

Test widget identifier for equality Read more
Source§

fn is_ancestor_of(&self, id: &Id) -> bool

Check whether id is self or a descendant Read more
Source§

fn is_strict_ancestor_of(&self, id: &Id) -> bool

Check whether id is not self and is a descendant Read more
Source§

fn children(&self) -> impl Iterator<Item = &dyn Tile>

Return an iterator over visible children Read more
Source§

fn find_tile(&self, id: &Id) -> Option<&dyn Tile>

Find the descendant with this id, if any Read more
Source§

fn find_tile_rect(&self, id: &Id) -> Option<(Rect, Offset)>

Find the Rect of the descendant with this id, if any 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.
Source§

impl<T> WithSubscriber for T

Source§

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
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

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