StatusLine

Struct StatusLine 

Source
pub struct StatusLine { /* private fields */ }
Expand description

A widget to show information, usually about a Buffer

This widget is updated whenever any of its parts needs to be updated, and it also automatically adjusts to where it was pushed. For example, if you push it to a buffer (via hook::add::<Buffer>, for example), it’s information will point to the Buffer to which it was pushed. However, if you push it with WindowCreated, it will always point to the currently active Buffer:

setup_duat!(setup);
use duat::prelude::*;

fn setup() {
    opts::one_line_footer();
    opts::set_status(|pa| status!("{AlignRight}{} {sels_txt} {main_txt}", mode_txt()));

    hook::add::<Buffer>(|pa, handle| {
        status!("{AlignCenter}{name_txt}")
            .above()
            .push_on(pa, handle);
        Ok(())
    });
}

In the code above, I’m modifying the “global” StatusLine through opts::set_status (this can be done with hooks as well, but this method is added for convenience’s sake). This is in conjunction with opts::one_line_footer, which will place the PromptLine and StatusLine on the same line.

After that, I’m also pushing a new StatusLine above every opened Buffer, showing that Buffer]’s name, centered.

You will usually want to create StatusLines via the [status!] macro, since that is how you can customize it. Although, if you want the regular status line, you can call StatusLine::builder:

setup_duat!(setup);
use duat::prelude::*;

fn setup() {
    hook::add::<Buffer>(|pa, handle| {
        StatusLine::builder().above().push_on(pa, handle);
        Ok(())
    });
}

Implementations§

Source§

impl StatusLine

Source

pub fn fmt(&mut self, new: StatusLineFmt)

Replaces this StatusLine with a new one

Source

pub fn builder() -> StatusLineFmt

Returns a StatusLineFmt, which can be used to push around StatusLines

The same can be done more conveniently with the [status!] macro, which is imported by default in the configuration crate.

Trait Implementations§

Source§

impl Widget for StatusLine

Source§

fn update(pa: &mut Pass, handle: &Handle<Self>)

Updates the widget alongside its RwArea in the Handle Read more
Source§

fn needs_update(&self, pa: &Pass) -> bool

Tells Duat that this Widget should be updated Read more
Source§

fn text(&self) -> &Text

The text that this widget prints out
Source§

fn text_mut(&mut self) -> &mut Text

A mutable reference to the Text that is printed
Source§

fn on_focus(pa: &mut Pass, handle: &Handle<Self>)
where Self: Sized,

Actions to do whenever this Widget is focused Read more
Source§

fn on_unfocus(pa: &mut Pass, handle: &Handle<Self>)
where Self: Sized,

Actions to do whenever this Widget is unfocused Read more
Source§

fn on_mouse_event(pa: &mut Pass, handle: &Handle<Self>, event: MouseEvent)
where Self: Sized,

How to handle a MouseEvent Read more
Source§

fn get_print_opts(&self) -> PrintOpts

The configuration for how to print Text Read more
Source§

fn print(&self, pa: &Pass, painter: Painter, area: &RwArea)

Prints the widget Read more

Auto Trait Implementations§

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> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<W> HookAlias<WidgetCreatedDummy> for W
where W: Widget,

Source§

type Hookable = WidgetCreated<W>

The actual Hookable that this HookAlias is supposed to map to
Source§

type Input<'h> = <WidgetCreated<W> as Hookable>::Input<'h>

Just a shorthand for less boilerplate in the function definition
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, U> TryFrom<U> for T
where U: Into<T>,

Source§

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>,

Source§

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.