Struct cursive::views::OnEventView [−][src]
pub struct OnEventView<T> { /* fields omitted */ }
Expand description
A wrapper view that can react to events.
This view registers a set of callbacks tied to specific events, to be run in certain conditions.
-
Some callbacks are called only for events ignored by the wrapped view.
(those registered by
on_event
oron_event_inner
) -
Others are processed first, and can control whether the child view should be given the event (those registered by
on_pre_event
oron_pre_event_inner
).
“Inner” callbacks (on_event_inner
and on_pre_event_inner
) are given
a reference to the inner wrapped view (but not to the Cursive
root). They
can then return another callback, taking only a &mut Cursive
root as
argument.
“Simple” callbacks (on_event
and on_pre_event
) skip this first
phase and are only called with a &mut Cursive
.
Examples
let view = OnEventView::new(TextView::new("This view has an event!"))
.on_event('q', |s| s.quit())
.on_event(event::Key::Esc, |s| s.quit());
Implementations
Wraps the given view in a new OnEventView.
Remove all callbacks associated with the given event.
pub fn on_event<F, E>(self, trigger: E, cb: F) -> OnEventView<T> where
E: Into<EventTrigger>,
F: 'static + Fn(&mut Cursive),
pub fn on_event<F, E>(self, trigger: E, cb: F) -> OnEventView<T> where
E: Into<EventTrigger>,
F: 'static + Fn(&mut Cursive),
Registers a callback when the given event is ignored by the child.
Chainable variant.
Examples
let view = OnEventView::new(DummyView)
.on_event('q', |s| s.quit())
.on_event(Key::Esc, |s| {
s.pop_layer();
})
.on_event(EventTrigger::mouse(), |s| {
s.add_layer(DummyView);
});
pub fn on_pre_event<F, E>(self, trigger: E, cb: F) -> OnEventView<T> where
E: Into<EventTrigger>,
F: 'static + Fn(&mut Cursive),
pub fn on_pre_event<F, E>(self, trigger: E, cb: F) -> OnEventView<T> where
E: Into<EventTrigger>,
F: 'static + Fn(&mut Cursive),
Registers a callback when the given event is received.
The child will never receive this event.
Chainable variant.
pub fn on_pre_event_inner<F, E>(self, trigger: E, cb: F) -> OnEventView<T> where
E: Into<EventTrigger>,
F: 'static + Fn(&mut T, &Event) -> Option<EventResult>,
pub fn on_pre_event_inner<F, E>(self, trigger: E, cb: F) -> OnEventView<T> where
E: Into<EventTrigger>,
F: 'static + Fn(&mut T, &Event) -> Option<EventResult>,
Registers a callback when the given event is received.
The given callback will be run before the child view sees the event.
- If the result is
None
, then the child view is given the event as usual. - Otherwise, it bypasses the child view and directly processes the result.
Chainable variant.
pub fn on_event_inner<F, E>(self, trigger: E, cb: F) -> OnEventView<T> where
E: Into<EventTrigger>,
F: 'static + Fn(&mut T, &Event) -> Option<EventResult>,
pub fn on_event_inner<F, E>(self, trigger: E, cb: F) -> OnEventView<T> where
E: Into<EventTrigger>,
F: 'static + Fn(&mut T, &Event) -> Option<EventResult>,
Registers a callback when the given event is ignored by the child.
This is an advanced method to get more control.
on_event
may be easier to use.
If the child view ignores the event, cb
will be called with the
child view as argument.
If the result is not None
, it will be processed as well.
Chainable variant.
Examples
let view = OnEventView::new(DummyView)
.on_event_inner(
EventTrigger::mouse(),
|d: &mut DummyView, e: &Event| {
if let &Event::Mouse { event: MouseEvent::Press(_), .. } = e {
// Do something on mouse press
Some(EventResult::with_cb(|s| {
s.pop_layer();
}))
} else {
// Otherwise, don't do anything
None
}
}
);
pub fn set_on_event<F, E>(&mut self, trigger: E, cb: F) where
E: Into<EventTrigger>,
F: 'static + Fn(&mut Cursive),
pub fn set_on_event<F, E>(&mut self, trigger: E, cb: F) where
E: Into<EventTrigger>,
F: 'static + Fn(&mut Cursive),
Registers a callback when the given event is ignored by the child.
pub fn set_on_pre_event<F, E>(&mut self, trigger: E, cb: F) where
E: Into<EventTrigger>,
F: 'static + Fn(&mut Cursive),
pub fn set_on_pre_event<F, E>(&mut self, trigger: E, cb: F) where
E: Into<EventTrigger>,
F: 'static + Fn(&mut Cursive),
Registers a callback when the given event is received.
The child will never receive this event.
pub fn set_on_pre_event_inner<F, E>(&mut self, trigger: E, cb: F) where
E: Into<EventTrigger>,
F: 'static + Fn(&mut T, &Event) -> Option<EventResult>,
pub fn set_on_pre_event_inner<F, E>(&mut self, trigger: E, cb: F) where
E: Into<EventTrigger>,
F: 'static + Fn(&mut T, &Event) -> Option<EventResult>,
Registers a callback when the given event is received.
The given callback will be run before the child view sees the event.
- If the result is
None
, then the child view is given the event as usual. - Otherwise, it bypasses the child view and directly processes the result.
pub fn set_on_event_inner<F, E>(&mut self, trigger: E, cb: F) where
E: Into<EventTrigger>,
F: 'static + Fn(&mut T, &Event) -> Option<EventResult>,
pub fn set_on_event_inner<F, E>(&mut self, trigger: E, cb: F) where
E: Into<EventTrigger>,
F: 'static + Fn(&mut T, &Event) -> Option<EventResult>,
Registers a callback when the given event is ignored by the child.
If the child view ignores the event, cb
will be called with the
child view as argument.
If the result is not None
, it will be processed as well.
Remove any callbacks defined for this view.
Gets mutable access to the inner view.
Trait Implementations
Returns the “default value” for a type. Read more
type V = T
type V = T
Type that this view wraps.
pub fn with_view<F, R>(&self, f: F) -> Option<R> where
F: FnOnce(&<OnEventView<T> as ViewWrapper>::V) -> R,
pub fn with_view<F, R>(&self, f: F) -> Option<R> where
F: FnOnce(&<OnEventView<T> as ViewWrapper>::V) -> R,
Runs a function on the inner view, returning the result. Read more
pub fn with_view_mut<F, R>(&mut self, f: F) -> Option<R> where
F: FnOnce(&mut <OnEventView<T> as ViewWrapper>::V) -> R,
pub fn with_view_mut<F, R>(&mut self, f: F) -> Option<R> where
F: FnOnce(&mut <OnEventView<T> as ViewWrapper>::V) -> R,
Runs a function on the inner view, returning the result. Read more
pub fn into_inner(
self
) -> Result<<OnEventView<T> as ViewWrapper>::V, OnEventView<T>> where
<OnEventView<T> as ViewWrapper>::V: Sized,
pub fn into_inner(
self
) -> Result<<OnEventView<T> as ViewWrapper>::V, OnEventView<T>> where
<OnEventView<T> as ViewWrapper>::V: Sized,
Attempts to retrieve the inner view.
Wraps the on_event
method.
Wraps the layout
method.
Wraps the take_focus
method.
fn wrap_call_on_any(
&mut self,
selector: &Selector<'_>,
callback: &'a mut (dyn FnMut(&mut (dyn View + 'static)) + 'a)
)
fn wrap_call_on_any(
&mut self,
selector: &Selector<'_>,
callback: &'a mut (dyn FnMut(&mut (dyn View + 'static)) + 'a)
)
Wraps the find
method.
Wraps the focus_view
method.
Wraps the needs_relayout
method.
Wraps the important_area
method.
Auto Trait Implementations
impl<T> !RefUnwindSafe for OnEventView<T>
impl<T> !Send for OnEventView<T>
impl<T> !Sync for OnEventView<T>
impl<T> Unpin for OnEventView<T> where
T: Unpin,
impl<T> !UnwindSafe for OnEventView<T>
Blanket Implementations
Mutably borrows from an owned value. Read more
pub fn into_boxed_view(self) -> Box<dyn View + 'static, Global>ⓘ
pub fn into_boxed_view(self) -> Box<dyn View + 'static, Global>ⓘ
Returns a Box<View>
.
Wraps self
in a ResizedView
with the given size constraints.
Wraps self
into a fixed-size ResizedView
.
Wraps self
into a fixed-width ResizedView
.
Wraps self
into a fixed-width ResizedView
.
Wraps self
into a full-screen ResizedView
.
Wraps self
into a full-width ResizedView
.
Wraps self
into a full-height ResizedView
.
Wraps self
into a limited-size ResizedView
.
Wraps self
into a limited-width ResizedView
.
Wraps self
into a limited-height ResizedView
.
Wraps self
into a ResizedView
at least sized size
.
Wraps self
in a ResizedView
at least min_width
wide.
Wraps self
in a ResizedView
at least min_height
tall.
Wraps self
in a ScrollView
.
Draws the view with the given printer (includes bounds) and focus. Read more
Returns the minimum size the view requires with the given restrictions. Read more
Called when an event is received (key press, mouse event, …). Read more
Called once the size for this view has been decided. Read more
Attempt to give this view the focus. Read more
pub fn call_on_any(
&mut self,
selector: &Selector<'_>,
callback: &'a mut (dyn FnMut(&mut (dyn View + 'static)) + 'a)
)
pub 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
Should return true
if the view content changed since the last call
to layout()
. Read more
Moves the focus to the view identified by the given selector. Read more
What part of the view is important and should be visible? Read more
Calls the given closure and return the result. Read more
Calls the given closure on self
.