pub struct OnEventView<T> { /* private fields */ }
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 or on_event_inner)

  • Others are processed first, and can control whether the child view should be given the event (those registered by on_pre_event or on_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.

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);
    });

Registers a callback when the given event is received.

The child will never receive this event.

Chainable variant.

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.

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
            }
        }
    );

Registers a callback when the given event is ignored by the child.

Registers a callback when the given event is received.

The child will never receive this event.

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.

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 access to the inner view.

Gets mutable access to the inner view.

Trait Implementations

Returns the “default value” for a type. Read more

Type that this view wraps.

Runs a function on the inner view, returning the result. Read more

Runs a function on the inner view, returning the result. Read more

Attempts to retrieve the inner view.

Wraps the on_event method.

Wraps the draw method.

Wraps the required_size method.

Wraps the layout method.

Wraps the take_focus method.

Wraps the find method.

Wraps the focus_view method.

Wraps the needs_relayout method.

Wraps the important_area method.

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Downcast self to a Any.

Downcast self to a mutable Any.

Returns a boxed any from a boxed self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Runs a callback on all views identified by sel. Read more

Runs a callback on the view identified by sel. Read more

Convenient method to use call_on with a view::Selector::Name.

Convenient method to find a view wrapped in an NamedView.

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Returns a Box<View>.

Wraps this view into an NamedView with the given id. Read more

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.

Should always be Self

Wraps self in a ScrollView.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

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

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

Returns the type of this view. Read more

Calls the given closure and return the result. Read more

Calls the given closure on self.

Calls the given closure on self.

Calls the given closure if condition == true.