Skip to main content

GenericLayout

Struct GenericLayout 

Source
pub struct GenericLayout<W>
where W: Eq + Hash + Clone,
{ /* private fields */ }
Expand description

Stores labels and areas for a calculated layout, a widget-key is used to access the stored layout.

  • You can keep the layout in some state and only rebuild on GenericLayout::area_changed.
  • It can support the concept of a multipage layout.
    • A widgets y-position divided by the page-height gives a page.
    • Query widgets based on page.
  • As extra Blocks can be added for some visual structure.

See LayoutForm layout_edit

Implementations§

Source§

impl<W> GenericLayout<W>
where W: Eq + Hash + Clone,

Source

pub fn new() -> Self

Source

pub fn with_capacity(num_widgets: usize, num_blocks: usize) -> Self

Initialize with a certain capacity.

Source

pub fn clear(&mut self)

Clear all data.

Source

pub fn set_area(&mut self, area: Rect)

Set an area that was used to build the layout. This doesn’t limit the layout, its sole use is to invalidate the layout.

Source

pub fn area(&self) -> Rect

The area used to build this layout. This doesn’t limit the layout, its sole use is to invalidate the layout.

Source

pub fn area_changed(&self, area: Rect) -> bool

Area differs from stored area?

Source

pub fn set_page_size(&mut self, size: Size)

Set the page-size for this layout.

Defaults to (u16::MAX, u16::MAX).

Source

pub fn page_size(&self) -> Size

Get the page-size for this layout.

Source

pub fn size_changed(&self, size: Size) -> bool

Page-size changed.

Source

pub fn set_page_count(&mut self, page_count: usize)

Number of pages.

Source

pub fn page_count(&self) -> usize

Number of pages.

Source

pub fn add( &mut self, key: W, area: Rect, label: Option<Cow<'static, str>>, label_area: Rect, )

Add widget + label areas.

Source

pub fn add_block(&mut self, area: Rect, block: Option<Block<'static>>)

Add a block.

Source

pub fn place(self, place: Position) -> Self

Places the layout at the given position. This shifts all areas by the given offset.

Most layout functions create a layout that starts at (0,0). That is ok, as the widgets using such a layout associate their top/left position with (0,0) and start from there.

If you want to use the layout without such a widget, this one is nice.

Caution Calling this twice doesn’t accumulate the shifts, the new place replaces the old one.

Source

pub fn first(&self, page: usize) -> Option<W>

First widget on the given page.

Source

pub fn page_of(&self, widget: W) -> Option<usize>

Calculates the page of the widget.

Source

pub fn is_empty(&self) -> bool

Any widgets/blocks?

Source

pub fn is_endless(&self) -> bool

Is this as layout with height = u16::MAX?

Source

pub fn widget_len(&self) -> usize

Number of widgets/labels.

Source

pub fn try_index_of(&self, widget: W) -> Option<usize>

Returns the index for this widget.

Source

pub fn index_of(&self, widget: W) -> usize

Returns the index for this widget.

Panic Panics if there is no widget for the key.

Source

pub fn widget_key(&self, idx: usize) -> W

Access widget key.

Panic Panics on out of bounds.

Source

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

Access widget keys

Source

pub fn label_for(&self, widget: W) -> Rect

Access the label area by key.

Panic Panics on out of bounds. Panics if the key doesn’t exist.

Source

pub fn label(&self, idx: usize) -> Rect

Access label area.

Panic Panics on out of bounds.

Source

pub fn set_label(&mut self, idx: usize, area: Rect)

Set the label area.

Panic Panics on out of bounds.

Source

pub fn widget_for(&self, widget: W) -> Rect

Access the widget area by key.

Panic Panics on out of bounds. Panics if the key doesn’t exist.

Source

pub fn widget(&self, idx: usize) -> Rect

Access widget area.

Panic Panics on out of bounds.

Source

pub fn set_widget(&mut self, idx: usize, area: Rect)

Change the widget area.

Panic Panics on out of bounds.

Source

pub fn try_label_str_for(&self, widget: W) -> &Option<Cow<'static, str>>

Access the label string by key.

Panic Panics on out of bounds. Panics if the key doesn’t exist.

Source

pub fn try_label_str(&self, idx: usize) -> &Option<Cow<'static, str>>

Access label string.

Panic Panics on out of bounds.

Source

pub fn label_str_for(&self, widget: W) -> &str

Access the label string by key.

Panic Panics on out of bounds. Panics if the key doesn’t exist.

Source

pub fn label_str(&self, idx: usize) -> &str

Access label string.

Panic Panics on out of bounds.

Source

pub fn set_label_str(&mut self, idx: usize, str: Option<Cow<'static, str>>)

Set the label string.

Panic Panics on out of bounds.

Source

pub fn block_len(&self) -> usize

Container count.

Source

pub fn block_area(&self, idx: usize) -> Rect

Access block area.

Panic Panics on out of bounds.

Source

pub fn set_block_area(&mut self, idx: usize, area: Rect)

Set the block area.

Panic Panics on out of bounds.

Source

pub fn block_area_iter(&self) -> impl Iterator<Item = &Rect>

Iterate block areas.

Source

pub fn block(&self, idx: usize) -> &Option<Block<'static>>

Access container block.

Panic Panics on out of bounds.

Source

pub fn set_block(&mut self, idx: usize, block: Option<Block<'static>>)

Set the container block.

Panic Panics on out of bounds.

Source

pub fn append(&mut self, pos: Position, layout: GenericLayout<W>)

Append another layout.

Shifts the second layout to the given starting position and adds everything.

If the given layout uses the same widget-identifiers, they will simply overwrite existing ones.

Trait Implementations§

Source§

impl<W> Clone for GenericLayout<W>
where W: Eq + Hash + Clone + Clone,

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl<W> Debug for GenericLayout<W>
where W: Eq + Hash + Clone + Debug,

Source§

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

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

impl<W> Default for GenericLayout<W>
where W: Eq + Hash + Clone,

Source§

fn default() -> Self

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

Auto Trait Implementations§

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, dest: *mut u8)

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

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

Source§

fn __clone_box(&self, _: Private) -> *mut ()

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

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
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 = !

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

fn try_from(value: U) -> Result<T, !>

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.