WindowCreated

Struct WindowCreated 

Source
pub struct WindowCreated(/* private fields */);
Expand description

Hookable: Triggers when a new window is opened

§Arguments

One of the main reasons to use this hook is to push new Widgets to a Window. That is, you can push outer Widgets or inner Widgets, just like with Handles.

Here’s how that works: Windows are divided into two main regions, the inner “Buffer region”, and the outer “master region”. This means that, on every Window, you’ll have a collection of Buffers in the middle, with their satellite Widgets, and various Widgets on the outer rims of the Window, not necessarily associated with any single Buffer.

As an example, this is how the default layout of Duat is layed out:

╭┄┄┬┄┄┄┄┄┄┄┄┬┄┄┬┄┄┄┄┄┄┄┄┬───────╮
┊  │        │  │        ┊       │
┊LN│        │LN│        ┊       │
┊  │ Buffer │  │ Buffer ┊       │
┊VR│        │VR│        ┊LogBook│
┊  │        │  │        ┊       │
├┄┄┴┄┄┄┄┄┄┄┄┴┄┄┴┄┄┄┄┄┄┄┄┤       │
│     FooterWidgets     │       │
╰───────────────────────┴───────╯

In this configuration, you can see the delineation between the “Buffer region” (surrounded by dotted lines) and the “master region”, where:

  • For each Buffer, we are adding a LineNumbers (LN) and a VertRule (VR) Widgets. Each of these is related to a specific Buffer, and if that Buffer moves around, they will follow.

  • On the outer edges, we have a FooterWidgets, which includes a StatusLine, PromptLine and Notifications, as well as a LogBook on the side, which is hidden by default. These Widgets are not related to any Buffer, and will not move around or be removed, unless directly.

So the distinction here is that, if you call Window::push_inner, you will be pushing Widgets around the “Buffer region”, but not within it. If you want to push to specific Buffers, you should look at Handle::push_inner_widget and Handle::push_outer_widget.

On the other hand, by calling Window::push_outer, you will be pushing Widgets around the “master region”, so they will go on the edges of the screen.

Trait Implementations§

Source§

impl Hookable for WindowCreated

Source§

type Input<'h> = &'h mut Window

The arguments that are passed to each hook.
Source§

fn get_input(&mut self) -> Self::Input<'_>

How to get the arguments from the Hookable

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> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

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

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<H> HookAlias for H
where H: Hookable,

Source§

type Hookable = H

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

type Input<'h> = <H 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.