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<DialogControl<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<DialogControl<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 StackControl::Pop 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. Panics when out-of-bounds.
Sourcepub fn to_front(&self, n: usize)
pub fn to_front(&self, n: usize)
Move the given dialog-window to the top of the stack.
Panic
This function is not reentrant. It will panic when called during rendering or event-handling of any dialog-window. Use StackControl::ToFront for this.
Panics when out-of-bounds.
Sourcepub fn apply<S: 'static, R>(&self, n: usize, f: impl Fn(&S) -> R) -> R
pub fn apply<S: 'static, R>(&self, n: usize, f: impl Fn(&S) -> R) -> R
Run f for the given instance of S.
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 apply_mut<S: 'static, R>(
&mut self,
n: usize,
f: impl Fn(&mut S) -> R,
) -> R
pub fn apply_mut<S: 'static, R>( &mut self, n: usize, f: impl Fn(&mut S) -> R, ) -> R
Run f for the given instance of S with exclusive/mutabel access.
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.
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<Control<Event>, Error>> for DialogStack<Event, Context, Error>where
Context: SalsaContext<Event, Error>,
Error: 'static,
Event: 'static,
Handle events from top to bottom of the stack.
impl<Event, Context, Error> HandleEvent<Event, &mut Context, Result<Control<Event>, Error>> for DialogStack<Event, Context, Error>where
Context: SalsaContext<Event, Error>,
Error: 'static,
Event: 'static,
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.
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