pub struct DialogStack<Event, Context, Error> { /* private fields */ }
Expand description
Hold a stack of widgets.
Renders the widgets and can handle events.
Hold the dialog-stack in your global state, call render() at the very end of rendering and handle() near the start of event-handling.
This will not handle modality, so make sure to consume all events you don’t want to propagate.
Implementations§
Source§impl<Event, Context, Error> DialogStack<Event, Context, Error>
impl<Event, Context, Error> DialogStack<Event, Context, Error>
Sourcepub fn render(self, area: Rect, buf: &mut Buffer, ctx: &mut Context)
pub fn render(self, area: Rect, buf: &mut Buffer, ctx: &mut Context)
Render all dialog-windows in stack-order.
Source§impl<Event, Context, Error> DialogStack<Event, Context, Error>
impl<Event, Context, Error> DialogStack<Event, Context, Error>
pub fn new() -> Self
Sourcepub fn push(
&self,
render: impl Fn(Rect, &mut Buffer, &mut dyn Any, &mut Context) + 'static,
event: impl Fn(&Event, &mut dyn Any, &mut Context) -> Result<WindowControl<Event>, Error> + 'static,
state: impl Any,
)
pub fn push( &self, render: impl Fn(Rect, &mut Buffer, &mut dyn Any, &mut Context) + 'static, event: impl Fn(&Event, &mut dyn Any, &mut Context) -> Result<WindowControl<Event>, Error> + 'static, state: impl Any, )
Push a dialog-window on the stack.
- render is called in reverse stack order, to render bottom to top.
- event is called in stack-order to handle events. if you don’t want events to propagate to dialog-windows in the background, you must consume them by returning StackControl::Unchanged.
- state as Any
Sourcepub fn pop(&self) -> Option<Box<dyn Any>>
pub fn pop(&self) -> Option<Box<dyn Any>>
Pop the top dialog-window from the stack.
It will return None if the stack is empty.
Panic
This function is partially reentrant. When called during rendering/event-handling it will panic when trying to pop your current dialog-window. Return WindowControl::Close instead of calling this function.
Sourcepub fn remove(&self, n: usize) -> Box<dyn Any>
pub fn remove(&self, n: usize) -> Box<dyn Any>
Remove some dialog-window.
Panic
This function is not reentrant. It will panic when called during rendering or event-handling of any dialog-window. Return WindowControl::Close instead of calling this function.
Panics when out-of-bounds.
Sourcepub fn get<'a, S: 'static>(&'a self, n: usize) -> Ref<'a, S>
pub fn get<'a, S: 'static>(&'a self, n: usize) -> Ref<'a, S>
Get a reference to the state at index n.
Panic
Panics when out-of-bounds. Panics when recursively accessing the same state. Accessing a different window-state is fine. Panics when the types don’t match.
Sourcepub fn get_mut<'a, S: 'static>(&'a self, n: usize) -> RefMut<'a, S>
pub fn get_mut<'a, S: 'static>(&'a self, n: usize) -> RefMut<'a, S>
Get a mutable reference to the state at index n.
Panic
Panics when out-of-bounds. Panics when recursively accessing the same state. Accessing a different window-state is fine. Panics when the types don’t match.
Sourcepub fn try_get_mut<'a, S: 'static>(&'a self, n: usize) -> Option<RefMut<'a, S>>
pub fn try_get_mut<'a, S: 'static>(&'a self, n: usize) -> Option<RefMut<'a, S>>
Get a mutable reference to the state at index n.
Panic
Panics when out-of-bounds.
Fails
Fails when recursively accessing the same state. Accessing a different window-state is fine. Fails when the types don’t match.
Trait Implementations§
Source§impl<Event, Context, Error> Clone for DialogStack<Event, Context, Error>
impl<Event, Context, Error> Clone for DialogStack<Event, Context, Error>
Source§impl<Event, Context, Error> Debug for DialogStack<Event, Context, Error>
impl<Event, Context, Error> Debug for DialogStack<Event, Context, Error>
Source§impl<Event, Context, Error> Default for DialogStack<Event, Context, Error>
impl<Event, Context, Error> Default for DialogStack<Event, Context, Error>
Source§impl<Event, Context, Error> HandleEvent<Event, &mut Context, Result<WindowControl<Event>, Error>> for DialogStack<Event, Context, Error>
Handle events from top to bottom of the stack.
impl<Event, Context, Error> HandleEvent<Event, &mut Context, Result<WindowControl<Event>, Error>> for DialogStack<Event, Context, Error>
Handle events from top to bottom of the stack.
Panic
This function is not reentrant, it will panic when called from within it’s call-stack.
Source§fn handle(
&mut self,
event: &Event,
ctx: &mut Context,
) -> Result<WindowControl<Event>, Error>
fn handle( &mut self, event: &Event, ctx: &mut Context, ) -> Result<WindowControl<Event>, Error>
Auto Trait Implementations§
impl<Event, Context, Error> Freeze for DialogStack<Event, Context, Error>
impl<Event, Context, Error> !RefUnwindSafe for DialogStack<Event, Context, Error>
impl<Event, Context, Error> !Send for DialogStack<Event, Context, Error>
impl<Event, Context, Error> !Sync for DialogStack<Event, Context, Error>
impl<Event, Context, Error> Unpin for DialogStack<Event, Context, Error>
impl<Event, Context, Error> !UnwindSafe for DialogStack<Event, Context, Error>
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