Struct cursive::views::OnEventView [−][src]
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
impl<T> OnEventView<T>
[src]
pub fn new(view: T) -> OnEventView<T>
[src]
Wraps the given view in a new OnEventView.
pub fn clear_event<E>(&mut self, event: E) where
E: Into<Event>,
[src]
E: Into<Event>,
Remove all callbacks associated with the given event.
pub fn on_event<F, E>(self, trigger: E, cb: F) -> OnEventView<T> where
F: 'static + Fn(&mut Cursive),
E: Into<EventTrigger>,
[src]
F: 'static + Fn(&mut Cursive),
E: Into<EventTrigger>,
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
F: 'static + Fn(&mut Cursive),
E: Into<EventTrigger>,
[src]
F: 'static + Fn(&mut Cursive),
E: Into<EventTrigger>,
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
F: Fn(&mut T, &Event) -> Option<EventResult> + 'static,
E: Into<EventTrigger>,
[src]
F: Fn(&mut T, &Event) -> Option<EventResult> + 'static,
E: Into<EventTrigger>,
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
F: Fn(&mut T, &Event) -> Option<EventResult> + 'static,
E: Into<EventTrigger>,
[src]
F: Fn(&mut T, &Event) -> Option<EventResult> + 'static,
E: Into<EventTrigger>,
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
F: Fn(&mut Cursive) + 'static,
E: Into<EventTrigger>,
[src]
F: Fn(&mut Cursive) + 'static,
E: Into<EventTrigger>,
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
F: 'static + Fn(&mut Cursive),
E: Into<EventTrigger>,
[src]
F: 'static + Fn(&mut Cursive),
E: Into<EventTrigger>,
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
F: Fn(&mut T, &Event) -> Option<EventResult> + 'static,
E: Into<EventTrigger>,
[src]
F: Fn(&mut T, &Event) -> Option<EventResult> + 'static,
E: Into<EventTrigger>,
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
F: Fn(&mut T, &Event) -> Option<EventResult> + 'static,
E: Into<EventTrigger>,
[src]
F: Fn(&mut T, &Event) -> Option<EventResult> + 'static,
E: Into<EventTrigger>,
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.
pub fn clear_callbacks(&mut self)
[src]
Remove any callbacks defined for this view.
pub fn get_inner(&self) -> &T
[src]
Gets access to the inner view.
pub fn get_inner_mut(&mut self) -> &mut T
[src]
Gets mutable access to the inner view.
Trait Implementations
impl<T> Default for OnEventView<T> where
T: Default,
[src]
T: Default,
pub fn default() -> OnEventView<T>
[src]
impl<T> ViewWrapper for OnEventView<T> where
T: View,
[src]
T: View,
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,
[src]
F: FnOnce(&<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,
[src]
F: FnOnce(&mut <OnEventView<T> as ViewWrapper>::V) -> R,
pub fn into_inner(
self
) -> Result<<OnEventView<T> as ViewWrapper>::V, OnEventView<T>> where
<OnEventView<T> as ViewWrapper>::V: Sized,
[src]
self
) -> Result<<OnEventView<T> as ViewWrapper>::V, OnEventView<T>> where
<OnEventView<T> as ViewWrapper>::V: Sized,
pub fn wrap_on_event(&mut self, event: Event) -> EventResult
[src]
pub fn wrap_draw(&self, printer: &Printer<'_, '_>)
[src]
pub fn wrap_required_size(&mut self, req: XY<usize>) -> XY<usize>
[src]
pub fn wrap_layout(&mut self, size: XY<usize>)
[src]
pub fn wrap_take_focus(&mut self, source: Direction) -> bool
[src]
pub fn wrap_call_on_any(
&mut self,
selector: &Selector<'_>,
callback: &'a mut (dyn FnMut(&mut (dyn View + 'static)) + 'a)
)
[src]
&mut self,
selector: &Selector<'_>,
callback: &'a mut (dyn FnMut(&mut (dyn View + 'static)) + 'a)
)
pub fn wrap_focus_view(&mut self, selector: &Selector<'_>) -> Result<(), ()>
[src]
pub fn wrap_needs_relayout(&self) -> bool
[src]
pub fn wrap_important_area(&self, size: XY<usize>) -> Rect
[src]
Auto Trait Implementations
impl<T> !RefUnwindSafe for OnEventView<T>
[src]
impl<T> !Send for OnEventView<T>
[src]
impl<T> !Sync for OnEventView<T>
[src]
impl<T> Unpin for OnEventView<T> where
T: Unpin,
[src]
T: Unpin,
impl<T> !UnwindSafe for OnEventView<T>
[src]
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> AnyView for T where
T: View,
[src]
T: View,
pub fn as_any(&self) -> &(dyn Any + 'static)
[src]
Downcast self to a Any
.
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
[src]
Downcast self to a mutable Any
.
pub fn as_boxed_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Erased for T
impl<T> Finder for T where
T: View,
[src]
T: View,
pub fn call_on<V, F, R>(&mut self, sel: &Selector<'_>, callback: F) -> Option<R> where
F: FnOnce(&mut V) -> R,
V: View,
[src]
F: FnOnce(&mut V) -> R,
V: View,
pub fn call_on_name<V, F, R>(&mut self, name: &str, callback: F) -> Option<R> where
F: FnOnce(&mut V) -> R,
V: View,
[src]
F: FnOnce(&mut V) -> R,
V: View,
pub fn call_on_id<V, F, R>(&mut self, id: &str, callback: F) -> Option<R> where
F: FnOnce(&mut V) -> R,
V: View,
[src]
F: FnOnce(&mut V) -> R,
V: View,
pub fn find_name<V>(
&mut self,
name: &str
) -> Option<OwningHandle<OwningRef<Rc<RefCell<V>>, RefCell<V>>, RefMut<'static, V>>> where
V: View,
[src]
&mut self,
name: &str
) -> Option<OwningHandle<OwningRef<Rc<RefCell<V>>, RefCell<V>>, RefMut<'static, V>>> where
V: View,
pub fn find_id<V>(
&mut self,
id: &str
) -> Option<OwningHandle<OwningRef<Rc<RefCell<V>>, RefCell<V>>, RefMut<'static, V>>> where
V: View,
[src]
&mut self,
id: &str
) -> Option<OwningHandle<OwningRef<Rc<RefCell<V>>, RefCell<V>>, RefMut<'static, V>>> where
V: View,
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> IntoBoxedView for T where
T: View,
[src]
T: View,
pub fn as_boxed_view(self) -> Box<dyn View + 'static, Global>
[src]
impl<T> Nameable for T where
T: View,
[src]
T: View,
pub fn with_name<S>(self, name: S) -> NamedView<Self> where
S: Into<String>,
[src]
S: Into<String>,
pub fn with_id<S>(self, id: S) -> NamedView<Self> where
S: Into<String>,
[src]
S: Into<String>,
impl<T> Resizable for T where
T: View,
[src]
T: View,
pub fn boxed(
self,
width: SizeConstraint,
height: SizeConstraint
) -> ResizedView<Self>
[src]
self,
width: SizeConstraint,
height: SizeConstraint
) -> ResizedView<Self>
pub fn resized(
self,
width: SizeConstraint,
height: SizeConstraint
) -> ResizedView<Self>
[src]
self,
width: SizeConstraint,
height: SizeConstraint
) -> ResizedView<Self>
pub fn fixed_size<S>(self, size: S) -> ResizedView<Self> where
S: Into<XY<usize>>,
[src]
S: Into<XY<usize>>,
pub fn fixed_width(self, width: usize) -> ResizedView<Self>
[src]
pub fn fixed_height(self, height: usize) -> ResizedView<Self>
[src]
pub fn full_screen(self) -> ResizedView<Self>
[src]
pub fn full_width(self) -> ResizedView<Self>
[src]
pub fn full_height(self) -> ResizedView<Self>
[src]
pub fn max_size<S>(self, size: S) -> ResizedView<Self> where
S: Into<XY<usize>>,
[src]
S: Into<XY<usize>>,
pub fn max_width(self, max_width: usize) -> ResizedView<Self>
[src]
pub fn max_height(self, max_height: usize) -> ResizedView<Self>
[src]
pub fn min_size<S>(self, size: S) -> ResizedView<Self> where
S: Into<XY<usize>>,
[src]
S: Into<XY<usize>>,
pub fn min_width(self, min_width: usize) -> ResizedView<Self>
[src]
pub fn min_height(self, min_height: usize) -> ResizedView<Self>
[src]
impl<T> Scrollable for T where
T: View,
[src]
T: View,
pub fn scrollable(self) -> ScrollView<Self>
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> View for T where
T: ViewWrapper,
[src]
T: ViewWrapper,
pub fn draw(&self, printer: &Printer<'_, '_>)
[src]
pub fn required_size(&mut self, req: XY<usize>) -> XY<usize>
[src]
pub fn on_event(&mut self, ch: Event) -> EventResult
[src]
pub fn layout(&mut self, size: XY<usize>)
[src]
pub fn take_focus(&mut self, source: Direction) -> bool
[src]
pub fn call_on_any(
&mut self,
selector: &Selector<'_>,
callback: &'a mut (dyn FnMut(&mut (dyn View + 'static)) + 'a)
)
[src]
&mut self,
selector: &Selector<'_>,
callback: &'a mut (dyn FnMut(&mut (dyn View + 'static)) + 'a)
)