[][src]Struct cursive::views::StackView

pub struct StackView { /* fields omitted */ }

Simple stack of views. Only the top-most view is active and can receive input.

Methods

impl StackView[src]

pub fn new() -> Self[src]

Creates a new empty StackView

pub fn len(&self) -> usize[src]

Returns the number of layers in this StackView.

pub fn is_empty(&self) -> bool[src]

Returns true if there is no layer in this StackView.

pub fn fits(&self, position: LayerPosition) -> bool[src]

Returns true if position points to a valid layer.

Returns false if it exceeds the bounds.

pub fn add_fullscreen_layer<T>(&mut self, view: T) where
    T: IntoBoxedView
[src]

Adds a new full-screen layer on top of the stack.

Fullscreen layers have no shadow.

pub fn add_layer<T>(&mut self, view: T) where
    T: IntoBoxedView
[src]

Adds new view on top of the stack in the center of the screen.

pub fn layer<T>(self, view: T) -> Self where
    T: IntoBoxedView
[src]

Adds new view on top of the stack in the center of the screen.

Chainable variant.

pub fn get(&self, pos: LayerPosition) -> Option<&dyn View>[src]

Returns a reference to the layer at the given position.

pub fn get_mut(&mut self, pos: LayerPosition) -> Option<&mut dyn View>[src]

Returns a mutable reference to the layer at the given position.

pub fn find_layer_from_id(&mut self, id: &str) -> Option<LayerPosition>[src]

Looks for the layer containing a view with the given ID.

Returns Some(pos) if self.get(pos) has the given ID, or is a parent of a view with this ID.

Returns None if the given ID 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_id("text")));
stack.add_layer(TextView::new("Front"));

assert_eq!(stack.find_layer_from_id("text"), Some(LayerPosition::FromBack(1)));

pub fn fullscreen_layer<T>(self, view: T) -> Self where
    T: IntoBoxedView
[src]

Adds a new full-screen layer on top of the stack.

Chainable variant.

pub fn transparent_layer<T>(self, view: T) -> Self where
    T: IntoBoxedView
[src]

Adds a new transparent layer on top of the stack.

Chainable variant.

pub fn add_layer_at<T>(&mut self, position: Position, view: T) where
    T: IntoBoxedView
[src]

Adds a view on top of the stack.

pub fn add_transparent_layer<T>(&mut self, view: T) where
    T: IntoBoxedView
[src]

Adds a transparent view on top of the stack in the center of the screen.

pub fn add_transparent_layer_at<T>(&mut self, position: Position, view: T) where
    T: IntoBoxedView
[src]

Adds a transparent view on top of the stack.

pub fn layer_at<T>(self, position: Position, view: T) -> Self where
    T: IntoBoxedView
[src]

Adds a view on top of the stack at the given position.

Chainable variant.

pub fn remove_layer(&mut self, position: LayerPosition) -> Box<dyn View>[src]

Remove a layer from this StackView.

Panics

If the given position is out of bounds.

pub fn pop_layer(&mut self) -> Option<Box<dyn View>>[src]

Remove the top-most layer.

pub fn offset(&self) -> Vec2[src]

Computes the offset of the current top view.

pub fn layer_sizes(&self) -> Vec<Vec2>[src]

Returns the size for each layer in this view.

pub fn move_layer(&mut self, from: LayerPosition, to: LayerPosition)[src]

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.

pub fn move_to_front(&mut self, layer: LayerPosition)[src]

Brings the given view to the front of the stack.

Panics

If layer is out of bounds.

pub fn move_to_back(&mut self, layer: LayerPosition)[src]

Pushes the given view to the back of the stack.

Panics

If layer is out of bounds.

pub fn reposition_layer(&mut self, layer: LayerPosition, position: Position)[src]

Moves a layer to a new position on the screen.

Panics

If layer is out of bounds.

pub fn draw_bg(&self, printer: &Printer)[src]

Background drawing

Drawing functions are split into forground and background to ease inserting layers under the stackview but above its background.

you probably just want to call draw()

pub fn draw_fg(&self, printer: &Printer)[src]

Forground drawing

Drawing functions are split into forground and background to ease inserting layers under the stackview but above its background.

You probably just want to call draw()

Trait Implementations

impl View for StackView[src]

fn needs_relayout(&self) -> bool[src]

Should return true if the view content changed since the last call to layout(). Read more

fn important_area(&self, view_size: Vec2) -> Rect[src]

What part of the view is important and should be visible? Read more

impl Default for StackView[src]

Auto Trait Implementations

impl !Send for StackView

impl !Sync for StackView

Blanket Implementations

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T> From for T[src]

impl<T, U> TryFrom for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> Erased for T[src]