Struct kas::widgets::List

source ·
pub struct List<D, W>where
    D: Directional,
    W: Widget,{ /* private fields */ }
Expand description

A generic row/column widget

This type is roughly Vec but for widgets. Generics:

  • D: Directional — fixed or run-time direction of layout
  • W: Widget — type of widget

Alternatives

Some more specific type-defs are available:

Performance

Configuring and resizing elements is O(n) in the number of children. Drawing and event handling is O(log n) in the number of children (assuming only a small number are visible at any one time).

Messages

If a handler is specified via Self::on_message then this handler is called when a child pushes a message. This allows associating the child’s index with a message.

Implementations§

source§

impl<D, W> List<D, W>where D: Directional + Default, W: Widget,

source

pub fn new() -> List<D, W>

Construct a new instance

This constructor is available where the direction is determined by the type: for D: Directional + Default. In other cases, use Self::new_dir.

source

pub fn new_vec(widgets: Vec<W, Global>) -> List<D, W>

Construct a new instance with vec

This constructor is available where the direction is determined by the type: for D: Directional + Default. In other cases, use Self::new_dir_vec.

source§

impl<W> List<Direction, W>where W: Widget,

source

pub fn set_direction(&mut self, direction: Direction) -> Action

Set the direction of contents

source§

impl<D, W> List<D, W>where D: Directional, W: Widget,

source

pub fn new_dir(direction: D) -> List<D, W>

Construct a new instance with explicit direction

source

pub fn new_dir_vec(direction: D, widgets: Vec<W, Global>) -> List<D, W>

Construct a new instance with explicit direction and vec

source

