Struct StatusLine

Source
pub struct StatusLine<U: Ui> { /* private fields */ }
Expand description

A widget to show information, usually about a File

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 with OnFileOpen, it’s information will point to the File to which it was pushed. However, if you push it with OnWindowOpen, it will always point to the currently active File:

use duat_core::{
    hook::{OnFileOpen, OnWindowOpen},
    prelude::*,
};
use duat_utils::{state::*, widgets::*};

fn setup_generic_over_ui<U: Ui>() {
    hook::remove("FileWidgets");
    hook::add::<OnFileOpen<U>, U>(|pa, builder| {
        builder.push(pa, LineNumbers::cfg());
        builder.push(pa, status!("{file_fmt}").above());
    });

    hook::remove("WindowWidgets");
    hook::add::<OnWindowOpen<U>, U>(|pa, builder| {
        let footer = FooterWidgets::new(status!("{mode_fmt} {sels_fmt} {main_fmt}"));
        builder.push(pa, footer);
    });
}

In the above example, each file would have a status line with the name of the file, and by pushing FooterWidgets, you will push a StatusLine, PromptLine and Notifications combo to each window. This StatusLine will point to the currently active File, instead of a specific one.

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 just:

use duat_core::{hook::OnFileOpen, prelude::*};
use duat_utils::widgets::*;

fn setup_generic_over_ui<U: Ui>() {
    hook::remove("FileWidgets");
    hook::add::<OnFileOpen<U>, U>(|pa, builder| {
        builder.push(pa, LineNumbers::cfg());
        builder.push(pa, StatusLine::cfg().above());
    });
}

Trait Implementations§

Source§

impl<U: Ui> Widget<U> for StatusLine<U>

Source§

type Cfg = StatusLineCfg<U>

The configuration type
Source§

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

Updates the widget, allowing the modification of its RawArea Read more
Source§

fn needs_update(&self) -> bool

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

fn cfg() -> Self::Cfg

Returns a WidgetCfg, for use in layout construction 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 once() -> Result<(), Text>

Actions taken when this widget opens for the first time Read more
Source§

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

Actions to do whenever this Widget is focused
Source§

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

Actions to do whenever this Widget is unfocused
Source§

fn print_cfg(&self) -> PrintCfg

The configuration for how to print Text Read more
Source§

fn print(&mut self, painter: Painter, area: &<U as Ui>::Area)

Prints the widget Read more

Auto Trait Implementations§

§

impl<U> !Freeze for StatusLine<U>

§

impl<U> !RefUnwindSafe for StatusLine<U>

§

impl<U> !Send for StatusLine<U>

§

impl<U> !Sync for StatusLine<U>

§

impl<U> Unpin for StatusLine<U>
where <U as Ui>::Area: Unpin,

§

impl<U> !UnwindSafe for StatusLine<U>

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<W, U> HookAlias<U, WidgetCreatedDummy<U>> for W
where W: Widget<U>, U: Ui,

Source§

type Hookable = WidgetCreated<W, U>

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

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

Just a shorthand for less boilerplate in the function definition
Source§

type Output = <WidgetCreated<W, U> as Hookable>::Output

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.