pub struct StackView { /* private fields */ }
Expand description
Simple stack of views. Only the top-most view is active and can receive input.
Implementations
sourceimpl StackView
impl StackView
sourcepub fn fits(&self, position: LayerPosition) -> bool
pub fn fits(&self, position: LayerPosition) -> bool
Returns true
if position
points to a valid layer.
Returns false
if it exceeds the bounds.
sourcepub fn add_fullscreen_layer<T>(&mut self, view: T) where
T: IntoBoxedView,
pub fn add_fullscreen_layer<T>(&mut self, view: T) where
T: IntoBoxedView,
Adds a new full-screen layer on top of the stack.
Fullscreen layers have no shadow.
sourcepub fn add_layer<T>(&mut self, view: T) where
T: IntoBoxedView,
pub fn add_layer<T>(&mut self, view: T) where
T: IntoBoxedView,
Adds new view on top of the stack in the center of the screen.
sourcepub fn layer<T>(self, view: T) -> StackView where
T: IntoBoxedView,
pub fn layer<T>(self, view: T) -> StackView where
T: IntoBoxedView,
Adds new view on top of the stack in the center of the screen.
Chainable variant.
sourcepub fn get(&self, pos: LayerPosition) -> Option<&(dyn View + 'static)>
pub fn get(&self, pos: LayerPosition) -> Option<&(dyn View + 'static)>
Returns a reference to the layer at the given position.
sourcepub fn get_mut(
&mut self,
pos: LayerPosition
) -> Option<&mut (dyn View + 'static)>
pub fn get_mut(
&mut self,
pos: LayerPosition
) -> Option<&mut (dyn View + 'static)>
Returns a mutable reference to the layer at the given position.
sourcepub fn find_layer_from_name(&mut self, id: &str) -> Option<LayerPosition>
pub fn find_layer_from_name(&mut self, id: &str) -> Option<LayerPosition>
Looks for the layer containing a view with the given name.
Returns Some(pos)
if self.get(pos)
has the given name,
or is a parent of a view with this name.
Returns None
if the given name is not found.
Note that the returned position may be invalidated if some layers are removed from the view.
Examples
let mut stack = StackView::new();
stack.add_layer(TextView::new("Back"));
stack.add_layer(Dialog::around(TextView::new("Middle").with_name("text")));
stack.add_layer(TextView::new("Front"));
assert_eq!(stack.find_layer_from_name("text"), Some(LayerPosition::FromBack(1)));
sourcepub fn fullscreen_layer<T>(self, view: T) -> StackView where
T: IntoBoxedView,
pub fn fullscreen_layer<T>(self, view: T) -> StackView where
T: IntoBoxedView,
Adds a new full-screen layer on top of the stack.
Chainable variant.
sourcepub fn transparent_layer<T>(self, view: T) -> StackView where
T: IntoBoxedView,
pub fn transparent_layer<T>(self, view: T) -> StackView where
T: IntoBoxedView,
Adds a new transparent layer on top of the stack.
Chainable variant.
sourcepub fn add_layer_at<T>(&mut self, position: XY<Offset>, view: T) where
T: IntoBoxedView,
pub fn add_layer_at<T>(&mut self, position: XY<Offset>, view: T) where
T: IntoBoxedView,
Adds a view on top of the stack.
sourcepub fn add_transparent_layer<T>(&mut self, view: T) where
T: IntoBoxedView,
pub fn add_transparent_layer<T>(&mut self, view: T) where
T: IntoBoxedView,
Adds a transparent view on top of the stack in the center of the screen.
sourcepub fn add_transparent_layer_at<T>(&mut self, position: XY<Offset>, view: T) where
T: IntoBoxedView,
pub fn add_transparent_layer_at<T>(&mut self, position: XY<Offset>, view: T) where
T: IntoBoxedView,
Adds a transparent view on top of the stack.
sourcepub fn layer_at<T>(self, position: XY<Offset>, view: T) -> StackView where
T: IntoBoxedView,
pub fn layer_at<T>(self, position: XY<Offset>, view: T) -> StackView where
T: IntoBoxedView,
Adds a view on top of the stack at the given position.
Chainable variant.
sourcepub fn remove_layer(
&mut self,
position: LayerPosition
) -> Box<dyn View + 'static, Global>ⓘNotable traits for Box<I, A>impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;impl<F, A> Future for Box<F, A> where
F: Future + Unpin + ?Sized,
A: Allocator + 'static, type Output = <F as Future>::Output;
pub fn remove_layer(
&mut self,
position: LayerPosition
) -> Box<dyn View + 'static, Global>ⓘNotable traits for Box<I, A>impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;impl<F, A> Future for Box<F, A> where
F: Future + Unpin + ?Sized,
A: Allocator + 'static, type Output = <F as Future>::Output;
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;impl<F, A> Future for Box<F, A> where
F: Future + Unpin + ?Sized,
A: Allocator + 'static, type Output = <F as Future>::Output;
sourcepub fn pop_layer(&mut self) -> Option<Box<dyn View + 'static, Global>>
pub fn pop_layer(&mut self) -> Option<Box<dyn View + 'static, Global>>
Remove the top-most layer.
sourcepub fn layer_offset(&self, pos: LayerPosition) -> Option<XY<usize>>
pub fn layer_offset(&self, pos: LayerPosition) -> Option<XY<usize>>
Computes the offset of the selected view.
sourcepub fn offset(&self) -> XY<usize>
👎 Deprecated since 0.17.0: Use StackView::layer_offset instead.
pub fn offset(&self) -> XY<usize>
Use StackView::layer_offset instead.
Computes the offset of the current top view.
sourcepub fn layer_sizes(&self) -> Vec<XY<usize>, Global>
pub fn layer_sizes(&self) -> Vec<XY<usize>, Global>
Returns the size for each layer in this view.
sourcepub fn move_layer(&mut self, from: LayerPosition, to: LayerPosition)
pub fn move_layer(&mut self, from: LayerPosition, to: LayerPosition)
Moves a layer to a new position in the stack.
This only affects the elevation of a layer (whether it is drawn over or under other views).
Panics
If either from
or to
is out of bounds.
sourcepub fn move_to_front(&mut self, layer: LayerPosition)
pub fn move_to_front(&mut self, layer: LayerPosition)
sourcepub fn move_to_back(&mut self, layer: LayerPosition)
pub fn move_to_back(&mut self, layer: LayerPosition)
sourcepub fn reposition_layer(&mut self, layer: LayerPosition, position: XY<Offset>)
pub fn reposition_layer(&mut self, layer: LayerPosition, position: XY<Offset>)
Trait Implementations
sourceimpl View for StackView
impl View for StackView
sourcefn draw(&self, printer: &Printer<'_, '_>)
fn draw(&self, printer: &Printer<'_, '_>)
Draws the view with the given printer (includes bounds) and focus. Read more
sourcefn on_event(&mut self, event: Event) -> EventResult
fn on_event(&mut self, event: Event) -> EventResult
Called when an event is received (key press, mouse event, …). Read more
sourcefn layout(&mut self, size: XY<usize>)
fn layout(&mut self, size: XY<usize>)
Called once the size for this view has been decided. Read more
sourcefn required_size(&mut self, size: XY<usize>) -> XY<usize>
fn required_size(&mut self, size: XY<usize>) -> XY<usize>
Returns the minimum size the view requires with the given restrictions. Read more
sourcefn take_focus(&mut self, source: Direction) -> Result<EventResult, CannotFocus>
fn take_focus(&mut self, source: Direction) -> Result<EventResult, CannotFocus>
Attempt to give this view the focus. Read more
sourcefn call_on_any(
&mut self,
selector: &Selector<'_>,
callback: &'a mut (dyn FnMut(&mut (dyn View + 'static)) + 'a)
)
fn call_on_any(
&mut self,
selector: &Selector<'_>,
callback: &'a mut (dyn FnMut(&mut (dyn View + 'static)) + 'a)
)
Runs a closure on the view identified by the given selector. Read more
sourcefn focus_view(
&mut self,
selector: &Selector<'_>
) -> Result<EventResult, ViewNotFound>
fn focus_view(
&mut self,
selector: &Selector<'_>
) -> Result<EventResult, ViewNotFound>
Moves the focus to the view identified by the given selector. Read more
sourcefn needs_relayout(&self) -> bool
fn needs_relayout(&self) -> bool
Should return true
if the view content changed since the last call
to layout()
. Read more
Auto Trait Implementations
impl !RefUnwindSafe for StackView
impl !Send for StackView
impl !Sync for StackView
impl Unpin for StackView
impl !UnwindSafe for StackView
Blanket Implementations
sourceimpl<T> AnyView for T where
T: View,
impl<T> AnyView for T where
T: View,
sourcefn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Downcast self to a mutable Any
.
sourcefn as_boxed_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>ⓘNotable traits for Box<I, A>impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;impl<F, A> Future for Box<F, A> where
F: Future + Unpin + ?Sized,
A: Allocator + 'static, type Output = <F as Future>::Output;
fn as_boxed_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>ⓘNotable traits for Box<I, A>impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;impl<F, A> Future for Box<F, A> where
F: Future + Unpin + ?Sized,
A: Allocator + 'static, type Output = <F as Future>::Output;
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;impl<F, A> Future for Box<F, A> where
F: Future + Unpin + ?Sized,
A: Allocator + 'static, type Output = <F as Future>::Output;
Returns a boxed any from a boxed self. Read more
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Finder for T where
T: View,
impl<T> Finder for T where
T: View,
sourcefn call_on_all<V, F>(&mut self, sel: &Selector<'_>, callback: F) where
V: View,
F: FnMut(&mut V),
fn call_on_all<V, F>(&mut self, sel: &Selector<'_>, callback: F) where
V: View,
F: FnMut(&mut V),
Runs a callback on all views identified by sel
. Read more
sourcefn call_on<V, F, R>(&mut self, sel: &Selector<'_>, callback: F) -> Option<R> where
V: View,
F: FnOnce(&mut V) -> R,
fn call_on<V, F, R>(&mut self, sel: &Selector<'_>, callback: F) -> Option<R> where
V: View,
F: FnOnce(&mut V) -> R,
Runs a callback on the view identified by sel
. Read more
sourceimpl<T> IntoBoxedView for T where
T: View,
impl<T> IntoBoxedView for T where
T: View,
sourcefn into_boxed_view(self) -> Box<dyn View + 'static, Global>ⓘNotable traits for Box<I, A>impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;impl<F, A> Future for Box<F, A> where
F: Future + Unpin + ?Sized,
A: Allocator + 'static, type Output = <F as Future>::Output;
fn into_boxed_view(self) -> Box<dyn View + 'static, Global>ⓘNotable traits for Box<I, A>impl<I, A> Iterator for Box<I, A> where
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;impl<F, A> Future for Box<F, A> where
F: Future + Unpin + ?Sized,
A: Allocator + 'static, type Output = <F as Future>::Output;
I: Iterator + ?Sized,
A: Allocator, type Item = <I as Iterator>::Item;impl<F, A> Future for Box<F, A> where
F: Future + Unpin + ?Sized,
A: Allocator + 'static, type Output = <F as Future>::Output;
Returns a Box<View>
.
sourceimpl<T> Resizable for T where
T: View,
impl<T> Resizable for T where
T: View,
sourcefn resized(
self,
width: SizeConstraint,
height: SizeConstraint
) -> ResizedView<Self>
fn resized(
self,
width: SizeConstraint,
height: SizeConstraint
) -> ResizedView<Self>
Wraps self
in a ResizedView
with the given size constraints.
sourcefn fixed_size<S>(self, size: S) -> ResizedView<Self> where
S: Into<XY<usize>>,
fn fixed_size<S>(self, size: S) -> ResizedView<Self> where
S: Into<XY<usize>>,
Wraps self
into a fixed-size ResizedView
.
sourcefn fixed_width(self, width: usize) -> ResizedView<Self>
fn fixed_width(self, width: usize) -> ResizedView<Self>
Wraps self
into a fixed-width ResizedView
.
sourcefn fixed_height(self, height: usize) -> ResizedView<Self>
fn fixed_height(self, height: usize) -> ResizedView<Self>
Wraps self
into a fixed-width ResizedView
.
sourcefn full_screen(self) -> ResizedView<Self>
fn full_screen(self) -> ResizedView<Self>
Wraps self
into a full-screen ResizedView
.
sourcefn full_width(self) -> ResizedView<Self>
fn full_width(self) -> ResizedView<Self>
Wraps self
into a full-width ResizedView
.
sourcefn full_height(self) -> ResizedView<Self>
fn full_height(self) -> ResizedView<Self>
Wraps self
into a full-height ResizedView
.
sourcefn max_size<S>(self, size: S) -> ResizedView<Self> where
S: Into<XY<usize>>,
fn max_size<S>(self, size: S) -> ResizedView<Self> where
S: Into<XY<usize>>,
Wraps self
into a limited-size ResizedView
.
sourcefn max_width(self, max_width: usize) -> ResizedView<Self>
fn max_width(self, max_width: usize) -> ResizedView<Self>
Wraps self
into a limited-width ResizedView
.
sourcefn max_height(self, max_height: usize) -> ResizedView<Self>
fn max_height(self, max_height: usize) -> ResizedView<Self>
Wraps self
into a limited-height ResizedView
.
sourcefn min_size<S>(self, size: S) -> ResizedView<Self> where
S: Into<XY<usize>>,
fn min_size<S>(self, size: S) -> ResizedView<Self> where
S: Into<XY<usize>>,
Wraps self
into a ResizedView
at least sized size
.
sourcefn min_width(self, min_width: usize) -> ResizedView<Self>
fn min_width(self, min_width: usize) -> ResizedView<Self>
Wraps self
in a ResizedView
at least min_width
wide.
sourcefn min_height(self, min_height: usize) -> ResizedView<Self>
fn min_height(self, min_height: usize) -> ResizedView<Self>
Wraps self
in a ResizedView
at least min_height
tall.
sourceimpl<T> Scrollable for T where
T: View,
impl<T> Scrollable for T where
T: View,
sourcefn scrollable(self) -> ScrollView<Self>
fn scrollable(self) -> ScrollView<Self>
Wraps self
in a ScrollView
.