pub fn set_on_message(&mut self, f: Option<fn(_: &mut EventMgr<'_>, _: usize)>)

Assign a child message handler

This handler (if any) is called when a child pushes a message: f(mgr, index), where index is the child’s index.

source

pub fn on_message(self, f: fn(_: &mut EventMgr<'_>, _: usize)) -> List<D, W>

Assign a child message handler (inline style)

This handler is called when a child pushes a message: f(mgr, index), where index is the child’s index.

source

pub fn edit<F>(&mut self, f: F) -> Actionwhere F: FnOnce(&mut Vec<W, Global>),

Edit the list of children directly

This may be used to edit children before window construction. It may also be used from a running UI, but in this case a full reconfigure of the window’s widgets is required (triggered by the the return value, Action::RECONFIGURE).

source

pub fn direction(&self) -> Direction

Get the direction of contents

source

pub fn layout_storage(&mut self) -> &mut impl RowStorage

Access layout storage

The number of columns/rows is [Self.len].

source

pub fn is_empty(&self) -> bool

True if there are no child widgets

source

pub fn len(&self) -> usize

Returns the number of child widgets

source

pub fn clear(&mut self)

Remove all child widgets

source

pub fn get(&self, index: usize) -> Option<&W>

Returns a reference to the child, if any

source

pub fn get_mut(&mut self, index: usize) -> Option<&mut W>

Returns a mutable reference to the child, if any

source

pub fn push(&mut self, mgr: &mut ConfigMgr<'_>, widget: W) -> usize

Append a child widget

The new child is configured immediately. Action::RESIZE is triggered.

Returns the new element’s index.

source

pub fn pop(&mut self, mgr: &mut ConfigMgr<'_>) -> Option<W>

Remove the last child widget (if any) and return

Triggers Action::RESIZE.

source

pub fn insert(&mut self, mgr: &mut ConfigMgr<'_>, index: usize, widget: W)

Inserts a child widget position index

Panics if index > len.

The new child is configured immediately. Triggers Action::RESIZE.

source

pub fn remove(&mut self, mgr: &mut ConfigMgr<'_>, index: usize) -> W

Removes the child widget at position index

Panics if index is out of bounds.

Triggers Action::RESIZE.

source

pub fn replace(&mut self, mgr: &mut ConfigMgr<'_>, index: usize, w: W) -> W

Replace the child at index

Panics if index is out of bounds.

The new child is configured immediately. Triggers Action::RESIZE.

source

pub fn extend<T>(&mut self, mgr: &mut ConfigMgr<'_>, iter: T)where T: IntoIterator<Item = W>,

Append child widgets from an iterator

New children are configured immediately. Triggers Action::RESIZE.

source

pub fn resize_with<F>(&mut self, mgr: &mut ConfigMgr<'_>, len: usize, f: F)where F: Fn(usize) -> W,

Resize, using the given closure to construct new widgets

New children are configured immediately. Triggers Action::RESIZE.

source

pub fn iter(&self) -> impl Iterator<Item = &W>

Iterate over childern

source

pub fn iter_mut(&mut self) -> impl Iterator<Item = &mut W>

Mutably iterate over childern

Trait Implementations§

source§

impl<D, W> AutoLayout for List<D, W>where D: Directional, W: Widget,

source§

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

Get size rules for the given axis Read more
source§

fn set_rect(&mut self, mgr: &mut ConfigMgr<'_>, rect: Rect)

Set size and position Read more
source§

fn find_id(&mut self, coord: Coord) -> Option<WidgetId>

Translate a coordinate to a WidgetId Read more
source§

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

Draw a widget and its children Read more
source§

impl<D, W> Clone for List<D, W>where D: Directional, W: Widget + Clone,

source§

fn clone(&self) -> List<D, W>

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<D, W> Debug for List<D, W>where D: Directional, W: Widget,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl<D, W> Default for List<D, W>where D: Directional + Default, W: Widget,

source§

fn default() -> List<D, W>

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

impl<D, W> FromIterator<W> for List<D, W>where D: Directional + Default, W: Widget,

source§

fn from_iter<T>(iter: T) -> List<D, W>where T: IntoIterator<Item = W>,

Creates a value from an iterator. Read more
source§

impl<D, W> Index<usize> for List<D, W>where D: Directional, W: Widget,

§

type Output = W

The returned type after indexing.
source§

fn index(&self, index: usize) -> &<List<D, W> as Index<usize>>::Output

Performs the indexing (container[index]) operation. Read more
source§

impl<D, W> IndexMut<usize> for List<D, W>where D: Directional, W: Widget,

source§

fn index_mut( &mut self, index: usize ) -> &mut <List<D, W> as Index<usize>>::Output

Performs the mutable indexing (container[index]) operation. Read more
source§

impl<D, W> Layout for List<D, W>where D: Directional, W: Widget,

source§

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

Get size rules for the given axis Read more
source§

fn set_rect(&mut self, mgr: &mut ConfigMgr<'_>, rect: Rect)

Set size and position Read more
source§

fn find_id(&mut self, coord: Coord) -> Option<WidgetId>

Translate a coordinate to a WidgetId Read more
source§

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

Draw a widget and its children Read more
source§

impl<D, W> Widget for List<D, W>where D: Directional, W: Widget,

source§

fn pre_configure(&mut self, _: &mut ConfigMgr<'_>, id: WidgetId)

Pre-configuration Read more
source§

fn handle_message(&mut self, mgr: &mut EventMgr<'_>)

Handler for messages from children/descendants Read more
source§

fn nav_next( &mut self, _: &mut ConfigMgr<'_>, reverse: bool, from: Option<usize> ) -> Option<usize>

Navigation in spatial order Read more
source§

fn configure(&mut self, mgr: &mut ConfigMgr<'_>)

Configure widget Read more
source§

fn navigable(&self) -> bool

Is this widget navigable via Tab key? Read more
source§

fn translation(&self) -> Offset

Get translation of children relative to this widget Read more
source§

fn handle_event(&mut self, mgr: &mut EventMgr<'_>, event: Event) -> Response

Handle an Event sent to this widget Read more
source§

fn steal_event( &mut self, mgr: &mut EventMgr<'_>, id: &WidgetId, event: &Event ) -> Response

Potentially steal an event before it reaches a child Read more
source§

fn handle_unused(&mut self, mgr: &mut EventMgr<'_>, event: Event) -> Response

Handle an event sent to child index but left unhandled Read more
source§

fn handle_scroll(&mut self, mgr: &mut EventMgr<'_>, scroll: Scroll)

Handler for scrolling Read more
source§

impl<D, W> WidgetChildren for List<D, W>where D: Directional, W: Widget,

source§

fn num_children(&self) -> usize

Get the number of child widgets Read more
source§

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

Get a reference to a child widget by index, or None if the index is out of bounds. Read more
source§

fn get_child_mut(&mut self, index: usize) -> Option<&mut dyn Widget>

Mutable variant of get Read more
source§

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

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

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

Make an identifier for a child Read more
source§

impl<D, W> WidgetCore for List<D, W>where D: Directional, W: Widget,

source§

fn id_ref(&self) -> &WidgetId

Get the widget’s identifier Read more
source§

fn rect(&self) -> Rect

Get the widget’s region, relative to its parent.
source§

fn widget_name(&self) -> &'static str

Get the name of the widget struct
source§

fn as_widget(&self) -> &dyn Widget

Erase type
source§

fn as_widget_mut(&mut self) -> &mut dyn Widget

Erase type

Auto Trait Implementations§

§

impl<D, W> RefUnwindSafe for List<D, W>where D: RefUnwindSafe, W: RefUnwindSafe,

§

impl<D, W> !Send for List<D, W>

§

impl<D, W> !Sync for List<D, W>

§

impl<D, W> Unpin for List<D, W>where D: Unpin, W: Unpin,

§

impl<D, W> UnwindSafe for List<D, W>where D: UnwindSafe, W: UnwindSafe,

Blanket Implementations§

source§

impl<W> AdaptWidget for Wwhere W: Widget + ?Sized,

source§

fn map_msg<M, N, F>(self, f: F) -> MapMessage<Self, M, N, F>where M: Debug, N: Debug, Self: Sized, F: FnMut(M) -> N,

Construct a wrapper widget which maps a message of the given type
source§

fn with_reserve<R>(self, r: R) -> Reserve<Self, R>where R: FnMut(SizeMgr<'_>, AxisInfo) -> SizeRules, Self: Sized,

Construct a wrapper widget which reserves extra space Read more
source§

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

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

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

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

fn with_label<D, T>(self, direction: D, label: T) -> WithLabel<Self, D>where D: Directional, T: Into<AccelString>, Self: Sized,

Construct a wrapper widget adding a label
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
§

impl<S, T> Cast<T> for Swhere T: Conv<S>,

§

fn cast(self) -> T

Cast from Self to T Read more
§

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

Try converting from Self to T Read more
§

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

§

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

Try approximate conversion from Self to T Read more
§

fn cast_approx(self) -> T

Cast approximately from Self to T Read more
§

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

§

fn cast_trunc(self) -> T

Cast to integer, truncating Read more
§

fn cast_nearest(self) -> T

Cast to the nearest integer Read more
§

fn cast_floor(self) -> T

Cast the floor to an integer Read more
§

fn cast_ceil(self) -> T

Cast the ceiling to an integer Read more
§

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

Try converting to integer with truncation Read more
§

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

Try converting to the nearest integer Read more
§

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

Try converting the floor to an integer Read more
§

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

Try convert the ceiling to an integer Read more
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

source§

impl<T> From<T> for T

const: unstable · 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 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> NoneValue for Twhere T: Default,

§

type NoneType = T

§

fn null_value() -> T

The none-equivalent value.
§

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

impl<R, P> ReadPrimitive<R> for Pwhere R: Read + ReadEndian<P>, P: Default,

source§

fn read_from_little_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_little_endian().
source§

fn read_from_big_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_big_endian().
source§

fn read_from_native_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_native_endian().
source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for Twhere T: Clone,

§

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 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<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

§

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

§

fn vzip(self) -> V

source§

impl<W> WidgetExt for Wwhere W: Widget + ?Sized,

source§

fn id(&self) -> WidgetId

Get the widget’s identifier Read more
source§

fn eq_id<T>(&self, rhs: T) -> boolwhere WidgetId: PartialEq<T>,

Test widget identifier for equality Read more
source§

fn identify(&self) -> IdentifyWidget

Display as “StructName#WidgetId”
source§

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

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

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

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

fn find_widget(&self, id: &WidgetId) -> Option<&dyn Widget>

Find the descendant with this id, if any
source§

fn find_widget_mut(&mut self, id: &WidgetId) -> Option<&mut dyn Widget>

Find the descendant with this id, if any
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