pub struct DialogStack<Event, Context, Error> { /* private fields */ }Expand description
Hold a stack of dialog-widgets.
Renders them and integrates them into event-handling.
Hold the dialog-stack in your global state, call render() at the very end of rendering and handle() near the start of event-handling.
The event-handler will consume all crossterm events and block any widget interaction later in event-handling. It will pass through any application level events.
Implementations§
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.
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.
crossterm events will only be passed on to the first dialog window. Other application events will go through all the windows on the stack until they are consumed.
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>
Source§impl<Event, Context, Error> StatefulWidget for DialogStack<Event, Context, Error>
impl<Event, Context, Error> StatefulWidget for DialogStack<Event, Context, 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