Struct rat_focus::Focus

source ·
pub struct Focus<'a> {
    pub core: FocusCore<'a>,
    /* private fields */
}

Fields§

§core: FocusCore<'a>

Implementations§

source§

impl<'a> Focus<'a>

source

pub fn new(list: &[&'a dyn HasFocusFlag]) -> Self

Construct a new focus list.

source

pub fn new_container( c: &'a dyn HasFocusFlag, list: &[&'a dyn HasFocusFlag], ) -> Self

Construct a new focus list for a container widget.

The focus-flag for the container accumulates all the flags. If any has focus, the container has the focus too. Focus-gained and focus-lost are only set if the focus leaves the container.

The container widget itself interacts with the mouse too. If no single widget is hit with the mouse, but the area of the container is, the first widget gets the focus.

See examples/focus_recursive and examples/focus_recursive2

source

pub fn new_grp(grp: &'a FocusFlag, list: &[&'a dyn HasFocusFlag]) -> Self

Construct a new focus list with group accumulator.

This is meant for some loose grouping of widgets, for which you want an overview.

The same rules apply as for new_accu(), but with this one there is no overall area for mouse interaction.

source

pub fn add_flag(&mut self, flag: &'a FocusFlag, area: Rect) -> &mut Self

Add a single widget. This doesn’t add any z_areas and assumes navigable is true.

source

pub fn add_focus(&mut self, focus: Focus<'a>) -> &mut Self

Add a sub-focus cycle.

All its widgets are appended to this list. If the sub-cycle has an accumulator it’s added to the sub-accumulators. All sub-sub-accumulators are appended too.

source

pub fn add_container(&mut self, c: &'a dyn HasFocus) -> &mut Self

Add a container widget.

source

pub fn add(&mut self, f: &'a dyn HasFocusFlag) -> &mut Self

Add a single widget.

source

pub fn add_all(&mut self, list: &[&'a dyn HasFocusFlag]) -> &mut Self

Add a list of widgets.

source

pub fn enable_log(&self, log: bool)

Writes a log for each operation.

source

pub fn set_name(&mut self, name: impl Into<String>)

Set a name for debugging.

source

pub fn name(&self) -> &str

Name for debugging.

source

pub fn init(&self)

Set the initial state for all widgets.

This ensures that there is only one focused widget. The first widget in the list gets the focus.

source

pub fn focus_widget_no_lost(&self, widget_state: &'a dyn HasFocusFlag)

Sets the focus to the widget.

Sets the focus, but doesn’t set lost or gained. This can be used to prevent validation of the field.

source

pub fn focus_widget(&self, widget_state: &'a dyn HasFocusFlag)

Sets the focus to the given widget.

Sets the focus, gained and lost flags.

If this ends up with the same widget as before gained and lost flags are not set.

source

pub fn focus_no_lost(&self, flag: &FocusFlag)

Sets the focus to the widget.

Sets focus and gained but not lost. This can be used to prevent validation of the field.

source

pub fn focus(&self, flag: &FocusFlag)

Sets the focus to the widget with tag.

Sets the focus, gained and lost flags.

If this ends up with the same widget as before gained and lost flags are not set.

source

pub fn focused(&self) -> Option<&'a FocusFlag>

Returns the focused widget as FocusFlag.

This is mainly for debugging purposes. For control-flow crate::match_focus or crate::on_gained or crate::on_lost will be nicer.

source

pub fn lost_focus(&self) -> Option<&'a FocusFlag>

Returns the widget that lost the focus as FocusFlag.

This is mainly for debugging purposes. For control-flow crate::match_focus or crate::on_gained or crate::on_lost will be nicer.

source

pub fn gained_focus(&self) -> Option<&'a FocusFlag>

Returns the widget that gained the focus as FocusFlag.

This is mainly for debugging purposes. For control-flow crate::match_focus or crate::on_gained or crate::on_lost will be nicer.

source

pub fn reset_lost_gained(&self)

Reset lost + gained flags. This is done automatically in HandleEvent::handle() for every event.

source

pub fn focus_idx(&self, idx: usize)

Change the focus.

Sets the focus, gained and lost flags. If this ends up with the same widget as before gained and lost flags are not set.

source

pub fn focus_at(&self, col: u16, row: u16) -> bool

Change to focus to the given position.

source

pub fn next(&self) -> bool

Focus the next widget in the cycle.

Sets the focus, gained and lost flags. If this ends up with the same widget as before focus, gained and lost flag are all set.

If no field has the focus the first one gets it.

source

pub fn prev(&self) -> bool

Focus the previous widget in the cycle.

Sets the focus and lost flags. If this ends up with the same widget as before it returns true and sets the focus, gained and lost flag.

If no field has the focus the first one gets it.

Trait Implementations§

source§

impl<'a> Debug for Focus<'a>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'a> Default for Focus<'a>

source§

fn default() -> Focus<'a>

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

impl<'a> HandleEvent<Event, FocusKeys, Outcome> for Focus<'a>

source§

fn handle(&mut self, event: &Event, _keymap: FocusKeys) -> Outcome

Handle an event. Read more
source§

impl<'a> HandleEvent<Event, MouseOnly, Outcome> for Focus<'a>

source§

fn handle(&mut self, event: &Event, _keymap: MouseOnly) -> Outcome

Handle an event. Read more

Auto Trait Implementations§

§

impl<'a> !Freeze for Focus<'a>

§

impl<'a> !RefUnwindSafe for Focus<'a>

§

impl<'a> !Send for Focus<'a>

§

impl<'a> !Sync for Focus<'a>

§

impl<'a> Unpin for Focus<'a>

§

impl<'a> !UnwindSafe for Focus<'a>

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

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

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.