Trait rat_widget::event::HandleEvent

source ·
pub trait HandleEvent<Event, Qualifier, R>
where R: ConsumedEvent,
{ // Required method fn handle(&mut self, event: &Event, qualifier: Qualifier) -> R; }
Expand description

A very broad trait for an event handler.

Ratatui widgets have two separate structs, one that implements Widget/StatefulWidget and the associated State. As the StatefulWidget has a lifetime and is not meant to be kept, HandleEvent should be implemented for the state struct. It can then modify some state and the tui can be rendered anew with that changed state.

HandleEvent is not limited to State structs of course, any Type that wants to interact with events can implement it.

  • Event - The actual event type.

  • Qualifier - The qualifier allows creating more than one event-handler for a widget.

    This can be used as a variant of type-state, where the type given selects the widget’s behaviour, or to give some external context to the widget, or to write your own key-bindings for a widget.

  • R - Result of event-handling. This can give information to the application what changed due to handling the event. This can be very specific for each widget, but there is one general Outcome that describes a minimal set of results.

    There should be one value that indicates ‘I don’t know this event’. This is expressed with the ConsumedEvent trait.

Required Methods§

source

fn handle(&mut self, event: &Event, qualifier: Qualifier) -> R

Handle an event.

  • self - The widget state.

  • event - Event struct.

  • qualifier - Event handling qualifier. This library defines some standard values Regular, MouseOnly, Popup and Dialog.

    Further ideas:

    • ReadOnly
    • Special behaviour like DoubleClick, HotKey.
  • Returns some result, see Outcome

Implementations on Foreign Types§

source§

impl HandleEvent<Event, Regular, CalOutcome> for &mut [MonthState]

source§

fn handle(&mut self, event: &Event, _qualifier: Regular) -> CalOutcome

source§

impl<E, Q> HandleEvent<E, Q, Outcome> for ()

Catch all event-handler for the null state ().

source§

fn handle(&mut self, _event: &E, _qualifier: Q) -> Outcome

Implementors§

source§

impl HandleEvent<Event, Dialog, Outcome> for MsgDialogState

source§

impl HandleEvent<Event, Dialog, Result<FileOutcome, Error>> for FileDialogState

source§

impl HandleEvent<Event, MouseOnly, ButtonOutcome> for ButtonState

source§

impl HandleEvent<Event, MouseOnly, MenuOutcome> for MenuBarState

source§

impl HandleEvent<Event, MouseOnly, MenuOutcome> for MenuLineState

source§

impl HandleEvent<Event, MouseOnly, MenuOutcome> for PopupMenuState

source§

impl HandleEvent<Event, MouseOnly, CalOutcome> for MonthState

source§

impl HandleEvent<Event, MouseOnly, Outcome> for Focus

source§

impl HandleEvent<Event, MouseOnly, Outcome> for ListState<NoSelection>

source§

impl HandleEvent<Event, MouseOnly, Outcome> for ListState<RowSelection>

source§

impl HandleEvent<Event, MouseOnly, Outcome> for ListState<RowSetSelection>

source§

impl HandleEvent<Event, MouseOnly, Outcome> for ParagraphState

source§

impl HandleEvent<Event, MouseOnly, Outcome> for SplitState

source§

impl HandleEvent<Event, MouseOnly, Outcome> for TableState<CellSelection>

source§

impl HandleEvent<Event, MouseOnly, Outcome> for TableState<NoSelection>

source§

impl HandleEvent<Event, MouseOnly, Outcome> for TableState<RowSelection>

source§

impl HandleEvent<Event, MouseOnly, Outcome> for TableState<RowSetSelection>

source§

impl HandleEvent<Event, MouseOnly, Outcome> for ViewState

source§

impl HandleEvent<Event, MouseOnly, ScrollOutcome> for ScrollState

source§

impl HandleEvent<Event, MouseOnly, TabbedOutcome> for TabbedState

source§

impl HandleEvent<Event, MouseOnly, TextOutcome> for DateInputState

source§

impl HandleEvent<Event, MouseOnly, TextOutcome> for NumberInputState

source§

impl HandleEvent<Event, MouseOnly, TextOutcome> for TextInputState

source§

impl HandleEvent<Event, MouseOnly, TextOutcome> for MaskedInputState

source§

impl HandleEvent<Event, MouseOnly, TextOutcome> for TextAreaState

source§

impl HandleEvent<Event, Popup, MenuOutcome> for MenuBarState

source§

impl HandleEvent<Event, Popup, MenuOutcome> for PopupMenuState

source§

impl HandleEvent<Event, ReadOnly, TextOutcome> for DateInputState

source§

impl HandleEvent<Event, ReadOnly, TextOutcome> for NumberInputState

source§

impl HandleEvent<Event, ReadOnly, TextOutcome> for TextInputState

source§

impl HandleEvent<Event, ReadOnly, TextOutcome> for MaskedInputState

source§

impl HandleEvent<Event, ReadOnly, TextOutcome> for TextAreaState

source§

impl HandleEvent<Event, Regular, ButtonOutcome> for ButtonState

source§

impl HandleEvent<Event, Regular, MenuOutcome> for MenuBarState

source§

impl HandleEvent<Event, Regular, MenuOutcome> for MenuLineState

source§

impl HandleEvent<Event, Regular, CalOutcome> for MonthState

source§

impl HandleEvent<Event, Regular, Outcome> for Focus

source§

impl HandleEvent<Event, Regular, Outcome> for ListState<NoSelection>

source§

impl HandleEvent<Event, Regular, Outcome> for ListState<RowSelection>

source§

impl HandleEvent<Event, Regular, Outcome> for ListState<RowSetSelection>

source§

impl HandleEvent<Event, Regular, Outcome> for ParagraphState

source§

impl HandleEvent<Event, Regular, Outcome> for SplitState

source§

impl HandleEvent<Event, Regular, Outcome> for TableState<CellSelection>

source§

impl HandleEvent<Event, Regular, Outcome> for TableState<NoSelection>

source§

impl HandleEvent<Event, Regular, Outcome> for TableState<RowSelection>

source§

impl HandleEvent<Event, Regular, Outcome> for TableState<RowSetSelection>

source§

impl HandleEvent<Event, Regular, TabbedOutcome> for TabbedState

Handle the regular events for Tabbed.

source§

impl HandleEvent<Event, Regular, TextOutcome> for DateInputState

source§

impl HandleEvent<Event, Regular, TextOutcome> for NumberInputState

source§

impl HandleEvent<Event, Regular, TextOutcome> for TextInputState

source§

impl HandleEvent<Event, Regular, TextOutcome> for MaskedInputState

source§

impl HandleEvent<Event, Regular, TextOutcome> for TextAreaState

source§

impl<'a> HandleEvent<Event, MouseOnly, ScrollOutcome> for ScrollAreaState<'a>

Handle scrolling for the whole area spanned by the two scroll-states.

source§

impl<EState, EQualifier> HandleEvent<Event, EQualifier, EditOutcome> for EditTableState<EState>
where EState: HandleEvent<Event, EQualifier, EditOutcome>,

source§

impl<EditorState, EQualifier> HandleEvent<Event, EQualifier, EditOutcome> for EditListState<EditorState>

source§

impl<R, Q, S> HandleEvent<Event, Q, R> for ViewportState<S>
where S: HandleEvent<Event, Q, R>, R: From<Outcome> + ConsumedEvent + Debug,

source§

impl<Selection> HandleEvent<Event, DoubleClick, DoubleClickOutcome> for TableState<Selection>

source§

impl<Selection> HandleEvent<Event, EditKeys, EditOutcome> for TableState<Selection>
where Selection: TableSelection, TableState<Selection>: HandleEvent<Event, Regular, Outcome>,