Trait widgetry::app_state::SimpleState

source ·
pub trait SimpleState<A> {
    // Required method
    fn on_click(
        &mut self,
        ctx: &mut EventCtx<'_>,
        app: &mut A,
        action: &str,
        panel: &mut Panel
    ) -> Transition<A>;

    // Provided methods
    fn on_click_custom(
        &mut self,
        _ctx: &mut EventCtx<'_>,
        _app: &mut A,
        _action: Box<dyn CloneableAny>,
        _panel: &mut Panel
    ) -> Transition<A> { ... }
    fn panel_changed(
        &mut self,
        _: &mut EventCtx<'_>,
        _: &mut A,
        _: &mut Panel
    ) -> Option<Transition<A>> { ... }
    fn on_mouseover(&mut self, _: &mut EventCtx<'_>, _: &mut A) { ... }
    fn other_event(&mut self, _: &mut EventCtx<'_>, _: &mut A) -> Transition<A> { ... }
    fn draw(&self, _: &mut GfxCtx<'_>, _: &A) { ... }
    fn draw_baselayer(&self) -> DrawBaselayer { ... }
}
Expand description

Many states fit a pattern of managing a single panel, handling mouseover events, and other interactions on the map. Implementing this instead of State reduces some boilerplate.

Required Methods§

source

fn on_click( &mut self, ctx: &mut EventCtx<'_>, app: &mut A, action: &str, panel: &mut Panel ) -> Transition<A>

Called when something on the panel has been clicked. Since the action is just a string, the fallback case can just use unreachable!().

Provided Methods§

source

fn on_click_custom( &mut self, _ctx: &mut EventCtx<'_>, _app: &mut A, _action: Box<dyn CloneableAny>, _panel: &mut Panel ) -> Transition<A>

Called when something on the panel has been clicked.

source

fn panel_changed( &mut self, _: &mut EventCtx<'_>, _: &mut A, _: &mut Panel ) -> Option<Transition<A>>

Called when something on the panel has changed. If a transition is returned, stop handling the event and immediately apply the transition.

source

fn on_mouseover(&mut self, _: &mut EventCtx<'_>, _: &mut A)

Called when the mouse has moved.

source

fn other_event(&mut self, _: &mut EventCtx<'_>, _: &mut A) -> Transition<A>

If a panel on_click event didn’t occur and panel_changed didn’t return transition, then call this to handle all other events.

source

fn draw(&self, _: &mut GfxCtx<'_>, _: &A)

source

fn draw_baselayer(&self) -> DrawBaselayer

Implementations§

source§

impl<A: 'static> dyn SimpleState<A>

source

pub fn new_state( panel: Panel, inner: Box<dyn SimpleState<A>> ) -> Box<dyn State<A>>

Implementors§