pub struct GenericLayout<W>{ /* 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.
Implementations§
Source§impl<W> GenericLayout<W>
impl<W> GenericLayout<W>
pub fn new() -> Self
Sourcepub fn with_capacity(num_widgets: usize, num_blocks: usize) -> Self
pub fn with_capacity(num_widgets: usize, num_blocks: usize) -> Self
Initialize with a certain capacity.
Sourcepub fn set_area(&mut self, area: Rect)
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.
Sourcepub fn area(&self) -> Rect
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.
Sourcepub fn area_changed(&self, area: Rect) -> bool
pub fn area_changed(&self, area: Rect) -> bool
Area differs from stored area?
Sourcepub fn set_page_size(&mut self, size: Size)
pub fn set_page_size(&mut self, size: Size)
Set the page-size for this layout.
Defaults to (u16::MAX, u16::MAX).
Sourcepub fn size_changed(&self, size: Size) -> bool
pub fn size_changed(&self, size: Size) -> bool
Page-size changed.
Sourcepub fn set_page_count(&mut self, page_count: usize)
pub fn set_page_count(&mut self, page_count: usize)
Number of pages.
Sourcepub fn page_count(&self) -> usize
pub fn page_count(&self) -> usize
Number of pages.
Sourcepub fn add(
&mut self,
key: W,
area: Rect,
label: Option<Cow<'static, str>>,
label_area: Rect,
)
pub fn add( &mut self, key: W, area: Rect, label: Option<Cow<'static, str>>, label_area: Rect, )
Add widget + label areas.
Sourcepub fn place(self, place: Position) -> Self
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.
Sourcepub fn is_endless(&self) -> bool
pub fn is_endless(&self) -> bool
Is this as layout with height = u16::MAX?
Sourcepub fn widget_len(&self) -> usize
pub fn widget_len(&self) -> usize
Number of widgets/labels.
Sourcepub fn try_index_of(&self, widget: W) -> Option<usize>
pub fn try_index_of(&self, widget: W) -> Option<usize>
Returns the index for this widget.
Sourcepub fn index_of(&self, widget: W) -> usize
pub fn index_of(&self, widget: W) -> usize
Returns the index for this widget.
Panic Panics if there is no widget for the key.
Sourcepub fn widget_key(&self, idx: usize) -> W
pub fn widget_key(&self, idx: usize) -> W
Access widget key.
Panic Panics on out of bounds.
Sourcepub fn widget_keys(&self) -> impl Iterator<Item = &W>
pub fn widget_keys(&self) -> impl Iterator<Item = &W>
Access widget keys
Sourcepub fn label_for(&self, widget: W) -> Rect
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.
Sourcepub fn set_label(&mut self, idx: usize, area: Rect)
pub fn set_label(&mut self, idx: usize, area: Rect)
Set the label area.
Panic Panics on out of bounds.
Sourcepub fn widget_for(&self, widget: W) -> Rect
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.
Sourcepub fn set_widget(&mut self, idx: usize, area: Rect)
pub fn set_widget(&mut self, idx: usize, area: Rect)
Change the widget area.
Panic Panics on out of bounds.
Sourcepub fn try_label_str_for(&self, widget: W) -> &Option<Cow<'static, str>>
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.
Sourcepub fn try_label_str(&self, idx: usize) -> &Option<Cow<'static, str>>
pub fn try_label_str(&self, idx: usize) -> &Option<Cow<'static, str>>
Access label string.
Panic Panics on out of bounds.
Sourcepub fn label_str_for(&self, widget: W) -> &str
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.
Sourcepub fn label_str(&self, idx: usize) -> &str
pub fn label_str(&self, idx: usize) -> &str
Access label string.
Panic Panics on out of bounds.
Sourcepub fn set_label_str(&mut self, idx: usize, str: Option<Cow<'static, str>>)
pub fn set_label_str(&mut self, idx: usize, str: Option<Cow<'static, str>>)
Set the label string.
Panic Panics on out of bounds.
Sourcepub fn block_area(&self, idx: usize) -> Rect
pub fn block_area(&self, idx: usize) -> Rect
Access block area.
Panic Panics on out of bounds.
Sourcepub fn set_block_area(&mut self, idx: usize, area: Rect)
pub fn set_block_area(&mut self, idx: usize, area: Rect)
Set the block area.
Panic Panics on out of bounds.
Sourcepub fn block_area_iter(&self) -> impl Iterator<Item = &Rect>
pub fn block_area_iter(&self) -> impl Iterator<Item = &Rect>
Iterate block areas.
Sourcepub fn block(&self, idx: usize) -> &Option<Block<'static>>
pub fn block(&self, idx: usize) -> &Option<Block<'static>>
Access container block.
Panic Panics on out of bounds.
Sourcepub fn set_block(&mut self, idx: usize, block: Option<Block<'static>>)
pub fn set_block(&mut self, idx: usize, block: Option<Block<'static>>)
Set the container block.
Panic Panics on out of bounds.
Sourcepub fn append(&mut self, pos: Position, layout: GenericLayout<W>)
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>
impl<W> Clone for GenericLayout<W>
Source§impl<W> Debug for GenericLayout<W>
impl<W> Debug for GenericLayout<W>
Auto Trait Implementations§
impl<W> Forget for GenericLayout<W>
impl<W> Freeze for GenericLayout<W>
impl<W> RefUnwindSafe for GenericLayout<W>
impl<W> Send for GenericLayout<W>
impl<W> Sync for GenericLayout<W>
impl<W> Unpin for GenericLayout<W>
impl<W> UnsafeUnpin for GenericLayout<W>
impl<W> UnwindSafe for GenericLayout<W>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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